Hi, we are again trying to use fleet for the devel...
# fleet
u
Hi, we are again trying to use fleet for the development of our multiplatform-apps. Unfortunately right now it’s not very reliable: On moment everything works (Code-Completion in ios & in multiplatform, even jumping from ios to kotlin (which is strange, as it’s a static kmp-lib), Breakpoints, launching the ios-app) - that feels like heaven on earth 😉 But than everything is broken - fleet adds misc folders to the xCode workspace, cocapods are not working if fleet is open, launching fails without any message… Right now I have now clue, what breaks it. Are there any best practices?
p
Hey Uli! Could you please share some details? Fleet's version you use? Is the project you work on available to get on github or somewhere else? If Fleet does not start anymore, could you please go to
/Users/<your_user_name>/Library/Logs/JetBrains/Fleet
and compress everything inside and put here or send it in DM? Thanks!
u
Hi Pavel, I am using the latest Version (1.29.216) unfortunately the project is not public, it is a really big multi-touchpoint, multiplatform app with a lot of dependencies. We are using kmp for nearly three years now - so i guess there might be some oldish settings and workarounds. So I guess it will be hard to reproduce… Can you tell me why fleet is adding folders to the XCode project? That doesn’t make any sense to me 😬
p
I have no ideas so far about folders added. Btw what are these folders? Might you take some screenshots?
u
Kotlin Classes, gradle build files, the complete kmp framework and many more… Sometimes it’s possible to delete them, sometimes they will reappear right afterwards
e.g. the ‘du5…’ folder seems to be from the gradle cache -->
.gradle/configuration-cache/du5aimmhg3vhp175q2yg8hw9s
What exactly is fleet compiling in case of ios? The settings.gradle.kts only contains the android world. Is fleet searching for build.gradles? if so, it may be related to our structure : we have multiple modules / repositories like • customer_level ◦ customer_app_ios ◦ customer_app_android • which both have platform-specific whitelabel-modules ◦ whitelabel_ios ◦ whitelabel_android • which both use a shared kmp-module But each whitelabel_ios, whitelabel_android and the kmp-module have examples to test and run them separately (e.g. for CI) - maybee fleet is also parsing those projects!? and somehow mixing it all together!?
p
@eugeny.okolotin could you please help with reproduction as I am not that good at kmp projects?
👌 1
e
Hi @Uli Niggemann your problem with adding folders to xcode project looks quite similar to FL-24057. Fix of this issue will be published with 1.30 version. For now you can try to disable adding all new files/folders in xcode project. Add`"xcode.autoadd": false` setting to configuration file
settings.json
for it. Please note that with it no files created from Fleet will be added to the project at all.
u
Hey Eugeny, that sounds promising. Is there any chance to get access to 1.30?
e
@Uli Niggemann it will be published soon
u
😵‍💫 Fleet is driving me crazy. As mentioned our setup includes a somewhat huge platform-specific ios-module. This is integrated via cocapods and depends on a kmp module. I have got two different customer-projects which are using it - the projects differ only in target, bundle-id and a config. One project is working perfectly fine - the build in the other one fails without any message.
m
Hey @Uli Niggemann! Could you maybe share your backend logs (with
Open IntelliJ Backend Logs in Finder
action) from the project where there's no message on fail. There might be some compatibility issues that are maybe not yet supported the UI 🤔
u
I finally get some erros during the launch:
Copy code
Exception in saga
fleet.rpc.core.RpcException: Remote call <fleet.mercury.protocol.MercuryRunApi#checkRunDestinationStatus> has failed: Failure[com.jetbrains.cidr.execution.deviceSupport.AMDeviceException: Timeout when communication with device:
	at com.jetbrains.cidr.execution.JBDeviceFramework$Companion.getValue(JBDeviceFramework.kt:72)
	at com.jetbrains.cidr.execution.PreferredPlatformBuildForSdkBuild$Companion.getPreferredRuntimeBuildBySDKBuild(PreferredPlatformBuildForSdkBuild.kt:51)
	at com.jetbrains.cidr.execution.PreferredPlatformBuildForSdkBuild.getPreferredRuntimeBuildBySDKBuild(PreferredPlatformBuildForSdkBuild.kt)
	at com.jetbrains.cidr.execution.simulatorSupport.SimulatorsRegistry.readState(SimulatorsRegistry.java:151)
	at com.jetbrains.cidr.execution.simulatorSupport.SimulatorsRegistry.refresh(SimulatorsRegistry.java:136)
	at com.jetbrains.cidr.execution.simulatorSupport.SimulatorsRegistry.refresh(SimulatorsRegistry.java:132)
	at com.jetbrains.cidr.execution.simulatorSupport.SimulatorsRegistry.<init>(SimulatorsRegistry.java:77)
	at com.intellij.platform.instanceContainer.instantiation.InstantiateKt$instantiate$2.invoke(instantiate.kt:45)
	at com.intellij.platform.instanceContainer.instantiation.InstantiateKt$instantiate$2.invoke(instantiate.kt:42)
	at com.intellij.platform.instanceContainer.instantiation.InstantiateKt.instantiate(instantiate.kt:308)
	at com.intellij.platform.instanceContainer.instantiation.InstantiateKt.instantiate(instantiate.kt:42)
	at com.intellij.serviceContainer.LightServiceInstanceSupport$LightServiceInstanceInitializer.createInstance(LightServiceInstanceSupport.kt:47)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invokeSuspend(LazyInstanceHolder.kt:162)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invoke(LazyInstanceHolder.kt)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invoke(LazyInstanceHolder.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:167)
	at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invokeSuspend(LazyInstanceHolder.kt:160)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invoke(LazyInstanceHolder.kt)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invoke(LazyInstanceHolder.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:44)
	at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
	at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
	at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.initialize(LazyInstanceHolder.kt:145)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.access$initialize(LazyInstanceHolder.kt:13)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.tryInitialize(LazyInstanceHolder.kt:135)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstance(LazyInstanceHolder.kt:95)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstanceInCallerContext$suspendImpl(LazyInstanceHolder.kt:87)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstanceInCallerContext(LazyInstanceHolder.kt)
	at com.intellij.serviceContainer.ComponentManagerImplKt$getOrCreateInstanceBlocking$3.invokeSuspend(ComponentManagerImpl.kt:1530)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
	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 com.intellij.serviceContainer.ComponentManagerImplKt$runBlockingInitialization$1.invoke(ComponentManagerImpl.kt:1603)
	at com.intellij.serviceContainer.ComponentManagerImplKt$runBlockingInitialization$1.invoke(ComponentManagerImpl.kt:1594)
	at com.intellij.openapi.progress.ContextKt.prepareThreadContext(context.kt:86)
	at com.intellij.serviceContainer.ComponentManagerImplKt.runBlockingInitialization(ComponentManagerImpl.kt:1594)
	at com.intellij.serviceContainer.ComponentManagerImplKt.getOrCreateInstanceBlocking(ComponentManagerImpl.kt:1529)
	at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:747)
	at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:691)
	at com.jetbrains.cidr.execution.simulatorSupport.SimulatorsRegistry.getInstance(SimulatorsRegistry.java:40)
	at com.jetbrains.cidr.execution.SimulatedBuildDestination$Factory.createSimulatorDestinations(SimulatedBuildDestination.java:67)
	at com.jetbrains.cidr.execution.AppCodeBuildConfigurationHelper.addSimulators(AppCodeBuildConfigurationHelper.java:350)
	at com.jetbrains.cidr.execution.AppCodeBuildConfigurationHelper.addIOSDestinations(AppCodeBuildConfigurationHelper.java:301)
	at com.jetbrains.cidr.execution.AppCodeBuildConfigurationHelper.collectPossibleDestinations(AppCodeBuildConfigurationHelper.java:207)
	at com.jetbrains.cidr.execution.AppCodeBuildConfigurationHelper.getDestinations(AppCodeBuildConfigurationHelper.java:143)
	at com.jetbrains.cidr.execution.AppCodeRunConfiguration.getDestinations(AppCodeRunConfiguration.java:88)
	at com.jetbrains.cidr.execution.AppCodeExecutionTargetProvider$getTargets$destinations$1.invoke(AppCodeExecutionTargetProvider.kt:15)
	at com.jetbrains.cidr.execution.AppCodeExecutionTargetProvider$getTargets$destinations$1.invoke(AppCodeExecutionTargetProvider.kt:15)
	at com.intellij.openapi.application.ActionsKt.runReadAction$lambda$3(actions.kt:31)
	at com.intellij.openapi.application.impl.RwLockHolder.runReadAction(RwLockHolder.kt:271)
	at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:807)
	at com.intellij.openapi.application.ActionsKt.runReadAction(actions.kt:31)
	at com.jetbrains.cidr.execution.AppCodeExecutionTargetProvider.getTargets(AppCodeExecutionTargetProvider.kt:15)
	at com.intellij.execution.ExecutionTargetManagerImpl.lambda$getTargetsFor$1(ExecutionTargetManagerImpl.java:233)
	at com.intellij.execution.ExecutionTargetManagerImpl.doWithEachNonCompoundWithSpecifiedTarget(ExecutionTargetManagerImpl.java:273)
	at com.intellij.execution.ExecutionTargetManagerImpl.getTargetsFor(ExecutionTargetManagerImpl.java:231)
	at com.intellij.execution.ExecutionTargetManager.getTargetsToChooseFor(ExecutionTargetManager.java:31)
	at fleet.backend.mercury.MercuryXcodeExecutionCommandProvider.toAppCodeRunTaskConfiguration(MercuryXcodeExecutionCommandProvider.kt:38)
	at fleet.backend.mercury.MercuryXcodeExecutionCommandProvider.toRunTaskConfiguration(MercuryXcodeExecutionCommandProvider.kt:25)
	at fleet.backend.mercury.MercuryExecutionCommandProvider.getCommandLine(MercuryExecutionCommandProvider.kt:17)
	at fleet.backend.execution.ExecutionCommandProvider.getCommandDescriptor(ExecutionCommandProvider.kt:20)
	at fleet.backend.execution.BackendRunTaskCollector$Companion$toRunConfigurationDescription$1.invoke(BackendRunTaskCollector.kt:163)
	at fleet.backend.execution.BackendRunTaskCollector$Companion$toRunConfigurationDescription$1.invoke(BackendRunTaskCollector.kt:162)
	at fleet.backend.execution.BackendRunTaskCollector$Companion$mapFirstOrNull$1.invoke(BackendRunTaskCollector.kt:175)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:170)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:194)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:168)
	at fleet.backend.execution.BackendRunTaskCollector$Companion.o(BackendRunTaskCollector.kt:175)
	at fleet.backend.execution.BackendRunTaskCollector$Companion.o(BackendRunTaskCollector.kt:162)
	at fleet.backend.execution.BackendRunTaskCollector$Companion.access$toRunConfigurationDescription(BackendRunTaskCollector.kt:101)
	at fleet.backend.execution.BackendRunTaskCollector$findAllProjectRunTasks$2$2$1.invoke(BackendRunTaskCollector.kt:94)
	at fleet.backend.execution.BackendRunTaskCollector$findAllProjectRunTasks$2$2$1.invoke(BackendRunTaskCollector.kt:94)
	at com.intellij.openapi.progress.CoroutinesKt.blockingContextInner(coroutines.kt:321)
	at com.intellij.openapi.progress.CoroutinesKt.access$blockingContextInner(coroutines.kt:1)
	at com.intellij.openapi.progress.CoroutinesKt$blockingContext$2.invokeSuspend(coroutines.kt:198)
	at com.intellij.openapi.progress.CoroutinesKt$blockingContext$2.invoke(coroutines.kt)
	at com.intellij.openapi.progress.CoroutinesKt$blockingContext$2.invoke(coroutines.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
	at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
	at com.intellij.openapi.progress.CoroutinesKt.blockingContext(coroutines.kt:197)
	at fleet.backend.execution.BackendRunTaskCollector$findAllProjectRunTasks$2.invokeSuspend(BackendRunTaskCollector.kt:94)
	at fleet.backend.execution.BackendRunTaskCollector$findAllProjectRunTasks$2.invoke(BackendRunTaskCollector.kt)
	at fleet.backend.execution.BackendRunTaskCollector$findAllProjectRunTasks$2.invoke(BackendRunTaskCollector.kt)
	at kotlinx.coroutines.flow.SafeFlow.collectSafely(Builders.kt:61)
	at kotlinx.coroutines.flow.AbstractFlow.collect(Flow.kt:230)
	at kotlinx.coroutines.flow.internal.ChannelFlowOperatorImpl.flowCollect(ChannelFlow.kt:195)
	at kotlinx.coroutines.flow.internal.ChannelFlowOperator.collectTo$suspendImpl(ChannelFlow.kt:157)
	at kotlinx.coroutines.flow.internal.ChannelFlowOperator.collectTo(ChannelFlow.kt)
	at kotlinx.coroutines.flow.internal.ChannelFlow$collectToFun$1.invokeSuspend(ChannelFlow.kt:60)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Caused by: kotlinx.coroutines.TimeoutCancellationException: Timed out waiting for 3000 ms
	at kotlinx.coroutines.TimeoutKt.TimeoutCancellationException(Timeout.kt:191)
	at kotlinx.coroutines.TimeoutCoroutine.run(Timeout.kt:159)
	at kotlinx.coroutines.EventLoopImplBase$DelayedRunnableTask.run(EventLoop.common.kt:501)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
	at kotlinx.coroutines.DefaultExecutor.run(DefaultExecutor.kt:109)
	at java.base/java.lang.Thread.run(Thread.java:840)
]
m
Hey! I'm actually on vacation, so I won't be able to help you directly. Please try reporting that in our tracker, with the logs (there better attach all of them) and this stacktrace. I'm sure my colleagues will help you or it'll be easier for em to continue solving this case once I'm back on Thursday
This in general can be caused by different things, so this is unfortunately not straightforward why this has timed out
p
@Uli Niggemann did you have a chance to update Fleet to 1.30 and try it?
u
I was just writing an answer: It looks much better now!
p
great!