The task to optimize the code that calls Jackson is handled by PR https://github.com/apache/pulsar/pull/19160 as a preparation. Please review since I will merge that and consider lazy consensus unless changes are requested.
In the Pulsar master code base, we are already at Java 17. It's time to add support to Jackson support classes that were added in Java 8. The draft PR is https://github.com/apache/pulsar/pull/19161 (it will be rebased after PR 19160 changes are in). I can create a PIP to formalize and document the decision before pushing for a merge for that PR. btw. The pulsar code base also includes GSON for some JSON parsing. It would be good to replace its usage with Jackson. I wonder if there's a special reason why GSON is used besides Jackson. -Lari On 2023/01/10 13:13:50 "r...@apache.org" wrote: > Hello Lari: > > Here I actually want to discuss whether it is necessary for us to introduce > Jackson modules, and what is the scope boundary we use when introducing > Jackson modules? Here are some questions about this: > > > 1. After we introduce Jackson modules, do we need to optimize the code that > originally called Jackson? > 2. After the introduction, we keep the original code using Jackson > unchanged, and only use the logic of Jackson modules in the newly added code > > If we take 1, it seems that the changes here will be relatively large. Many > Pojo objects will involve the serialization and deserialization of Json > objects, and it feels that the entire boundary is not well controlled. > > +1 for me if we're taking 2. > > -- > Thanks > Xiaolong Ran > > Lari Hotari <lhot...@apache.org> 于2023年1月9日周一 21:25写道: > > > Any change to Jackson configuration is a potential breaking change. Yes, > > it will need a PIP. > > I guess we can continue to discuss the change in this thread before I > > create an actual PIP which can be voted on. > > > > -Lari > > > > On 2023/01/09 11:53:02 丛搏 wrote: > > > Hi, Lari: > > > > > > Will it affect compatibility? If it is just an improved function, I > > > think it can also be added to the pulsar-common module. it adds the > > > dependency, so it needs PIP to discuss. > > > > > > Thanks, > > > Bo > > > > > > Lari Hotari <lhot...@apache.org> 于2023年1月9日周一 19:06写道: > > > > > > > > Hi all, > > > > > > > > Jackson has a separate Java 8 support modules for adding support for > > proper serialization and deserialization of new classes that were added in > > Java 8 (Java 8 was released in 2014). > > > > > > > > These Jackson Java 8 support modules haven't been used in the Pulsar > > code base. This is a pity. This causes a lot of pain when using Java Time > > classes in Pulsar applications or Pulsar Functions. There are ways to get > > the classes working for applications, but the documentation is missing. It > > would make things easier if the Java 8 support modules for Jackson would be > > included and registered by default. > > > > > > > > I have created a PR to register Jackson Java 8 support modules by > > default for all Pulsar components. The PR is > > https://github.com/apache/pulsar/pull/19161 . > > > > > > > > Please review and provide feedback. Do we need a PIP for this change? > > > > > > > > -Lari > > > > > >