typesafehub / conductr-lib

Other
8 stars 13 forks source link

Support Akka 2.5 and Play 2.6 #151

Closed huntc closed 7 years ago

huntc commented 7 years ago

...along with a Scala 2.12 variant for Play 2.6.

Patch versions have also been updated to the latest.

Fixes #150

This should be released as 2.0.0 due to it breaking back compatibility with the dropping of Akka23 and Play23.

typesafe-tools commented 7 years ago

ConductR Lib for Play 2.6 and Akka 2.5

huntc commented 7 years ago

Interestingly, git somehow thinks that akka23 has been renamed to akka25... oh well

ignasi35 commented 7 years ago

hi @huntc an early test of this using online-auction-java revealed two issues starting java-based lagom services and play apps:

lagom service


java.lang.NoSuchMethodError: play.api.ApplicationLoader$Context.copy(Lplay/api/Environment;Lscala/Option;Lplay/core/WebCommands;Lplay/api/Configuration;)Lplay/api/ApplicationLoader$Context;
        at com.typesafe.conductr.bundlelib.lagom.javadsl.ConductRApplicationLoader.load(ConductRApplicationLoader.scala:20)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$2$$anonfun$3.apply(LagomReloadableDevServerStart.scala:152)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$2$$anonfun$3.apply(LagomReloadableDevServerStart.scala:149)
        at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$2.apply(LagomReloadableDevServerStart.scala:149)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$2.apply(LagomReloadableDevServerStart.scala:125)
        at scala.Option.map(Option.scala:146)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(LagomReloadableDevServerStart.scala:125)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(LagomReloadableDevServerStart.scala:123)
        at scala.util.Success.flatMap(Try.scala:231)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(LagomReloadableDevServerStart.scala:123)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(LagomReloadableDevServerStart.scala:115)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
        at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Stacktrace caused by project item-impl (filesystem path to project is /Users/ignasi/git/projects/lightbend/samples-lagom/online-auction-java/item-impl).

(same stack trace is listed for each lagom service.

It looks like lagom1 will need to distinguish Lagom pre-1.4 vs post-1.4. Currently lagom1 assumes lagom 1.3.5.

play app

When starting the frontedn for online auction (a java play app which embed a lagom client):

java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
        at com.typesafe.conductr.bundlelib.lagom.javadsl.ServiceLocatorModule.bindings(ServiceLocatorModule.scala:20)
        at play.api.inject.guice.GuiceableModuleConversions$class.guice(GuiceInjectorBuilder.scala:335)
        at play.api.inject.guice.GuiceableModule$.guice(GuiceInjectorBuilder.scala:269)
        at play.api.inject.guice.GuiceableModuleConversions$$anon$3$$anonfun$guiced$2.apply(GuiceInjectorBuilder.scala:314)
        at play.api.inject.guice.GuiceableModuleConversions$$anon$3$$anonfun$guiced$2.apply(GuiceInjectorBuilder.scala:314)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at scala.collection.immutable.List.foreach(List.scala:381)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
        at scala.collection.immutable.List.map(List.scala:285)
        at play.api.inject.guice.GuiceableModuleConversions$$anon$3.guiced(GuiceInjectorBuilder.scala:314)
        at play.api.inject.guice.GuiceableModule$$anonfun$guiced$1.apply(GuiceInjectorBuilder.scala:291)
        at play.api.inject.guice.GuiceableModule$$anonfun$guiced$1.apply(GuiceInjectorBuilder.scala:291)
        at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
        at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
        at scala.collection.immutable.List.foreach(List.scala:381)
        at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
        at scala.collection.immutable.List.flatMap(List.scala:344)
        at play.api.inject.guice.GuiceableModule$.guiced(GuiceInjectorBuilder.scala:291)
        at play.api.inject.guice.GuiceBuilder.createModule(GuiceInjectorBuilder.scala:166)
        at play.api.inject.guice.GuiceApplicationBuilder.applicationModule(GuiceApplicationBuilder.scala:110)
        at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:181)
        at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:137)
        at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
        at com.typesafe.conductr.bundlelib.play.api.ConductRApplicationLoader.load(ConductRApplicationLoader.scala:22)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$2$$anonfun$3.apply(LagomReloadableDevServerStart.scala:152)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$2$$anonfun$3.apply(LagomReloadableDevServerStart.scala:149)
        at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$2.apply(LagomReloadableDevServerStart.scala:149)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$2.apply(LagomReloadableDevServerStart.scala:125)
        at scala.Option.map(Option.scala:146)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(LagomReloadableDevServerStart.scala:125)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(LagomReloadableDevServerStart.scala:123)
        at scala.util.Success.flatMap(Try.scala:231)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(LagomReloadableDevServerStart.scala:123)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(LagomReloadableDevServerStart.scala:115)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
        at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Stacktrace caused by project web-gateway (filesystem path to project is /Users/ignasi/git/projects/lightbend/samples-lagom/online-auction-java/web-gateway).

