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

Jackson Databind exception when running #423

Closed
PromanSEW opened this issue Nov 9, 2023 · 15 comments
Closed

Jackson Databind exception when running #423

PromanSEW opened this issue Nov 9, 2023 · 15 comments

Comments

@PromanSEW
Copy link
Contributor

PromanSEW commented Nov 9, 2023

Play Version

Play 3.0.0
Scala 3.3.1

API

Operating System

Windows 11

JDK

17.0.9

Library Dependencies

Play Ebean 8.0.0
Ebean 13.25.0-jakarta

Expected Behavior

I updated project from Play 2.8.20 to 3.0 and Play Ebean 8.0.0
When I run dev server it should work normally, but I got exception
How to inspect where is dependency conflict?

Actual Behavior

--- (Running the application, auto-reloading is enabled) ---

[error] com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.14.3 requires Jackson Databind version >= 2.14.0 and < 2.15.0 - Found jackson-databind version 2.15.0
[error]         at com.fasterxml.jackson.module.scala.JacksonModule.setupModule(JacksonModule.scala:61)
[error]         at com.fasterxml.jackson.module.scala.JacksonModule.setupModule$(JacksonModule.scala:38)
[error]         at com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:17)
[error]         at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:879)
[error]         at org.apache.pekko.serialization.jackson.JacksonObjectMapperProvider$.configureObjectMapperModules$$anonfun$1(JacksonObjectMapperProvider.scala:252)
[error]         at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error]         at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error]         at scala.collection.immutable.List.foreach(List.scala:333)
[error]         at org.apache.pekko.serialization.jackson.JacksonObjectMapperProvider$.configureObjectMapperModules(JacksonObjectMapperProvider.scala:253)
[error]         at org.apache.pekko.serialization.jackson.JacksonObjectMapperProvider$.createObjectMapper(JacksonObjectMapperProvider.scala:275)
[error]         at org.apache.pekko.serialization.jackson.JacksonObjectMapperProvider.create(JacksonObjectMapperProvider.scala:369)
[error]         at org.apache.pekko.serialization.jackson.JacksonObjectMapperProvider.getOrCreate$$anonfun$1(JacksonObjectMapperProvider.scala:327)
[error]         at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
[error]         at org.apache.pekko.serialization.jackson.JacksonObjectMapperProvider.getOrCreate(JacksonObjectMapperProvider.scala:327)
[error]         at org.apache.pekko.serialization.jackson.JacksonJsonSerializer.<init>(JacksonSerializer.scala:151)
[error]         at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[error]         at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
[error]         at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[error]         at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
[error]         at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
[error]         at org.apache.pekko.actor.ReflectiveDynamicAccess.createInstanceFor$$anonfun$1(ReflectiveDynamicAccess.scala:50)
[error]         at scala.util.Try$.apply(Try.scala:210)
[error]         at org.apache.pekko.actor.ReflectiveDynamicAccess.createInstanceFor(ReflectiveDynamicAccess.scala:54)
[error]         at org.apache.pekko.actor.ReflectiveDynamicAccess.createInstanceFor$$anonfun$2(ReflectiveDynamicAccess.scala:58)
[error]         at scala.util.Success.flatMap(Try.scala:258)
[error]         at org.apache.pekko.actor.ReflectiveDynamicAccess.createInstanceFor(ReflectiveDynamicAccess.scala:58)
[error]         at org.apache.pekko.serialization.Serialization$$anon$2$$anon$3.applyOrElse(Serialization.scala:411)
[error]         at org.apache.pekko.serialization.Serialization$$anon$2$$anon$3.applyOrElse(Serialization.scala:405)
[error]         at scala.util.Failure.recoverWith(Try.scala:240)
[error]         at org.apache.pekko.serialization.Serialization$$anon$2.applyOrElse(Serialization.scala:411)
[error]         at org.apache.pekko.serialization.Serialization$$anon$2.applyOrElse(Serialization.scala:403)
[error]         at scala.util.Failure.recoverWith(Try.scala:240)
[error]         at org.apache.pekko.serialization.Serialization.serializerOf(Serialization.scala:412)
[error]         at org.apache.pekko.serialization.Serialization.$anonfun$2(Serialization.scala:437)
[error]         at scala.collection.Iterator$$anon$9.next(Iterator.scala:584)
[error]         at scala.collection.immutable.HashMapBuilder.addAll(HashMap.scala:2360)
[error]         at scala.collection.immutable.HashMap$.from(HashMap.scala:2182)
[error]         at scala.collection.immutable.HashMap$.from(HashMap.scala:2158)
[error]         at scala.collection.MapOps$WithFilter.map(Map.scala:381)
[error]         at org.apache.pekko.serialization.Serialization.<init>(Serialization.scala:437)
[error]         at org.apache.pekko.serialization.SerializationExtension$.createExtension(SerializationExtension.scala:28)
[error]         at org.apache.pekko.serialization.SerializationExtension$.createExtension(SerializationExtension.scala:28)
[error]         at org.apache.pekko.actor.ActorSystemImpl.registerExtension(ActorSystem.scala:1177)
[error]         at org.apache.pekko.actor.ActorSystemImpl.loadExtensions$1$$anonfun$1(ActorSystem.scala:1220)
[error]         at scala.collection.immutable.Vector.foreach(Vector.scala:1895)
[error]         at org.apache.pekko.actor.ActorSystemImpl.loadExtensions$1(ActorSystem.scala:1229)
[error]         at org.apache.pekko.actor.ActorSystemImpl.loadExtensions(ActorSystem.scala:1233)
[error]         at org.apache.pekko.actor.ActorSystemImpl.liftedTree3$1(ActorSystem.scala:1054)
[error]         at org.apache.pekko.actor.ActorSystemImpl._start$lzyINIT1(ActorSystem.scala:1062)
[error]         at org.apache.pekko.actor.ActorSystemImpl._start(ActorSystem.scala:1041)
[error]         at org.apache.pekko.actor.ActorSystemImpl.start(ActorSystem.scala:1064)
[error]         at org.apache.pekko.actor.ActorSystem$.apply(ActorSystem.scala:282)
[error]         at org.apache.pekko.actor.ActorSystem$.apply(ActorSystem.scala:326)
[error]         at org.apache.pekko.actor.ActorSystem$.apply(ActorSystem.scala:300)
[error]         at play.core.server.DevServerStart$.mkServerActorSystem(DevServerStart.scala:90)
[error]         at play.core.server.DevServerStart$.mainDev$$anonfun$2(DevServerStart.scala:80)
[error]         at play.core.server.DevServerStart.mainDev$$anonfun$1(DevServerStart.scala:308)
[error]         at play.utils.Threads$.withContextClassLoader(Threads.scala:22)
[error]         at play.core.server.DevServerStart.mainDev(DevServerStart.scala:332)
[error]         at play.core.server.DevServerStart$.mainDev(DevServerStart.scala:80)
[error]         at play.core.server.DevServerStart$.mainDevHttpMode(DevServerStart.scala:55)
[error]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[error]         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]         at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[error]         at play.runsupport.Reloader$.startDevMode(Reloader.scala:312)
[error] stack trace is suppressed; run 'last Compile / run' for the full output
[error] (Compile / run) com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.14.3 requires Jackson Databind version >= 2.14.0 and < 2.15.0 - Found jackson-databind version 2.15.0

