Hi

从错误栈来看,是因为 `No enum constant
org.apache.flink.table.types.logical.LogicalTypeRoot.ANY ` 这个导致的无法正常
restore。首先你需要看下是否是大版本的升级(像 Jark 说的那样),如果是小版本的升级,你需要看下为什么找不到这个
LocigcalTypeRoot.ANY.

PS: 贴代码/错误栈可以使用 gist[1] 或者 pastebin[2] 这样的服务,现在邮件里看到的栈信息没有很好的分行

[1] https://gist.github.com/
[2] https://pastebin.ubuntu.com/
Best,
Congxian


Jark Wu <[email protected]> 于2020年7月7日周二 下午4:28写道:

> Hi,
>
> 问一下,你是指用1.10去恢复 1.9 作业的 savepoint/checkpoint 吗?还是指迁移到 1.10 后,无法从 failover
> 中恢复?
> 如果是前者的话,Flink SQL 目前没有保证跨大版本的 state 兼容性。所以当你从 1.9 升级到 1.10 时,作业需要放弃状态重跑。
>
> Best,
> Jark
>
> On Tue, 7 Jul 2020 at 15:54, 吴磊 <[email protected]> wrote:
>
> > 各位好:
> >     当我把作业从flink1.9.0迁移到1.10.1,且作业中使用了'group by'形式的语法时,会导致无法从cp/sp恢复,
> > 代码:
> >
> >
> > 报错如下:
> >
> > switched from RUNNING to FAILED.switched from RUNNING to
> FAILED.java.lang.Exception: Exception while creating
> StreamOperatorStateContext. at
> org.apache.flink.streaming.api.operators.StreamTaskStateInitializerImpl.streamOperatorStateContext(StreamTaskStateInitializerImpl.java:191)
> at
> org.apache.flink.streaming.api.operators.AbstractStreamOperator.initializeState(AbstractStreamOperator.java:255)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.initializeStateAndOpen(StreamTask.java:989)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.lambda$beforeInvoke$0(StreamTask.java:453)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$SynchronizedStreamTaskActionExecutor.runThrowing(StreamTaskActionExecutor.java:94)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.beforeInvoke(StreamTask.java:448)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:460)
> at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:708) at
> org.apache.flink.runtime.taskmanager.Task.run(Task.java:533) at
> java.lang.Thread.run(Thread.java:748)Caused by:
> org.apache.flink.util.FlinkException: Could not restore keyed state backend
> for KeyedProcessOperator_d26553d858836b90d15e66f459fbcb50_(2/3) from any of
> the 1 provided restore options. at
> org.apache.flink.streaming.api.operators.BackendRestorerProcedure.createAndRestore(BackendRestorerProcedure.java:135)
> at
> org.apache.flink.streaming.api.operators.StreamTaskStateInitializerImpl.keyedStatedBackend(StreamTaskStateInitializerImpl.java:304)
> at
> org.apache.flink.streaming.api.operators.StreamTaskStateInitializerImpl.streamOperatorStateContext(StreamTaskStateInitializerImpl.java:131)
> ... 9 moreCaused by:
> org.apache.flink.runtime.state.BackendBuildingException: Failed when trying
> to restore heap backend at
> org.apache.flink.runtime.state.heap.HeapKeyedStateBackendBuilder.build(HeapKeyedStateBackendBuilder.java:116)
> at
> org.apache.flink.runtime.state.filesystem.FsStateBackend.createKeyedStateBackend(FsStateBackend.java:529)
> at
> org.apache.flink.streaming.api.operators.StreamTaskStateInitializerImpl.lambda$keyedStatedBackend$1(StreamTaskStateInitializerImpl.java:288)
> at
> org.apache.flink.streaming.api.operators.BackendRestorerProcedure.attemptCreateAndRestore(BackendRestorerProcedure.java:142)
> at
> org.apache.flink.streaming.api.operators.BackendRestorerProcedure.createAndRestore(BackendRestorerProcedure.java:121)
> ... 11 moreCaused by: java.io.InvalidObjectException: enum constant ANY
> does not exist in class
> org.apache.flink.table.types.logical.LogicalTypeRoot at
> java.io.ObjectInputStream.readEnum(ObjectInputStream.java:2013) at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1569) at
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2286) at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2166) at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572) at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:430) at
> org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:576)
> at
> org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:555)
> at
> org.apache.flink.table.runtime.typeutils.BaseRowSerializer$BaseRowSerializerSnapshot.readSnapshot(BaseRowSerializer.java:306)
> at
> org.apache.flink.api.common.typeutils.TypeSerializerSnapshot.readVersionedSnapshot(TypeSerializerSnapshot.java:174)
> at
> org.apache.flink.api.common.typeutils.TypeSerializerSnapshotSerializationUtil$TypeSerializerSnapshotSerializationProxy.deserializeV2(TypeSerializerSnapshotSerializationUtil.java:179)
> at
> org.apache.flink.api.common.typeutils.TypeSerializerSnapshotSerializationUtil$TypeSerializerSnapshotSerializationProxy.read(TypeSerializerSnapshotSerializationUtil.java:150)
> at
> org.apache.flink.api.common.typeutils.TypeSerializerSnapshotSerializationUtil.readSerializerSnapshot(TypeSerializerSnapshotSerializationUtil.java:76)
> at
> org.apache.flink.runtime.state.metainfo.StateMetaInfoSnapshotReadersWriters$CurrentReaderImpl.readStateMetaInfoSnapshot(StateMetaInfoSnapshotReadersWriters.java:219)
> at
> org.apache.flink.runtime.state.KeyedBackendSerializationProxy.read(KeyedBackendSerializationProxy.java:169)
> at
> org.apache.flink.runtime.state.heap.HeapRestoreOperation.restore(HeapRestoreOperation.java:133)
> at
> org.apache.flink.runtime.state.heap.HeapKeyedStateBackendBuilder.build(HeapKeyedStateBackendBuilder.java:114)
> ... 15 moreCaused by: java.lang.IllegalArgumentException: No enum constant
> org.apache.flink.table.types.logical.LogicalTypeRoot.ANY at
> java.lang.Enum.valueOf(Enum.java:238)
> >
> >
> >   烦请各位帮助,谢谢!
> >
> >
> >
> >
>

回复