[ 
https://issues.apache.org/jira/browse/CURATOR-394?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15951417#comment-15951417
 ] 

ASF GitHub Bot commented on CURATOR-394:
----------------------------------------

Github user Randgalt commented on a diff in the pull request:

    https://github.com/apache/curator/pull/208#discussion_r109219343
  
    --- 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 --
    
    Good point - I'll do that


> 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)

Reply via email to