dcos-cassandra-service icon indicating copy to clipboard operation
dcos-cassandra-service copied to clipboard

UnrecognizedPropertyException blocks rollback

Open jay-zhuang opened this issue 7 years ago • 1 comments

upgrading to a version with new property and rollback, it will throw exception UnrecognizedProperty:

Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "libmesos_location" (class com.mesosphere.dcos.cassandra.common.config.ExecutorConfig), not marked as ignorable (14 known properties: "executor_location", "api_port", "heap_mb", "command", "cassandra_location", "jreLocation", "memory_mb", "arguments", "jre_location", "java_home", "cassandraLocation", "executorLocation", "cpus", "emc_ecs_workaround"])
 at [Source: [B@28952dea; line: 15, column: 4] (through reference chain: com.mesosphere.dcos.cassandra.common.config.CassandraSchedulerConfiguration["executor"]->com.mesosphere.dcos.cassandra.common.config.ExecutorConfig["libmesos_location"])
	at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:51)
	at com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:839)
	at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1045)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1352)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperties(BeanDeserializerBase.java:1306)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:453)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1099)
	at com.fasterxml.jackson.module.afterburner.deser.SuperSonicBeanDeserializer.deserializeFromObject(SuperSonicBeanDeserializer.java:236)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:133)
	at com.fasterxml.jackson.module.afterburner.deser.SuperSonicBeanDeserializer.deserialize(SuperSonicBeanDeserializer.java:117)
	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:520)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:463)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:378)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1099)
	at com.fasterxml.jackson.module.afterburner.deser.SuperSonicBeanDeserializer.deserializeFromObject(SuperSonicBeanDeserializer.java:236)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:133)
	at com.fasterxml.jackson.module.afterburner.deser.SuperSonicBeanDeserializer.deserialize(SuperSonicBeanDeserializer.java:117)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3736)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2819)
	at com.mesosphere.dcos.cassandra.common.config.YAMLConfigurationFactory.parse(YAMLConfigurationFactory.java:26)

jay-zhuang avatar Jan 24 '17 01:01 jay-zhuang

We can fix this by setting:

ObjectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

but doing this in dcos-cassandra-service has no effect because the dcos-commons' SerializationUtils are being used. We will need to change this there.

verma7 avatar Jan 24 '17 02:01 verma7