geode-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mhan...@apache.org
Subject [geode] 03/03: GEODE-7159: Amending emergencyClose to type check before casting. Also included Optional instead of null checks (#4493)
Date Wed, 18 Dec 2019 21:46:30 GMT
This is an automated email from the ASF dual-hosted git repository.

mhanson pushed a commit to branch release/1.11.0
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 0890c4f950e27cc5bf74b534b5cc9fe8076126b5
Author: Udo Kohlmeyer <kohlmu-pivotal@users.noreply.github.com>
AuthorDate: Tue Dec 17 14:51:08 2019 -0800

    GEODE-7159: Amending emergencyClose to type check before casting. Also included Optional
instead of null checks (#4493)
    
    
    (cherry picked from commit 0f05e9ccd94c04a205ace82de6616e9bffa92fa7)
---
 .../geode/internal/cache/PoolManagerImpl.java      | 25 +++++++++++-----------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/PoolManagerImpl.java
b/geode-core/src/main/java/org/apache/geode/internal/cache/PoolManagerImpl.java
index 1d6f2f8..67488ee 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/PoolManagerImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/PoolManagerImpl.java
@@ -20,6 +20,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Optional;
 
 import org.apache.logging.log4j.Logger;
 
@@ -63,7 +64,7 @@ public class PoolManagerImpl {
   }
 
   private volatile Map<String, Pool> pools = Collections.emptyMap();
-  private volatile Iterator<Map.Entry<String, Pool>> itrForEmergencyClose = null;
+  private volatile Optional<Iterator<Pool>> itrForEmergencyClose = Optional.empty();
   private final Object poolLock = new Object();
   /**
    * True if this manager is a normal one owned by the PoolManager. False if this is a special
one
@@ -123,7 +124,7 @@ public class PoolManagerImpl {
 
       }
       pools = Collections.emptyMap();
-      itrForEmergencyClose = null;
+      itrForEmergencyClose = Optional.empty();
       if (foundClientPool) {
         // Now that the client has all the pools destroyed free up the pooled comm buffers
         ServerConnection.emptyCommBufferPool();
@@ -159,7 +160,7 @@ public class PoolManagerImpl {
       // + " and more than one pool already exists in client.");
       // }
       pools = Collections.unmodifiableMap(copy);
-      itrForEmergencyClose = copy.entrySet().iterator();
+      itrForEmergencyClose = Optional.of(copy.values().iterator());
     }
   }
 
@@ -188,7 +189,7 @@ public class PoolManagerImpl {
         return false;
       } else {
         pools = Collections.unmodifiableMap(copy);
-        itrForEmergencyClose = copy.entrySet().iterator();
+        itrForEmergencyClose = Optional.of(copy.values().iterator());
         return true;
       }
     }
@@ -289,14 +290,14 @@ public class PoolManagerImpl {
     if (impl == null) {
       return;
     }
-    Iterator<Map.Entry<String, Pool>> itr = impl.itrForEmergencyClose;
-    if (itr == null) {
-      return;
-    }
-    while (itr.hasNext()) {
-      Entry<String, Pool> next = itr.next();
-      ((PoolImpl) next.getValue()).emergencyClose();
-    }
+    impl.itrForEmergencyClose.ifPresent(poolIterator -> {
+      while (poolIterator.hasNext()) {
+        Pool pool = poolIterator.next();
+        if (pool instanceof PoolImpl) {
+          ((PoolImpl) pool).emergencyClose();
+        }
+      }
+    });
   }
 
   public static void loadEmergencyClasses() {


Mime
View raw message