You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2019/12/06 23:29:56 UTC

[geode] 03/03: remove dependency on GemFireIOException and make a concrete list of remaining exception dependencies

This is an automated email from the ASF dual-hosted git repository.

bschuchardt pushed a commit to branch feature/GEODE-7556
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 18d34a2f810cc6cea9e654a80c4aeb33c781f847
Author: Bruce Schuchardt <bs...@pivotal.io>
AuthorDate: Fri Dec 6 15:28:52 2019 -0800

    remove dependency on GemFireIOException and make a concrete list of remaining exception dependencies
---
 .../gms/messenger/JGroupsMessengerJUnitTest.java   | 14 +++++------
 .../membership/gms/MembershipIOException.java      | 27 ++++++++++++++++++++++
 .../membership/gms/messenger/JGroupsMessenger.java | 15 ++++++------
 .../sanctioned-geode-core-serializables.txt        |  1 +
 .../MembershipDependenciesJUnitTest.java           | 18 +++++++++++++--
 5 files changed, 59 insertions(+), 16 deletions(-)

diff --git a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
index 351b248..d2b7bfc 100755
--- a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
@@ -67,7 +67,6 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.ForcedDisconnectException;
-import org.apache.geode.GemFireIOException;
 import org.apache.geode.SerializationException;
 import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
@@ -77,6 +76,7 @@ import org.apache.geode.distributed.internal.membership.InternalDistributedMembe
 import org.apache.geode.distributed.internal.membership.adapter.ServiceConfig;
 import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
 import org.apache.geode.distributed.internal.membership.gms.MemberIdentifierFactoryImpl;
+import org.apache.geode.distributed.internal.membership.gms.MembershipIOException;
 import org.apache.geode.distributed.internal.membership.gms.Services;
 import org.apache.geode.distributed.internal.membership.gms.Services.Stopper;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