which seems related to this change.

But, here we'll also need to distinguish conductr bundles for lagom pre-1.4 (uses play 2.5) and post-1.4 (uses play 2.6). 😒

ignasi35 commented 7 years ago

The previous comment contains stackTraces dumped using runAll.

ignasi35 commented 7 years ago

Similarly, when trying to run the sandbox:


> sandbox run 2.0.5
16:35:01.347 [pool-6-thread-8] DEBUG c.l.l.i.api.tools.ServiceDetector - Loading service discovery class: com.lightbend.lagom.internal.javadsl.server.JavadslServiceDiscovery
16:35:01.345 [pool-6-thread-4] DEBUG c.l.l.i.api.tools.ServiceDetector - Loading service discovery class: com.lightbend.lagom.internal.javadsl.server.JavadslServiceDiscovery
16:35:01.368 [pool-6-thread-2] DEBUG c.l.l.i.api.tools.ServiceDetector - Loading service discovery class: com.lightbend.lagom.internal.javadsl.server.JavadslServiceDiscovery
16:35:01.375 [pool-6-thread-5] DEBUG c.l.l.i.api.tools.ServiceDetector - Loading service discovery class: com.lightbend.lagom.internal.javadsl.server.JavadslServiceDiscovery
16:35:03.330 [pool-6-thread-4] DEBUG c.l.l.i.api.tools.ServiceDetector - Loading service discovery class: com.lightbend.lagom.internal.javadsl.server.JavadslServiceDiscovery
[trace] Stack trace suppressed: run last searchImpl/bundle:bundleOverrideEndpoints for the full output.
[trace] Stack trace suppressed: run last userImpl/bundle:bundleOverrideEndpoints for the full output.
[trace] Stack trace suppressed: run last itemImpl/bundle:bundleOverrideEndpoints for the full output.
[trace] Stack trace suppressed: run last transactionImpl/bundle:bundleOverrideEndpoints for the full output.
[trace] Stack trace suppressed: run last biddingImpl/bundle:bundleOverrideEndpoints for the full output.
[error] (searchImpl/bundle:bundleOverrideEndpoints) java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
[error] (userImpl/bundle:bundleOverrideEndpoints) java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
[error] (itemImpl/bundle:bundleOverrideEndpoints) java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
[error] (transactionImpl/bundle:bundleOverrideEndpoints) java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
[error] (biddingImpl/bundle:bundleOverrideEndpoints) java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
[trace] Stack trace suppressed: run last searchImpl/bundle:bundleOverrideEndpoints for the full output.
[trace] Stack trace suppressed: run last userImpl/bundle:bundleOverrideEndpoints for the full output.
[trace] Stack trace suppressed: run last itemImpl/bundle:bundleOverrideEndpoints for the full output.
[trace] Stack trace suppressed: run last transactionImpl/bundle:bundleOverrideEndpoints for the full output.
[trace] Stack trace suppressed: run last biddingImpl/bundle:bundleOverrideEndpoints for the full output.
[error] (searchImpl/bundle:bundleOverrideEndpoints) java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
[error] (userImpl/bundle:bundleOverrideEndpoints) java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
[error] (itemImpl/bundle:bundleOverrideEndpoints) java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
[error] (transactionImpl/bundle:bundleOverrideEndpoints) java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
[error] (biddingImpl/bundle:bundleOverrideEndpoints) java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
[error] Total time: 7 s, completed Jun 23, 2017 4:35:04 PM
> last searchImpl/bundle:bundleOverrideEndpoints 
java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
        at com.typesafe.conductr.bundlelib.lagom.javadsl.ServiceLocatorModule.bindings(ServiceLocatorModule.scala:20)
        at play.api.inject.guice.GuiceableModuleConversions$class.guice(GuiceInjectorBuilder.scala:335)
        at play.api.inject.guice.GuiceableModule$.guice(GuiceInjectorBuilder.scala:269)
        at play.api.inject.guice.GuiceableModuleConversions$$anon$3$$anonfun$guiced$2.apply(GuiceInjectorBuilder.scala:314)
        at play.api.inject.guice.GuiceableModuleConversions$$anon$3$$anonfun$guiced$2.apply(GuiceInjectorBuilder.scala:314)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at scala.collection.immutable.List.foreach(List.scala:381)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
        at scala.collection.immutable.List.map(List.scala:285)
        at play.api.inject.guice.GuiceableModuleConversions$$anon$3.guiced(GuiceInjectorBuilder.scala:314)
        at play.api.inject.guice.GuiceableModule$$anonfun$guiced$1.apply(GuiceInjectorBuilder.scala:291)
        at play.api.inject.guice.GuiceableModule$$anonfun$guiced$1.apply(GuiceInjectorBuilder.scala:291)
        at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
        at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
        at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
        at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
        at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
        at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
        at play.api.inject.guice.GuiceableModule$.guiced(GuiceInjectorBuilder.scala:291)
        at com.lightbend.lagom.internal.javadsl.server.JavadslServiceDiscovery.loadModules(JavadslServiceDiscovery.scala:80)
        at com.lightbend.lagom.internal.javadsl.server.JavadslServiceDiscovery.doDiscovery(JavadslServiceDiscovery.scala:47)
        at com.lightbend.lagom.internal.javadsl.server.JavadslServiceDiscovery.discoverServices(JavadslServiceDiscovery.scala:39)
        at com.lightbend.lagom.internal.api.tools.ServiceDetector$.services(ServiceDetector.scala:60)
        at com.lightbend.lagom.internal.api.tools.ServiceDetector$.services(ServiceDetector.scala:51)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.lightbend.conductr.sbt.ServiceDetector$$anonfun$services$1.apply(LagomBundlePlugin.scala:383)
        at com.lightbend.conductr.sbt.ServiceDetector$$anonfun$services$1.apply(LagomBundlePlugin.scala:380)
        at com.lightbend.conductr.sbt.package$.withContextClassloader(package.scala:41)
        at com.lightbend.conductr.sbt.ServiceDetector$.services(LagomBundlePlugin.scala:380)
        at com.lightbend.conductr.sbt.LagomBundlePlugin$$anonfun$collectEndpoints$1$$anonfun$apply$7.apply(LagomBundlePlugin.scala:222)
        at com.lightbend.conductr.sbt.LagomBundlePlugin$$anonfun$collectEndpoints$1$$anonfun$apply$7.apply(LagomBundlePlugin.scala:208)
        at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
        at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
        at sbt.std.Transform$$anon$4.work(System.scala:63)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
        at sbt.Execute.work(Execute.scala:237)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
        at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)