Reproducible Test Case

https://github.com/PromanSEW/ebean_example

@mkurz
Copy link
Member

mkurz commented Nov 9, 2023

More description needed, thanks! 😉

@PromanSEW
Copy link
Contributor Author

@mkurz I updated issue, please check

@mkurz
Copy link
Member

mkurz commented Nov 9, 2023

Which dependencies do you use?
Please add addDependencyTreePlugin to your project/plugins.sbt
and then

  1. start sbt
  2. check the dependencies e.g. with dependencyBrowseTree, a browser should open, please check which library pulls in jackson-databind version 2.15.0 and let us know, thanks

@mkurz
Copy link
Member

mkurz commented Nov 9, 2023

You need to find which dependency pulls in jackson-databind version 2.15.0
you can also use other commands like

  • dependencyTree
  • or publish to file with dependencyTree/toFile /tmp/my_project_dependencies

You find all commands ("sbt tasks") here:
https://github.com/sbt/sbt-dependency-graph#main-tasks

@PromanSEW
Copy link
Contributor Author

PromanSEW commented Nov 9, 2023

Yes, I think so, it's Ebean 13.25.0
io.ebean:ebean-jackson-mapper:13.25.0-jakarta
Need to check for 13.17.3 which is default for Play Ebean 8.0.0

@PromanSEW
Copy link
Contributor Author

Checked. 13.17.3 has dependency for Jackson Databind 2.14.0, so vanilla 8.0.0 should be fine

@mkurz
Copy link
Member

mkurz commented Nov 9, 2023

Perfect, so not our fault 😅

@PromanSEW
Copy link
Contributor Author

@mkurz
Additional info: Play 2.8.20 and Ebean 13.22.0 (with databind 2.15.0) worked normally
So while updating from 2.8.20 to 3.0.0 compatibility with Databind 2.15.0 was lost 🤔
But where?

@mkurz
Copy link
Member

mkurz commented Nov 9, 2023

Hmm.. That's a bit weird. Maybe the jackson version check was introduced in a newer version and the version Play 2.8 uses is so old the check does not even exit yet...

@PromanSEW
Copy link
Contributor Author

@mkurz Do you need a minimal reproducer for investigating?

@mkurz
Copy link
Member

mkurz commented Nov 9, 2023

hmm. why not

@PromanSEW
Copy link
Contributor Author

PromanSEW commented Nov 9, 2023

@mkurz I updated my testing repo to Play 3.0.0 and having this exception
I commented out all old working versions (2.8.20/SBT 1.7.2/6.2.0/13.22.0) for fast rollback
Configuration 3.0.0/1.9.7/8.0.0/13.25.0 crashes until set Ebean back to 13.22.0
Link: https://github.com/PromanSEW/ebean_example

EDIT: I checked that 13.22.0 worked, and 13.25 not. Sorry
Something broken in Ebean between 13.22.0 and 13.25.0
13.22.0 has dependency for 2.15.0, but in my project it has 2.14.3...

@PromanSEW
Copy link
Contributor Author

Breaking change produces this issue:
ebean-orm/ebean#3250

@mkurz mkurz reopened this Nov 9, 2023
@mkurz mkurz transferred this issue from playframework/playframework Nov 9, 2023
@ihostage ihostage changed the title [3.0.0] Jackson Databind exception when running Jackson Databind exception when running Nov 9, 2023
@PromanSEW PromanSEW mentioned this issue Feb 12, 2024
@mkurz
Copy link
Member

mkurz commented Mar 11, 2024

Fixed by #451, we can just exclude the jackson dependencies that ebean pulls in, which means ebean will then just use the jackson dependencies Play depends on which should be ok.

@mkurz mkurz closed this as completed Mar 11, 2024
@mkurz
Copy link
Member

mkurz commented Mar 11, 2024

Play Ebean 8.2.0 and 7.2.0 released which upgrade Ebean to latest version 15.0.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants