Here I have a suggestion, because I mentioned Flink2.0 earlier, I am wondering if there is a possibility: whether the user can perform the migration of all states to Kryo5 when performing the first start-up task of migrating to version 2.0 in the future, until we give up maintaining Kryo2 later
Don't know if my idea coincides with Chesnay's Chesnay Schepler <ches...@apache.org> 于2023年6月1日周四 23:25写道: > > The version in the state is the serializer version, and applies to the > entire state, independent of what it contains. > If you use Kryo2 for reading and Kryo5 for writing (which also implies > writing the new serializer version into state), then I'd assume that a > migration is an all-or-nothing kind of deal. > IOW, you'd have to load a savepoint and write out an entirely new > savepoint with the new state. > Otherwise you may have only re-written part of the checkpoint, and now > contains a mix of Kryo2/Kryo5 serialized classes, which should then fail > _hard_ on any recovery attempt because we wouldn't use Kryo2 to read > anything. > > If I'm right, then as is this sounds like quite a trap for users to fall > into because from what I gathered this is the default behavior in the PR > (I could be wrong though since I haven't fully dug through the 8k lines > PR yet...) > > What we kind of want is this: > 1) Kryo5 is used as the default for new jobs. (maybe not even that, > making it an explicit opt-in) > 2) Kryo2 is used for reading AND writing for existing* jobs by default. > 3) Users can explicitly (and easily!) do a full migration of their jobs, > after which 2) should no longer apply. > > > > In the PR you mentioned running into issues on Java 17; to have have > some error stacktraces and examples data/serializers still around? > > On 30/05/2023 00:38, Kurt Ostfeld wrote: > >> I’d assumed that there wasn’t a good way to migrate state stored with an > >> older version of Kryo to a newer version - if you’ve solved that, kudos. > > I hope I've solved this. The pull request is supposed to do exactly this. > > Please let me know if you can propose a scenario that would break this. > > > > The pull-request has both Kryo 2.x and 5.x dependencies. It looks at the > > state version number written to the state to determine which version of > > Kryo to use for deserialization. Kryo 2.x is not used to write new state. > > > > ------- Original Message ------- > > On Monday, May 29th, 2023 at 5:17 PM, Ken Krugler > > <kkrugler_li...@transpac.com> wrote: > > > > > >> > >> Hi Kurt, > >> > >> I personally think it’s a very nice improvement, and that the longer-term > >> goal of removing built-in Kryo support for state serialization (while a > >> good one) warrants a separate FLIP. > >> > >> Perhaps an intermediate approach would be to disable the use of Kryo for > >> state serialization by default, and force a user to disregard warnings and > >> explicitly enable it if they want to go down that path. > >> > >> I’d assumed that there wasn’t a good way to migrate state stored with an > >> older version of Kryo to a newer version - if you’ve solved that, kudos. > >> > >> — Ken > >> > >> > >>> On May 29, 2023, at 2:21 PM, Kurt Ostfeld kurtostf...@proton.me.INVALID > >>> wrote: > >>> > >>> Hi everyone. I would like to start the discussion thread for FLIP-317: > >>> Upgrade Kryo from 2.24.0 to 5.5.0 [1]. > >>> > >>> There is a pull-request associated with this linked in the FLIP. > >>> > >>> I'd particularly like to hear about: > >>> > >>> - Chesnay Schepler's request to consider removing Kryo serializers from > >>> the execution config. Is this a reasonable task to add into this FLIP? Is > >>> there consensus on how to resolve that? Would that be better addressed in > >>> a separate future FLIP after the Kryo upgrade FLIP is completed? > >>> > >>> - Backwards compatibility. The automated CI tests have a lot of backwards > >>> compatibility tests that are passing. I also wrote a Flink application > >>> with keyed state using custom Kryo v2 serializers and then an upgraded > >>> version with both Kryo v2 and Kryo v5 serializers to stress test the > >>> upgrade process. I'd like to hear about additional scenarios that need to > >>> be tested. > >>> > >>> - Is this worth pursuing or is the Flink project looking to go in a > >>> different direction? I'd like to do some more work on the pull request if > >>> this is being seriously considered for adoption. > >>> > >>> I'm looking forward to hearing everyone's feedback and suggestions. > >>> > >>> Thank you, > >>> Kurt > >>> > >>> [1] > >>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-317%3A+Upgrade+Kryo+from+2.24.0+to+5.5.0 > >> > >> -------------------------- > >> Ken Krugler > >> http://www.scaleunlimited.com > >> Custom big data solutions > >> Flink, Pinot, Solr, Elasticsearch > >> > -- Best ConradJam