Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ConfigurationException when countSharding is set #780

Open
sergeshustoff opened this issue Mar 25, 2023 · 4 comments
Open

ConfigurationException when countSharding is set #780

sergeshustoff opened this issue Mar 25, 2023 · 4 comments
Labels
bug Something isn't working

Comments

@sergeshustoff
Copy link

Describe the bug
Test run job fails with ConfigurationException when countSharding is set

To Reproduce
Steps to reproduce the behaviour:

  1. Marathon version 0.8.1
  2. Set marathon config for android app from gradle plugin. Only set sharding:
	shardingStrategy {
		countSharding {
			count = 2
		}
	}
  1. Try running marathon job

Expected behavior
Job runs, no error, tests run 2 times

Devices (please complete the following information):

  • Device: android emulator (pixel 2, api 31)
  • OS: iOS12.6.1

Logs and reports

I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> System Information:
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.specification.version: 18
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.vendor: Homebrew
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vendor.url: https://github.com/Homebrew/homebrew-core/issues
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.specification.version: 18
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> os.name: Mac OS X
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.specification.vendor: Oracle Corporation
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.version.date: 2022-04-22
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.home: /opt/homebrew/Cellar/openjdk/18.0.1.1/libexec/openjdk.jdk/Contents/Home
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.compressedOopsMode: Zero based
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.specification.vendor: Oracle Corporation
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.specification.name: Java Platform API Specification
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.runtime.version: 18.0.1.1+0
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> os.version: 12.6.1
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.runtime.name: OpenJDK Runtime Environment
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.name: OpenJDK 64-Bit Server VM
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vendor.version: Homebrew
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vendor.url.bug: https://github.com/Homebrew/homebrew-core/issues
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.io.tmpdir: /var/folders/zh/8_0_c55d1bb9wbg6vz585qmw0000gp/T/
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.version: 18.0.1.1
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> os.arch: aarch64
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.specification.name: Java Virtual Machine Specification
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.library.path: /Users/sergey.shustov/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.info: mixed mode, sharing
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vendor: Homebrew
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.version: 18.0.1.1+0
I 09:25:26.681 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.class.version: 62.0
E 09:25:26.686 [main @coroutine#1] <com.malinskiy.marathon.Marathon> kotlin.Unit
com.malinskiy.marathon.config.exceptions.ConfigurationException: Configuration is invalid: can't use complex sharding and any success execution strategy at the same time. Consult documentation for the any success execution logic
	at com.malinskiy.marathon.config.LogicalConfigurationValidator.validate(LogicalConfigurationValidator.kt:37)
	at com.malinskiy.marathon.Marathon.runAsync(Marathon.kt:102)
	at com.malinskiy.marathon.Marathon$run$1$1.invokeSuspend(Marathon.kt:69)
	(Coroutine boundary)
	at com.malinskiy.marathon.Marathon$run$1.invokeSuspend(Marathon.kt:83)
Caused by: com.malinskiy.marathon.config.exceptions.ConfigurationException: Configuration is invalid: can't use complex sharding and any success execution strategy at the same time. Consult documentation for the any success execution logic
	at com.malinskiy.marathon.config.LogicalConfigurationValidator.validate(LogicalConfigurationValidator.kt:37)
	at com.malinskiy.marathon.Marathon.runAsync(Marathon.kt:102)
	at com.malinskiy.marathon.Marathon$run$1$1.invokeSuspend(Marathon.kt:69)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
	at com.malinskiy.marathon.Marathon.run(Marathon.kt:65)
	at com.malinskiy.marathon.cli.ApplicationViewKt.execute(ApplicationView.kt:80)
	at com.malinskiy.marathon.cli.ApplicationViewKt.access$execute(ApplicationView.kt:1)
	at com.malinskiy.marathon.cli.ApplicationViewKt$main$1.invoke(ApplicationView.kt:34)
	at com.malinskiy.marathon.cli.ApplicationViewKt$main$1.invoke(ApplicationView.kt:34)
Caused by: com.malinskiy.marathon.config.exceptions.ConfigurationException: Configuration is invalid: can't use complex sharding and any success execution strategy at the same time. Consult documentation for the any success execution logic

	at com.malinskiy.marathon.cli.args.MarathonCli.run(CliCommands.kt:42)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:198)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:18)
	at com.github.ajalt.clikt.core.CliktCommand.parse(CliktCommand.kt:400)
	at com.github.ajalt.clikt.core.CliktCommand.parse$default(CliktCommand.kt:397)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:415)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:440)
	at com.malinskiy.marathon.cli.ApplicationViewKt.main(ApplicationView.kt:36)