[error] (searchImpl/bundle:bundleOverrideEndpoints) java.lang.NoSuchMethodError: play.api.Environment.mode()Lscala/Enumeration$Value;
> 

I created this and previous errors using the code in https://github.com/lagom/online-auction-java/pull/100 which requries a local compilation of https://github.com/lagom/lagom/tree/play-2.6-akka-2.5

ignasi35 commented 7 years ago

Trying this branch with online-auction-scala causes a different issue in runAll:


java.lang.NoSuchMethodError: play.api.libs.ws.WSRequest.withBody(Lplay/api/libs/ws/WSBody;)Lplay/api/libs/ws/StandaloneWSRequest;
        at com.lightbend.lagom.internal.client.ClientServiceCallInvoker.com$lightbend$lagom$internal$client$ClientServiceCallInvoker$$makeStrictCall(ClientServiceCallInvoker.scala:187)
        at com.lightbend.lagom.internal.client.ClientServiceCallInvoker$$anonfun$doInvoke$1.apply(ClientServiceCallInvoker.scala:52)
        at com.lightbend.lagom.internal.client.ClientServiceCallInvoker$$anonfun$doInvoke$1.apply(ClientServiceCallInvoker.scala:30)
        at com.lightbend.lagom.scaladsl.devmode.LagomDevModeServiceLocatorComponents$$anon$2.doWithService(LagomDevModeComponents.scala:76)
        at com.lightbend.lagom.internal.scaladsl.client.ScaladslServiceApiBridge$class.serviceLocatorDoWithService(ScaladslServiceApiBridge.scala:149)
        at com.lightbend.lagom.internal.scaladsl.client.ScaladslClientServiceCallInvoker.serviceLocatorDoWithService(ScaladslServiceClientInvoker.scala:110)
        at com.lightbend.lagom.internal.scaladsl.client.ScaladslClientServiceCallInvoker.serviceLocatorDoWithService(ScaladslServiceClientInvoker.scala:110)
        at com.lightbend.lagom.internal.client.ClientServiceCallInvoker.doInvoke(ClientServiceCallInvoker.scala:30)
        at com.lightbend.lagom.internal.scaladsl.client.ScaladslClientServiceCall.invoke(ScaladslServiceClientInvoker.scala:97)
        at com.lightbend.lagom.internal.scaladsl.registry.ServiceRegistration$$anonfun$2.apply(ServiceRegistration.scala:34)
        at com.lightbend.lagom.internal.scaladsl.registry.ServiceRegistration$$anonfun$2.apply(ServiceRegistration.scala:31)
        at scala.collection.immutable.Map$Map1.foreach(Map.scala:116)
        at com.lightbend.lagom.internal.scaladsl.registry.ServiceRegistration.<init>(ServiceRegistration.scala:31)
        at com.lightbend.lagom.scaladsl.devmode.LagomDevModeComponents$class.$init$(LagomDevModeComponents.scala:41)
        at WebGatewayLoader$$anon$2.<init>(Loader.scala:53)
        at WebGatewayLoader.load(Loader.scala:53)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$2$$anonfun$3.apply(LagomReloadableDevServerStart.scala:152)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$2$$anonfun$3.apply(LagomReloadableDevServerStart.scala:149)
        at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$2.apply(LagomReloadableDevServerStart.scala:149)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$2.apply(LagomReloadableDevServerStart.scala:125)
        at scala.Option.map(Option.scala:146)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(LagomReloadableDevServerStart.scala:125)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(LagomReloadableDevServerStart.scala:123)
        at scala.util.Success.flatMap(Try.scala:231)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(LagomReloadableDevServerStart.scala:123)
        at play.core.server.LagomReloadableDevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(LagomReloadableDevServerStart.scala:115)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
        at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Stacktrace caused by project web-gateway (filesystem path to project is /Users/ignasi/git/projects/lightbend/samples-lagom/online-auction-scala/web-gateway).

