Play 2.8 Load balancing issue

Hi there,

We have migrated play 2.0 into Play 2.8 ,All good
code looks like this play-samples/play-java-jpa-example at 2.8.x · playframework/play-samples · GitHub
Each controller (around 6-7) has Supper class MainController extending controller
and constructor calling super
Similar to play-samples/PersonController.java at 2.8.x · playframework/play-samples · GitHub
We have 2 load balanced instances , we put application in test environment and observed that,
Some times screen loads correct data ,sometimes load some other /old request data
Is this related to sticky session issue or dependency injection not happening correctly and objects are null?

In logs we found inconsistent behaviour with below exceptions in common

play.api.UnexpectedException,
io.jsonwebtoken.lang.UnknownClassException
,io.jsonwebtoken.lang.UnknownClassException ,akka.stream.SubscriptionWithCancelException$NoMoreElementsNeeded$
org.hibernate.boot.registry.classloading.spi.ClassLoadingException

Looking forward for the reply

Stacktrace:

play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:355)

play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:261)

play.core.server.AkkaHttpServer$$anonfun$2.applyOrElse(AkkaHttpServer.scala:429)

play.core.server.AkkaHttpServer$$anonfun$2.applyOrElse(AkkaHttpServer.scala:421)

scala.concurrent.impl.Promise$Transformation.run(Promise.scala:453)

akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:56)

akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:93)

akka.dispatch.BatchingExecutor$BlockableBatch$$Lambda$.apply$mcV$sp

scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)

scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:94)

akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:93)

akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:48)

akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:48)

java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)

java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1067)

java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1703)
java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172)

Exception:

org.hibernate.boot.registry.classloading.spi.ClassLoadingException

Message:

Unable to load class [fetch]

[Show affected entry in ‘Code level’ tab](javascript:;)

Stacktrace:

org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:133)

org.hibernate.metamodel.internal.MetamodelImpl.getImportedClassName(MetamodelImpl.java:630)

org.hibernate.hql.internal.QuerySplitter.getImportedClass(QuerySplitter.java:189)

org.hibernate.hql.internal.QuerySplitter.concreteQueries(QuerySplitter.java:117)

org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:99)

org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:73)

org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:155)

org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:600)

org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:709)

org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:23)

models.JPACommonRepository.getDailySalesList(JPACommonRepository.java:173)

models.JPACommonRepository.lambda$

models.JPACommonRepository$$Lambda$.apply

play.db.jpa.DefaultJPAApi.withTransaction(DefaultJPAApi.java:169)

play.db.jpa.DefaultJPAApi.withTransaction(DefaultJPAApi.java:126)

play.db.jpa.DefaultJPAApi.withTransaction(DefaultJPAApi.java:101)

models.JPACommonRepository.wrap(JPACommonRepository.java:316)

models.JPACommonRepository.lambda$

models.JPACommonRepository$$Lambda$.get

java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)

akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:48)

java.util.concurrent.ThreadPoolExecutor.runWor

Exception:

io.jsonwebtoken.lang.UnknownClassException

Message:

Unable to load class named [org.bouncycastle.jce.provider.BouncyCastleProvider] from the thread context, current, or system/application ClassLoaders. All heuristics have been exhausted. Class could not be found.

[Show affected entry in ‘Code level’ tab](javascript:;)

Stacktrace:

io.jsonwebtoken.lang.Classes.forName(Classes.java:92)

io.jsonwebtoken.lang.Classes.isAvailable(Classes.java:127)

io.jsonwebtoken.lang.RuntimeEnvironment.(RuntimeEnvironment.java:32)

io.jsonwebtoken.SignatureAlgorithm.(SignatureAlgorithm.java:92)

io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:289)

io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:481)

io.jsonwebtoken.impl.DefaultJwtParser.parseClaimsJws(DefaultJwtParser.java:541)

play.api.mvc.JWTCookieDataCodec$JWTFormatter.parse(Cookie.scala:736)

play.api.mvc.JWTCookieDataCodec.decode(Cookie.scala:644)

play.api.mvc.JWTCookieDataCodec.decode$(Cookie.scala:637)

play.api.mvc.DefaultJWTCookieDataCodec.decode(Cookie.scala:816)

play.api.mvc.FallbackCookieDataCodec.decode(Cookie.scala:807)

play.api.mvc.FallbackCookieDataCodec.decode$(Cookie.scala:800)

play.api.mvc.DefaultSessionCookieBaker.decode(Session.scala:123)

play.api.mvc.CookieBaker.decodeFromCookie(Cookie.scala:486)

play.api.mvc.CookieBaker.decodeFromCookie$(Cookie.scala:480)

play.api.mvc.DefaultSessionCookieBaker.decodeFromCookie(Session.scala:123)

play.api.mvc.request.DefaultRequestFactory$$anon$3.create(RequestFactory.scala:121)

play.api.mvc.request.DefaultRequestFactory$$anon$3.create(RequestFactory.scala:118)

play.api.mvc.request.LazyCell.value(Cell.scala:69)

play.mvc.Http$RequestHeader.session(Http.java:336)

play.core.j.RequestHeaderImpl.session(JavaHelpers.scala:194)

security.SessionExpirationFilter.call(SessionExpirationFilter.java:30)

play.core.j.JavaAction.$anonfun$apply$8(JavaAction.scala:175)

play.core.j.JavaAction$$Lambda$.apply

scala.concurrent.Future$.$anonfun$apply$1(Future.scala:661)