Exception in thread "main @coroutine#2" kotlinx.coroutines.CompletionHandlerException: Exception in completion handler InvokeOnCompletion@e26af6[job@44065156] for "coroutine#2":DeferredCoroutine{Cancelled}@44065156
	at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1525)
	at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:323)
	at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:240)
	at kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath(JobSupport.kt:906)
	at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:863)
	at kotlinx.coroutines.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:828)
	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:100)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
	at com.malinskiy.marathon.Marathon.run(Marathon.kt:65)
	at com.malinskiy.marathon.cli.ApplicationViewKt.execute(ApplicationView.kt:80)
	at com.malinskiy.marathon.cli.ApplicationViewKt.access$execute(ApplicationView.kt:1)
	at com.malinskiy.marathon.cli.ApplicationViewKt$main$1.invoke(ApplicationView.kt:34)
	at com.malinskiy.marathon.cli.ApplicationViewKt$main$1.invoke(ApplicationView.kt:34)
	at com.malinskiy.marathon.cli.args.MarathonCli.run(CliCommands.kt:42)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:198)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:18)
	at com.github.ajalt.clikt.core.CliktCommand.parse(CliktCommand.kt:400)
	at com.github.ajalt.clikt.core.CliktCommand.parse$default(CliktCommand.kt:397)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:415)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:440)
	at com.malinskiy.marathon.cli.ApplicationViewKt.main(ApplicationView.kt:36)
	Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [CoroutineId(2), "coroutine#2":DeferredCoroutine{Cancelled}@44065156, BlockingEventLoop@48976e6d]
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property deviceEventsChannel has not been initialized
	at com.malinskiy.marathon.android.adam.AdamDeviceProvider.terminate(AdamDeviceProvider.kt:201)
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property deviceEventsChannel has not been initialized

	at com.malinskiy.marathon.Marathon.onFinish(Marathon.kt:190)
	at com.malinskiy.marathon.Marathon.access$onFinish(Marathon.kt:45)
	at com.malinskiy.marathon.Marathon$run$1$2$1$1$1.invokeSuspend(Marathon.kt:78)
	at com.malinskiy.marathon.Marathon$run$1$2$1$1$1.invoke(Marathon.kt)
	at com.malinskiy.marathon.Marathon$run$1$2$1$1$1.invoke(Marathon.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:169)
	at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
	at com.malinskiy.marathon.Marathon$run$1$2$1$1.invokeSuspend(Marathon.kt:77)
	(Coroutine boundary)
	at com.malinskiy.marathon.Marathon$run$1$2$1$1.invokeSuspend(Marathon.kt:77)
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property deviceEventsChannel has not been initialized
	at com.malinskiy.marathon.android.adam.AdamDeviceProvider.terminate(AdamDeviceProvider.kt:201)
	at com.malinskiy.marathon.Marathon.onFinish(Marathon.kt:190)
	at com.malinskiy.marathon.Marathon.access$onFinish(Marathon.kt:45)
	at com.malinskiy.marathon.Marathon$run$1$2$1$1$1.invokeSuspend(Marathon.kt:78)
	at com.malinskiy.marathon.Marathon$run$1$2$1$1$1.invoke(Marathon.kt)
	at com.malinskiy.marathon.Marathon$run$1$2$1$1$1.invoke(Marathon.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:169)
	at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
	at com.malinskiy.marathon.Marathon$run$1$2$1$1.invokeSuspend(Marathon.kt:77)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
	at com.malinskiy.marathon.Marathon$run$1$2$1.invoke(Marathon.kt:76)
	at com.malinskiy.marathon.Marathon$run$1$2$1.invoke(Marathon.kt:73)
	at kotlinx.coroutines.InvokeOnCompletion.invoke(JobSupport.kt:1392)
	at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1520)
	at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:323)
	at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:240)
	at kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath(JobSupport.kt:906)
	at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:863)
	at kotlinx.coroutines.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:828)
	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:100)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
	at com.malinskiy.marathon.Marathon.run(Marathon.kt:65)
	at com.malinskiy.marathon.cli.ApplicationViewKt.execute(ApplicationView.kt:80)
	at com.malinskiy.marathon.cli.ApplicationViewKt.access$execute(ApplicationView.kt:1)
	at com.malinskiy.marathon.cli.ApplicationViewKt$main$1.invoke(ApplicationView.kt:34)
	at com.malinskiy.marathon.cli.ApplicationViewKt$main$1.invoke(ApplicationView.kt:34)
	at com.malinskiy.marathon.cli.args.MarathonCli.run(CliCommands.kt:42)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:198)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:18)
	at com.github.ajalt.clikt.core.CliktCommand.parse(CliktCommand.kt:400)
	at com.github.ajalt.clikt.core.CliktCommand.parse$default(CliktCommand.kt:397)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:415)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:440)
	at com.malinskiy.marathon.cli.ApplicationViewKt.main(ApplicationView.kt:36)