The PR https://github.com/lagom/online-auction-scala/pull/42 is currently runnable if sbt-conductr is commented. When https://github.com/typesafehub/conductr-lib/pull/151 is compiled locally and used on https://github.com/lagom/online-auction-scala/pull/42 play 2.5 is brought in transitively and seems to cause ☝️ this stack trace.

I think the issue is similar to above problems with java: lagom 1.4 using play 2.6 and akka 2.5 may require a more complex conductr-bundle conditionally importing one or the other.

What do you think about using LagomVersion (which we can add into each library like we do with build-tool-support) and have sbt-conductr conditionally use conductr-bundle or another?

👉 https://github.com/typesafehub/sbt-conductr/blob/63222a8cced5325849c8fb5a1b7b48060ecc4683/src/main/scala/com/lightbend/conductr/sbt/package.scala#L69-L69 ?

huntc commented 7 years ago

@ignassi @tmoore I really think I'm going to have to have a lagom13 and a lagom14 project. I'd say that some older Play dependencies and/or Lagom dependencies are on the class path.

I might try the provided scope method once again too.

huntc commented 7 years ago

@ignasi35 Having just published the conductr-lib libraries for Play locally (a simple publishLocal, and then updating the sbt-conductr/sbt-conductr-tester/play-bundle project for Play 2.6 along with set conductrBundleLibVersion := "1.9.4-SNAPSHOT"), all appears well. The straight Play use case thus appears to work. Note that I've made an update to akka-contrib-extra since you tried, however, I don't think that'll affect the outcome too much here (it was more for Scala 2.12 support that I did that).

What's the easiest method for me to test out Lagom 1.4? ...or could you do it by testing out the sbt-conductr/sbt-conductr-tester/lagom-bundle-project? This project should contain the problem much more; it should thus be easy to see what is going on.

Relevant PRs for you:

ignasi35 commented 7 years ago

Hi @huntc I just tried a local compilation of this PR with the latest mater ofsbt-conductr(also published locally) inonline-auction-java/master(which uses Lagom1.3.5). I then tested again inonline-auction-java/some-branch(which uses Lagom1.4.0-SNAPSHOT`).

In both cases I got:

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.typesafe.conductr#lagom1-java-conductr-bundle-lib_2.11;1.9.5-SNAPSHOT: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn] 
[warn]  Note: Unresolved dependencies path:
[warn]          com.typesafe.conductr:lagom1-java-conductr-bundle-lib_2.11:1.9.5-SNAPSHOT ((com.lightbend.conductr.sbt.LagomJavaBundlePlugin) LagomBundlePlugin.scala#L334)
[warn]            +- com.example:transactionimpl_2.11:1.0-SNAPSHOT

Do you have unpushed changes in sbt-conductr that I'm missing?

huntc commented 7 years ago

Tested with Play 2.6 in ConductR. Appears to work fine. I used the play-tester of sbt-conductr to test.