GEODE-3406: Address more PR feedback Signed-off-by: Alexander Murmann <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/geode/repo Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/0cc60434 Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/0cc60434 Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/0cc60434 Branch: refs/heads/develop Commit: 0cc60434cd75814e755b88be39af53b32d53faeb Parents: a4fc1dd Author: Hitesh Khamesra <[email protected]> Authored: Fri Aug 18 15:10:47 2017 -0700 Committer: Hitesh Khamesra <[email protected]> Committed: Tue Aug 22 10:55:48 2017 -0700 ---------------------------------------------------------------------- .../internal/tcpserver/TcpServer.java | 18 +++--- .../ClientProtoclMessageHandlerLoader.java | 64 -------------------- .../tier/sockets/MessageHandlerFactory.java | 15 +++++ .../cache/tier/sockets/TcpServerFactory.java | 15 +++++ .../tier/sockets/TcpServerFactoryTest.java | 15 +++++ 5 files changed, 53 insertions(+), 74 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/geode/blob/0cc60434/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java index d471062..83f87ee 100755 --- a/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java +++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java @@ -381,16 +381,11 @@ public class TcpServer { } else { rejectUnknownProtocolConnection(socket, gossipVersion); } - } else { - if (gossipVersion <= getCurrentGossipVersion() - && GOSSIP_TO_GEMFIRE_VERSION_MAP.containsKey(gossipVersion)) { - // Create a versioned stream to remember sender's GemFire version - versionOrdinal = (short) GOSSIP_TO_GEMFIRE_VERSION_MAP.get(gossipVersion); - } else { - // Close the socket. We can not accept requests from a newer version - rejectUnknownProtocolConnection(socket, gossipVersion); - return; - } + } else if (gossipVersion <= getCurrentGossipVersion() + && GOSSIP_TO_GEMFIRE_VERSION_MAP.containsKey(gossipVersion)) { + // Create a versioned stream to remember sender's GemFire version + versionOrdinal = (short) GOSSIP_TO_GEMFIRE_VERSION_MAP.get(gossipVersion); + if (Version.GFE_71.compareTo(versionOrdinal) <= 0) { // Recent versions of TcpClient will send the version ordinal versionOrdinal = input.readShort(); @@ -434,6 +429,9 @@ public class TcpServer { } handler.endResponse(request, startTime); + } else { + // Close the socket. We can not accept requests from a newer version + rejectUnknownProtocolConnection(socket, gossipVersion); } } catch (EOFException ignore) { // client went away - ignore http://git-wip-us.apache.org/repos/asf/geode/blob/0cc60434/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtoclMessageHandlerLoader.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtoclMessageHandlerLoader.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtoclMessageHandlerLoader.java deleted file mode 100644 index 6654757..0000000 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtoclMessageHandlerLoader.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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.geode.internal.cache.tier.sockets; - -import java.io.IOException; -import java.net.Socket; -import java.util.Iterator; -import java.util.ServiceLoader; - -import org.apache.geode.internal.cache.InternalCache; -import org.apache.geode.internal.cache.tier.Acceptor; -import org.apache.geode.internal.cache.tier.CachedRegionHelper; -import org.apache.geode.internal.security.SecurityService; - -/** - * Creates instances of ServerConnection based on the connection mode provided. - */ -public class ClientProtoclMessageHandlerLoader { - private static ClientProtocolMessageHandler protobufProtocolHandler; - private static final Object protocolLoadLock = new Object(); - - public static ClientProtocolMessageHandler load() { - if (protobufProtocolHandler != null) { - return protobufProtocolHandler; - } - - synchronized (protocolLoadLock) { - if (protobufProtocolHandler != null) { - return protobufProtocolHandler; - } - - ServiceLoader<ClientProtocolMessageHandler> loader = - ServiceLoader.load(ClientProtocolMessageHandler.class); - Iterator<ClientProtocolMessageHandler> iterator = loader.iterator(); - - if (!iterator.hasNext()) { - throw new ServiceLoadingFailureException( - "ClientProtocolMessageHandler implementation not found in JVM"); - } - - ClientProtocolMessageHandler returnValue = iterator.next(); - - if (iterator.hasNext()) { - throw new ServiceLoadingFailureException( - "Multiple service implementations found for ClientProtocolMessageHandler"); - } - - return returnValue; - } - } -} http://git-wip-us.apache.org/repos/asf/geode/blob/0cc60434/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/MessageHandlerFactory.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/MessageHandlerFactory.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/MessageHandlerFactory.java index fd261d7..2aca8c2 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/MessageHandlerFactory.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/MessageHandlerFactory.java @@ -1,3 +1,18 @@ +/* + * 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.geode.internal.cache.tier.sockets; import java.util.Iterator; http://git-wip-us.apache.org/repos/asf/geode/blob/0cc60434/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactory.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactory.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactory.java index 991ed75..9c6bd8c 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactory.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactory.java @@ -1,3 +1,18 @@ +/* + * 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.geode.internal.cache.tier.sockets; import java.net.InetAddress; http://git-wip-us.apache.org/repos/asf/geode/blob/0cc60434/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactoryTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactoryTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactoryTest.java index 7d40d01..b5c1951 100644 --- a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactoryTest.java +++ b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactoryTest.java @@ -1,3 +1,18 @@ +/* + * 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.geode.internal.cache.tier.sockets; import static org.junit.Assert.*;
