Avi Sanwal created FLINK-34561:
----------------------------------

             Summary: Downgrading flink-kubernetes-operator causes failure
                 Key: FLINK-34561
                 URL: https://issues.apache.org/jira/browse/FLINK-34561
             Project: Flink
          Issue Type: Bug
          Components: Kubernetes Operator
            Reporter: Avi Sanwal


Hi,

We are currently using flink-kubernetes-operator 1.4 version (with v1beta1 CRD) 
to manage flink deployments.

We tried an upgrade to version 1.6 version, but when we try to rollback to 1.4, 
noticed that flink-operator fails to come up with this execption:
{noformat}
Exception in thread "main" io.javaoperatorsdk.operator.OperatorException: Error 
starting operator
        at io.javaoperatorsdk.operator.Operator.start(Operator.java:125)
        at 
org.apache.flink.kubernetes.operator.FlinkOperator.run(FlinkOperator.java:215)
        at 
org.apache.flink.kubernetes.operator.FlinkOperator.main(FlinkOperator.java:229)
Caused by: io.javaoperatorsdk.operator.OperatorException: 
java.lang.IllegalStateException: 
com.fasterxml.jackson.databind.JsonMappingException: Could not deserialize 
spec, this indicates a bug... (through reference chain: 
org.apache.flink.kubernetes.operator.api.FlinkDeployment["status"]->org.apache.flink.kubernetes.operator.api.status.FlinkDeploymentStatus["lifecycleState"])
        at 
io.javaoperatorsdk.operator.api.config.ExecutorServiceManager.lambda$executeAndWaitForAllToComplete$2(ExecutorServiceManager.java:107)
        at java.base/java.util.ArrayList.forEach(Unknown Source)
        at 
io.javaoperatorsdk.operator.api.config.ExecutorServiceManager.executeAndWaitForAllToComplete(ExecutorServiceManager.java:102)
        at 
io.javaoperatorsdk.operator.api.config.ExecutorServiceManager.boundedExecuteAndWaitForAllToComplete(ExecutorServiceManager.java:82)
        at 
io.javaoperatorsdk.operator.ControllerManager.start(ControllerManager.java:36)
        at io.javaoperatorsdk.operator.Operator.start(Operator.java:120)
        ... 2 more
Caused by: java.lang.IllegalStateException: 
com.fasterxml.jackson.databind.JsonMappingException: Could not deserialize 
spec, this indicates a bug... (through reference chain: 
org.apache.flink.kubernetes.operator.api.FlinkDeployment["status"]->org.apache.flink.kubernetes.operator.api.status.FlinkDeploymentStatus["lifecycleState"])
        at 
io.javaoperatorsdk.operator.api.config.ConfigurationService$1.clone(ConfigurationService.java:112)
        at java.base/java.util.Optional.map(Unknown Source)
        at 
io.javaoperatorsdk.operator.processing.event.source.informer.InformerManager.get(InformerManager.java:175)
        at 
io.javaoperatorsdk.operator.processing.event.source.informer.ManagedInformerEventSource.get(ManagedInformerEventSource.java:110)
        at 
io.javaoperatorsdk.operator.processing.event.EventProcessor.submitReconciliationExecution(EventProcessor.java:128)
        at 
io.javaoperatorsdk.operator.processing.event.EventProcessor.handleMarkedEventForResource(EventProcessor.java:120)
        at 
io.javaoperatorsdk.operator.processing.event.EventProcessor.handleAlreadyMarkedEvents(EventProcessor.java:376)
        at 
io.javaoperatorsdk.operator.processing.event.EventProcessor.start(EventProcessor.java:371)
        at 
io.javaoperatorsdk.operator.processing.Controller.start(Controller.java:336)
        at 
io.javaoperatorsdk.operator.ControllerManager.lambda$start$0(ControllerManager.java:37)
        at 
io.javaoperatorsdk.operator.api.config.ExecutorServiceManager.lambda$executeAndWaitForAllToComplete$0(ExecutorServiceManager.java:96)
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown 
Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown 
Source)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Could not 
deserialize spec, this indicates a bug... (through reference chain: 
org.apache.flink.kubernetes.operator.api.FlinkDeployment["status"]->org.apache.flink.kubernetes.operator.api.status.FlinkDeploymentStatus["lifecycleState"])
        at 
com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:402)
        at 
com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:361)
        at 
com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:316)
        at 
com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:782)
        at 
com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)
        at 
com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:733)
        at 
io.fabric8.kubernetes.model.jackson.BeanPropertyWriterDelegate.serializeAsField(BeanPropertyWriterDelegate.java:66)
        at 
com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774)
        at 
com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)
        at 
com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
        at 
com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
        at 
com.fasterxml.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4624)
        at 
com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3869)
        at 
io.javaoperatorsdk.operator.api.config.ConfigurationService$1.clone(ConfigurationService.java:110)
        ... 14 more
Caused by: java.lang.RuntimeException: Could not deserialize spec, this 
indicates a bug...
        at 
org.apache.flink.kubernetes.operator.api.utils.SpecUtils.deserializeSpecWithMeta(SpecUtils.java:64)
        at 
org.apache.flink.kubernetes.operator.api.status.ReconciliationStatus.deserializeLastReconciledSpecWithMeta(ReconciliationStatus.java:71)
        at 
org.apache.flink.kubernetes.operator.api.status.ReconciliationStatus.deserializeLastReconciledSpec(ReconciliationStatus.java:59)
        at 
org.apache.flink.kubernetes.operator.api.status.CommonStatus.getLifecycleState(CommonStatus.java:75)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at 
com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:689)
        at 
io.fabric8.kubernetes.model.jackson.BeanPropertyWriterDelegate.serializeAsField(BeanPropertyWriterDelegate.java:66)
        at 
com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774)
        ... 24 more
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: 
Unrecognized field "ephemeralStorage" (class 
org.apache.flink.kubernetes.operator.api.spec.Resource), not marked as 
ignorable (2 known properties: "cpu", "memory"])
 at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: 
org.apache.flink.kubernetes.operator.api.spec.FlinkDeploymentSpec["jobManager"]->org.apache.flink.kubernetes.operator.api.spec.JobManagerSpec["resource"]->org.apache.flink.kubernetes.operator.api.spec.Resource["ephemeralStorage"])
        at 
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
        at 
com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1132)
        at 
com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2202)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1705)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1683)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:320)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
        at 
com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:314)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
        at 
com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:314)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
        at 
com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
        at 
com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4706)
        at 
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2879)
        at 
com.fasterxml.jackson.databind.ObjectMapper.treeToValue(ObjectMapper.java:3343)
        at 
org.apache.flink.kubernetes.operator.api.utils.SpecUtils.deserializeSpecWithMeta(SpecUtils.java:60)
        ... 34 more
{noformat}
Looks like some FlinkDeployments were created by 1.6 version and later 1.4 was 
able to handle those.

But as perĀ 
[docs|https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/operations/compatibility/],
 the FlinkDeployment created by 1.6 should have been backward compatible with 
1.4.
{quote}Starting from v1beta1 (operator version 1.0.0) we aim to provide 
backward compatibility for the already deployed Flink custom resources 
(FlinkDeployment, FlinkSessionJob).
{quote}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to