@@ -289,14 +289,14 @@ public class JGroupsMessengerJUnitTest {
       when(msg.getDSFID()).thenReturn((int) DataSerializableFixedID.HEARTBEAT_RESPONSE);
 
       // for code coverage we need to test with both a SerializationException and
-      // an IOException. The former is wrapped in a GemfireIOException while the
+      // an IOException. The former is wrapped in a MembershipIOException while the
       // latter is not
       doThrow(new SerializationException("")).when(msg).toData(any(DataOutput.class),
           any(SerializationContext.class));
       try {
         messenger.send(msg);
         fail("expected a failure");
-      } catch (GemFireIOException e) {
+      } catch (MembershipIOException e) {
         // success
       }
       if (enableMcast) {
@@ -307,7 +307,7 @@ public class JGroupsMessengerJUnitTest {
       try {
         messenger.send(msg);
         fail("expected a failure");
-      } catch (GemFireIOException e) {
+      } catch (MembershipIOException e) {
         // success
       }
     }
@@ -432,7 +432,7 @@ public class JGroupsMessengerJUnitTest {
       interceptor.collectMessages = true;
       try {
         messenger.sendUnreliably(msg);
-      } catch (GemFireIOException e) {
+      } catch (MembershipIOException e) {
         fail("expected success");
       }
       if (enableMcast) {
@@ -943,8 +943,8 @@ public class JGroupsMessengerJUnitTest {
       MemberIdentifier mbr = createAddress(1234);
       messenger.scheduledMcastSeqnos.put(mbr, new JGroupsMessenger.MessageTracker(30));
       messenger.waitForMessageState(mbr, state);
-      fail("expected a GemFireIOException to be thrown");
-    } catch (GemFireIOException e) {
+      fail("expected a MembershipIOException to be thrown");
+    } catch (MembershipIOException e) {
       // pass
     }
   }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipIOException.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipIOException.java
new file mode 100644
index 0000000..29a9b0d
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipIOException.java
@@ -0,0 +1,27 @@
+/*
+ * 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.distributed.internal.membership.gms;
+
+public class MembershipIOException extends RuntimeException {
+  private static final long serialVersionUID = -4952945536387123344L;
+
+  public MembershipIOException(String message) {
+    super(message);
+  }
+
+  public MembershipIOException(String message, Throwable cause) {
+    super(message, cause);
+  }
+}
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
index f04816a..0ea55fa 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
@@ -67,7 +67,6 @@ import org.jgroups.util.Digest;
 import org.jgroups.util.UUID;
 
 import org.apache.geode.GemFireConfigException;
-import org.apache.geode.GemFireIOException;
 import org.apache.geode.SystemConnectException;
 import org.apache.geode.alerting.internal.spi.AlertingAction;
 import org.apache.geode.annotations.internal.MutableForTesting;
@@ -78,6 +77,7 @@ import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
 import org.apache.geode.distributed.internal.membership.gms.GMSUtil;
 import org.apache.geode.distributed.internal.membership.gms.InternalMembershipException;
 import org.apache.geode.distributed.internal.membership.gms.MemberDisconnectedException;
+import org.apache.geode.distributed.internal.membership.gms.MembershipIOException;
 import org.apache.geode.distributed.internal.membership.gms.Services;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberData;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
@@ -656,7 +656,7 @@ public class JGroupsMessenger implements Messenger {
             Long.toString((warnTime - startTime) / 1000L), sender, received, seqno);
       }
       if (now >= quitTime) {
-        throw new GemFireIOException("Multicast operations from " + sender
+        throw new InterruptedException("Multicast operations from " + sender
             + " did not distribute within " + (now - startTime) + " milliseconds");
       }
       Thread.sleep(50);
@@ -882,18 +882,19 @@ public class JGroupsMessenger implements Messenger {
 
       msg.setBuffer(out_stream.toByteArray());
       services.getStatistics().endMsgSerialization(start);
-    } catch (IOException | GemFireIOException ex) {
+    } catch (IOException | MembershipIOException ex) {
       logger.warn("Error serializing message", ex);
-      if (ex instanceof GemFireIOException) {
-        throw (GemFireIOException) ex;
+      if (ex instanceof MembershipIOException) {
+        throw (MembershipIOException) ex;
       } else {
-        GemFireIOException ioe = new GemFireIOException("Error serializing message");
+        MembershipIOException ioe = new MembershipIOException("Error serializing message");
         ioe.initCause(ex);
         throw ioe;
       }
     } catch (Exception ex) {
       logger.warn("Error serializing message", ex);
-      GemFireIOException ioe = new GemFireIOException("Error serializing message", ex.getCause());
+      MembershipIOException ioe =
+          new MembershipIOException("Error serializing message", ex.getCause());
       throw ioe;
     }
     return msg;
diff --git a/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
index 3370686..cbff922 100644
--- a/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
+++ b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
@@ -261,6 +261,7 @@ org/apache/geode/distributed/internal/locks/DistributedMemberLock$LockReentryPol
 org/apache/geode/distributed/internal/locks/LockGrantorDestroyedException,true,-3540124531032570817
 org/apache/geode/distributed/internal/membership/gms/InternalMembershipException,true,-6628379091114414599
 org/apache/geode/distributed/internal/membership/gms/MemberDisconnectedException,true,-3649273301807236514
+org/apache/geode/distributed/internal/membership/gms/MembershipIOException,true,-4952945536387123344
 org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave$ViewAbandonedException,false
 org/apache/geode/distributed/internal/membership/gms/messages/InstallViewMessage$messageType,false
 org/apache/geode/internal/ConfigSource,true,-4097017272431018553,description:java/lang/String,type:org/apache/geode/internal/ConfigSource$Type
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java
index 7010767..1e9975b 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java
@@ -30,10 +30,14 @@ import com.tngtech.archunit.lang.ArchRule;
 import org.junit.runner.RunWith;
 
 import org.apache.geode.CancelCriterion;
-import org.apache.geode.GemFireException;
+import org.apache.geode.CancelException;
+import org.apache.geode.GemFireConfigException;
+import org.apache.geode.SystemConnectException;
 import org.apache.geode.alerting.internal.spi.AlertingAction;
 import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.Locator;
+import org.apache.geode.distributed.internal.DistributionException;
 import org.apache.geode.distributed.internal.LocatorStats;
 import org.apache.geode.distributed.internal.membership.adapter.LocalViewMessage;
 import org.apache.geode.distributed.internal.tcpserver.ConnectionWatcher;
@@ -46,7 +50,10 @@ import org.apache.geode.internal.concurrent.ConcurrentHashSet;
 import org.apache.geode.internal.net.SocketCreator;
 import org.apache.geode.internal.net.SocketCreatorFactory;
 import org.apache.geode.internal.security.SecurableCommunicationChannel;
+import org.apache.geode.internal.tcp.MemberShunnedException;
 import org.apache.geode.internal.util.JavaWorkarounds;
+import org.apache.geode.security.AuthenticationRequiredException;
+import org.apache.geode.security.GemFireSecurityException;
 
 @RunWith(ArchUnitRunner.class)
 @AnalyzeClasses(packages = "org.apache.geode.distributed.internal.membership.gms..",
@@ -109,7 +116,14 @@ public class MembershipDependenciesJUnitTest {
               .or(type(LocatorStats.class))
 
               // TODO: Figure out what to do with exceptions
-              .or(assignableTo(GemFireException.class))
+              .or(type(AuthenticationRequiredException.class))
+              .or(type(CancelException.class))
+              .or(type(DistributionException.class))
+              .or(type(DistributedSystemDisconnectedException.class))
+              .or(type(GemFireSecurityException.class))
+              .or(type(GemFireConfigException.class))
+              .or(type(MemberShunnedException.class))
+              .or(type(SystemConnectException.class))
 
               // TODO: Serialization needs to become its own module
               .or(type(InternalDataSerializer.class)) // still used by GMSLocator