You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2016/10/04 17:03:23 UTC

[17/38] incubator-geode git commit: GEODE-1938: Update with review comments. Cleaned up the error handling for getAllPools()

GEODE-1938: Update with review comments.
Cleaned up the error handling for getAllPools()


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/4345fda7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/4345fda7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/4345fda7

Branch: refs/heads/feature/e2e-testing
Commit: 4345fda73f426755e05eaa5c8c17080bafddc4eb
Parents: 4609eac
Author: Udo Kohlmeyer <uk...@pivotal.io>
Authored: Wed Sep 28 07:44:23 2016 +1000
Committer: Udo Kohlmeyer <uk...@pivotal.io>
Committed: Wed Sep 28 07:44:23 2016 +1000

----------------------------------------------------------------------
 .../pdx/internal/ClientTypeRegistration.java    | 57 ++++++--------------
 1 file changed, 17 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4345fda7/geode-core/src/main/java/org/apache/geode/pdx/internal/ClientTypeRegistration.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/pdx/internal/ClientTypeRegistration.java b/geode-core/src/main/java/org/apache/geode/pdx/internal/ClientTypeRegistration.java
index 261cc53..8957e7f 100644
--- a/geode-core/src/main/java/org/apache/geode/pdx/internal/ClientTypeRegistration.java
+++ b/geode-core/src/main/java/org/apache/geode/pdx/internal/ClientTypeRegistration.java
@@ -41,9 +41,6 @@ import org.apache.geode.internal.cache.PoolManagerImpl;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.logging.log4j.Logger;
 
-/**
- *
- */
 public class ClientTypeRegistration implements TypeRegistration {
 
   private static final Logger logger = LogService.getLogger();
@@ -63,7 +60,7 @@ public class ClientTypeRegistration implements TypeRegistration {
       try {
         newTypeId = GetPDXIdForTypeOp.execute((ExecutablePool) pool, newType);
         newType.setTypeId(newTypeId);
-        sendTypeToAllPools(newType, newTypeId, pool);
+        sendTypeToPool(newType, newTypeId, pool);
         return newTypeId;
       } catch (ServerConnectivityException e) {
         //ignore, try the next pool.
@@ -73,7 +70,7 @@ public class ClientTypeRegistration implements TypeRegistration {
     throw returnCorrectExceptionForFailure(pools, newTypeId, lastException);
   }
 
-  private void sendTypeToAllPools(PdxType type, int id, Pool pool) {
+  private void sendTypeToPool(PdxType type, int id, Pool pool) {
     try {
       AddPDXTypeOp.execute((ExecutablePool) pool, id, type);
     } catch (ServerConnectivityException serverConnectivityException) {
@@ -102,26 +99,26 @@ public class ClientTypeRegistration implements TypeRegistration {
     if (lastException != null) {
       throw lastException;
     } else {
-      if (pools.isEmpty()) {
-        if (this.cache.isClosed()) {
-          throw this.cache.getCacheClosedException("PDX detected cache was closed", null);
-        } else {
-          throw new CacheClosedException("Client pools have been closed so the PDX type registry can not lookup a type.");
-        }
-      } else {
-        throw new InternalGemFireError("getType: Unable to determine PDXType for id " + typeId + " from existing client to server pools " + pools);
-      }
+      throw returnCorrectExceptionForFailure(pools, typeId, lastException);
     }
   }
 
-  private static Collection<Pool> getAllPools() {
+  private Collection<Pool> getAllPools() {
     Collection<Pool> pools = PoolManagerImpl.getPMI().getMap().values();
+
     for (Iterator<Pool> itr = pools.iterator(); itr.hasNext(); ) {
       PoolImpl pool = (PoolImpl) itr.next();
       if (pool.isUsedByGateway()) {
         itr.remove();
       }
     }
+
+    if (pools.isEmpty()) {
+      if (this.cache.isClosed()) {
+        throw new CacheClosedException("PDX detected cache was closed");
+      }
+      throw new CacheClosedException("Client pools have been closed so the PDX type registry is not available.");
+    }
     return pools;
   }
 
@@ -160,7 +157,7 @@ public class ClientTypeRegistration implements TypeRegistration {
     for (Pool pool : pools) {
       try {
         int result = GetPDXIdForEnumOp.execute((ExecutablePool) pool, enumInfo);
-        sendEnumIdToAllPools(enumInfo, result, pool);
+        sendEnumIdToPool(enumInfo, result, pool);
         return result;
       } catch (ServerConnectivityException e) {
         //ignore, try the next pool.
@@ -170,7 +167,7 @@ public class ClientTypeRegistration implements TypeRegistration {
     throw returnCorrectExceptionForFailure(pools, -1, lastException);
   }
 
-  private void sendEnumIdToAllPools(EnumInfo enumInfo, int id, Pool pool) {
+  private void sendEnumIdToPool(EnumInfo enumInfo, int id, Pool pool) {
     try {
       AddPDXEnumOp.execute((ExecutablePool) pool, id, enumInfo);
     } catch (ServerConnectivityException serverConnectivityException) {
@@ -211,12 +208,6 @@ public class ClientTypeRegistration implements TypeRegistration {
   @Override
   public Map<Integer, PdxType> types() {
     Collection<Pool> pools = getAllPools();
-    if (pools.isEmpty()) {
-      if (this.cache.isClosed()) {
-        throw new CacheClosedException("PDX detected cache was closed");
-      }
-      throw new CacheClosedException("Client pools have been closed so the PDX type registry is not available.");
-    }
 
     Map<Integer, PdxType> types = new HashMap<>();
     for (Pool p : pools) {
@@ -233,12 +224,6 @@ public class ClientTypeRegistration implements TypeRegistration {
   @Override
   public Map<Integer, EnumInfo> enums() {
     Collection<Pool> pools = getAllPools();
-    if (pools.isEmpty()) {
-      if (this.cache.isClosed()) {
-        throw new CacheClosedException("PDX detected cache was closed");
-      }
-      throw new CacheClosedException("Client pools have been closed so the PDX type registry is not available.");
-    }
 
     Map<Integer, EnumInfo> enums = new HashMap<>();
     for (Pool p : pools) {
@@ -277,7 +262,7 @@ public class ClientTypeRegistration implements TypeRegistration {
     ServerConnectivityException lastException = null;
     for (Pool pool : pools) {
       try {
-        sendTypeToAllPools(importedType, typeId, pool);
+        sendTypeToPool(importedType, typeId, pool);
         return;
       } catch (ServerConnectivityException e) {
         //ignore, try the next pool.
@@ -294,7 +279,7 @@ public class ClientTypeRegistration implements TypeRegistration {
     ServerConnectivityException lastException = null;
     for (Pool pool : pools) {
       try {
-        sendEnumIdToAllPools(importedInfo, enumId, pool);
+        sendEnumIdToPool(importedInfo, enumId, pool);
       } catch (ServerConnectivityException e) {
         //ignore, try the next pool.
         lastException = e;
@@ -308,15 +293,7 @@ public class ClientTypeRegistration implements TypeRegistration {
     if (lastException != null) {
       throw lastException;
     } else {
-      if (pools.isEmpty()) {
-        if (this.cache.isClosed()) {
-          throw this.cache.getCacheClosedException("PDX detected cache was closed", null);
-        } else {
-          throw new CacheClosedException("Client pools have been closed so the PDX type registry can not lookup a type.");
-        }
-      } else {
-        throw new InternalGemFireError("Unable to determine PDXType for id " + typeId);
-      }
+      throw new InternalGemFireError("Unable to determine PDXType for id " + typeId);
     }
   }