Exception in thread "main" com.malinskiy.marathon.config.exceptions.ConfigurationException: Configuration is invalid: can't use complex sharding and any success execution strategy at the same time. Consult documentation for the any success execution logic
	at com.malinskiy.marathon.config.LogicalConfigurationValidator.validate(LogicalConfigurationValidator.kt:37)
	at com.malinskiy.marathon.Marathon.runAsync(Marathon.kt:102)
	at com.malinskiy.marathon.Marathon$run$1$1.invokeSuspend(Marathon.kt:69)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
	at com.malinskiy.marathon.Marathon.run(Marathon.kt:65)
	at com.malinskiy.marathon.cli.ApplicationViewKt.execute(ApplicationView.kt:80)
	at com.malinskiy.marathon.cli.ApplicationViewKt.access$execute(ApplicationView.kt:1)
	at com.malinskiy.marathon.cli.ApplicationViewKt$main$1.invoke(ApplicationView.kt:34)
	at com.malinskiy.marathon.cli.ApplicationViewKt$main$1.invoke(ApplicationView.kt:34)
	at com.malinskiy.marathon.cli.args.MarathonCli.run(CliCommands.kt:42)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:198)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:18)
	at com.github.ajalt.clikt.core.CliktCommand.parse(CliktCommand.kt:400)
	at com.github.ajalt.clikt.core.CliktCommand.parse$default(CliktCommand.kt:397)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:415)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:440)
	at com.malinskiy.marathon.cli.ApplicationViewKt.main(ApplicationView.kt:36)
@sergeshustoff sergeshustoff added the bug Something isn't working label Mar 25, 2023
@sergeshustoff
Copy link
Author

UPD: seems to work fine with executionStrategy = new com.malinskiy.marathon.config.strategy.ExecutionStrategyConfiguration(com.malinskiy.marathon.config.strategy.ExecutionMode.ALL_SUCCESS, true). Maybe add it to countSharding doc?

@Malinskiy
Copy link
Member

This is documented here https://docs.marathonlabs.io/intro/configure#any-success and there is a message in the run output that clearly states that the execution mode doesnt work with sharding. Is this not sufficient? Do we need anothet section somewhere else?

@sergeshustoff
Copy link
Author

Well, it's a new thing that wasn't there before 0.8.x, it's not that easy to find in documentation (or maybe I'm just dumb) and countSharding doesn't work with default executionStrategy, so you have to set executionStrategy if you use countSharding. I think it would be helpful to have this information in countSharding doc.

@Malinskiy
Copy link
Member

Okay, will add a reference to this in the docs when i have the time

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants