Thanks, I'll look into the bravo project. Will it just impact the MapState or all the operators? If I have a map operator which converts DataStream<MyObject> to DataStream<Tuple2<String, MyObject>>. Will this fail to recover as well if a field is added to MyObject? Jayant Ameta
On Wed, Nov 28, 2018 at 3:08 PM bupt_ljy <bupt_...@163.com> wrote: > Hi, > > It’ll fail because Flink can’t successfully deserialize the data in > savepoint into the new “MyObject” class. There is no official way to fix > this problem. However, you can take a look at the bravo project > https://github.com/king/bravo, which can help to reconstruct the > savepoint, but only with the RocksDBStateBackend now. > > Best, > Jiayi Liao > > Original Message > *Sender:* Jayant Ameta<wittyam...@gmail.com> > *Recipient:* bupt_ljy<bupt_...@163.com> > *Cc:* user<user@flink.apache.org> > *Date:* Wednesday, Nov 28, 2018 17:14 > *Subject:* Re: Flink operator UUID and serialVersionUID > > If I upgrade my flink job, and add a field in "MyObject" class. Will the > restore fail? > If so, how to handle such scenarios? Should I convert the "MyObject" > instance in json and store the string? > > Jayant Ameta > > > On Wed, Nov 28, 2018 at 1:26 PM bupt_ljy <bupt_...@163.com> wrote: > >> Hi Jayant, >> >> If you change the “MyObject” class and influence the serialized value, >> then the “MyObject” instance can’t be deserialized when restoring, which >> causes a failure of restoring. You can just use the default >> serialVersionUID instead defining it explicitly(it makes no difference if >> you do it). >> >> >> Best, >> >> Jiayi Liao >> >> Original Message >> *Sender:* Jayant Ameta<wittyam...@gmail.com> >> *Recipient:* bupt_ljy<bupt_...@163.com> >> *Cc:* user<user@flink.apache.org> >> *Date:* Wednesday, Nov 28, 2018 15:46 >> *Subject:* Re: Flink operator UUID and serialVersionUID >> >> Thanks for clarifying Jiayi. >> If there is a change in "MyObject" class, would it help to have a >> serialVersionUID defined? >> >> Thanks, >> Jayant >> >> >> On Wed, Nov 28, 2018 at 12:52 PM bupt_ljy <bupt_...@163.com> wrote: >> >>> Hi, Jayant >>> >>> 1. The uuid is an unique identifier for a specific operator, which >>> means that Flink uses the uuid to recognize the operator when restoring. >>> >>> 2. The operator has already implemented the Serializable interface so >>> you don’t need to do it explicitly. >>> >>> 3. The type information of “MyObject” should be defined in the >>> MapStateDescriptor, so no need to worry about it. >>> >>> >>> Best, >>> >>> Jiayi Liao >>> >>> Original Message >>> *Sender:* Jayant Ameta<wittyam...@gmail.com> >>> *Recipient:* user<user@flink.apache.org> >>> *Date:* Wednesday, Nov 28, 2018 15:09 >>> *Subject:* Flink operator UUID and serialVersionUID >>> >>> Hi all, I've a few questions regarding serial version: >>> >>> 1. The production ready checklist mentions using uuids >>> <https://ci.apache.org/projects/flink/flink-docs-release-1.6/ops/production_ready.html#set-uuids-for-operators> >>> for >>> operators. How is it different from setting a serialVersionUID on an >>> operator? >>> >>> 2. Which operators need to have a serialVersionUID present (or implement >>> Serializable interface)? >>> >>> 3. If I have a MapState<String, MyObject>, does MyObject need to have a >>> serialVersionUID and does it need to implement Serializable interface? >>> >>> Thanks, >>> Jayant >>> >>