[
https://issues.apache.org/jira/browse/CURATOR-394?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15950397#comment-15950397
]
ASF GitHub Bot commented on CURATOR-394:
----------------------------------------
Github user lvfangmin commented on a diff in the pull request:
https://github.com/apache/curator/pull/208#discussion_r109095711
--- Diff:
curator-x-discovery/src/test/java/org/apache/curator/x/discovery/details/NewServiceInstance.java
---
@@ -0,0 +1,148 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.curator.x.discovery.details;
+
+import com.google.common.base.Preconditions;
+import org.apache.curator.x.discovery.ServiceType;
+import org.apache.curator.x.discovery.UriSpec;
+import org.codehaus.jackson.annotate.JsonTypeInfo;
+import org.codehaus.jackson.annotate.JsonTypeInfo.Id;
+import java.net.URI;
+import java.util.Date;
+
+/**
+ * POJO that represents a service instance
+ */
+class NewServiceInstance<T>
+{
+ private final String name;
+ private final String id;
+ private final String address;
+ private final Integer port;
+ private final Integer sslPort;
+ private final T payload;
+ private final long registrationTimeUTC;
+ private final ServiceType serviceType;
+ private final UriSpec uriSpec;
+ private final boolean enabled;
+ private final String new1;
+ private final Long new2;
+ private final Date new3;
+ private final URI new4;
+
--- End diff --
These test fields will be removed when landing the code, right?
> UnrecognizedPropertyException: "enabled" incompatibility
> --------------------------------------------------------
>
> Key: CURATOR-394
> URL: https://issues.apache.org/jira/browse/CURATOR-394
> Project: Apache Curator
> Issue Type: Bug
> Components: Recipes
> Affects Versions: 2.12.0
> Reporter: Gian Merlino
>
> When doing a rolling upgrade of our services from Curator 2.10.0 to Curator
> 2.12.0 we noticed some of the non-upgraded services started throwing this
> error. The cause seems to the combination of a new field added to
> ServiceInstance in CURATOR-275, and the lack of an "ignore unknown
> properties" setting on the ObjectMapper used by Curator 2.10.0.
> This makes it so clients need to be upgraded before services. But if you have
> a cluster where some services are also clients of other services (or of a
> service they are a part of) then I don't see a way to do a rolling upgrade
> with the way things currently are. Whatever instance you upgrade first will
> start announcing itself in a way that breaks instances running the previous
> version of the code. This doesn't seem to be configurable either, so the new
> "enabled" field can't be omitted from the serialized form.
> One possible solution is to revert CURATOR-275, add an "ignore unknown
> properties" to the ObjectMapper, and then re-introduce CURATOR-275 in a
> future release. That'd create a "you must go through release X first to
> upgrade to release Y" situation, but it would at least make it possible to do
> rolling updates.
> Another possible solution is to accept that clients always need to be
> upgraded before services, and accept that if you can't do this, it's
> impossible to update without downtime. This seems like something that'd be
> good to avoid though.
> {code}
> 2017-03-23 16:22:35,652
> [DruidTaskResolver[com.metamx.tranquility.druid.IndexService@37a0ec3c]] WARN
> c.m.t.finagle.DruidTaskResolver - Poll failed, trying again
> at[2017-03-23T16:23:10.899Z].
> org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized
> field "enabled" (Class org.apache.curator.x.discovery.ServiceInstance), not
> marked as ignorable
> at [Source: [B@e9cde06; line: 1, column: 226] (through reference chain:
> org.apache.curator.x.discovery.ServiceInstance["enabled"])
> at
> org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)
> ~[org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar:1.9.13]
> at
> org.codehaus.jackson.map.deser.StdDeserializationContext.unknownFieldException(StdDeserializationContext.java:267)
> ~[org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar:1.9.13]
> at
> org.codehaus.jackson.map.deser.std.StdDeserializer.reportUnknownProperty(StdDeserializer.java:673)
> ~[org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar:1.9.13]
> at
> org.codehaus.jackson.map.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:659)
> ~[org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar:1.9.13]
> at
> org.codehaus.jackson.map.deser.BeanDeserializer.handleUnknownProperty(BeanDeserializer.java:1365)
> ~[org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar:1.9.13]
> at
> org.codehaus.jackson.map.deser.BeanDeserializer._handleUnknown(BeanDeserializer.java:725)
> ~[org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar:1.9.13]
> at
> org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:703)
> ~[org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar:1.9.13]
> at
> org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
> ~[org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar:1.9.13]
> at
> org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732)
> ~[org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar:1.9.13]
> at
> org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1973)
> ~[org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar:1.9.13]
> at
> org.apache.curator.x.discovery.details.JsonInstanceSerializer.deserialize(JsonInstanceSerializer.java:50)
> ~[org.apache.curator.curator-x-discovery-2.10.0.jar:na]
> at
> org.apache.curator.x.discovery.details.ServiceCacheImpl.addInstance(ServiceCacheImpl.java:193)
> ~[org.apache.curator.curator-x-discovery-2.10.0.jar:na]
> at
> org.apache.curator.x.discovery.details.ServiceCacheImpl.start(ServiceCacheImpl.java:96)
> ~[org.apache.curator.curator-x-discovery-2.10.0.jar:na]
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)