pjfanning opened a new pull request, #3673:
URL: https://github.com/apache/pekko/pull/3673

   ### Motivation
   `pekko-serialization-jackson` and `pekko-serialization-jackson3` register 
serializers with the same names (`jackson-json`, `jackson-cbor`, 
`jackson-cbor-264`) and identifiers (31/33/32). If both jars are on the 
classpath, whichever `reference.conf` is merged last silently takes over the 
bindings of both modules, including the other module's `JsonSerializable` / 
`CborSerializable` markers.
   
   This is an alternative to renaming the Jackson 3 serializers and giving them 
new identifiers. It keeps identifier 31/33 wire compatibility when swapping the 
Jackson 2 module for the Jackson 3 one. The trade-off is that the two modules 
cannot be used in the same runtime, so a gradual Jackson 2 → 3 migration, or 
combining libraries that depend on different modules, is not supported.
   
   ### Modification
   - Both `JacksonSerializer` implementations check in their constructor 
whether the other module's `JacksonSerializer` class is on the classpath, and 
throw an `IllegalStateException` that names both modules if it is. Serializers 
are created eagerly by `Serialization`, so this fails ActorSystem startup.
   - The Jackson serialization docs mention the startup failure.
   
   ### Result
   Having both modules on the classpath fails fast with a clear error. Before, 
bindings were silently misrouted.
   
   ### Tests
   - `sbt "serialization-jackson/testOnly *JacksonModuleClasspathCheckSpec 
*JacksonJsonSerializerSpec" "serialization-jackson3/testOnly 
*JacksonModuleClasspathCheckSpec *JacksonJsonSerializerSpec"`: passed (98 and 
96 tests)
   - `scalafmt` and `headerCreateAll` run for the changed files
   - MiMa not run: only an addition to a `private[pekko]` `@InternalApi` object
   
   ### References
   Refs #3671
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to