From 261cd9fded4f94a5d5a1b04978e343557b0ab394 Mon Sep 17 00:00:00 2001 From: fhanik Date: Mon, 13 Aug 2007 17:23:04 +0000 Subject: [PATCH] protect against a NPE when a member disappears git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@565433 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java index 2261f7dc6..f6acac5e9 100644 --- a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java +++ b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java @@ -511,7 +511,7 @@ public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements while (i.hasNext()) { Map.Entry e = (Map.Entry) i.next(); MapEntry entry = (MapEntry) super.get(e.getKey()); - if ( entry.isSerializable() ) { + if ( entry != null && entry.isSerializable() ) { boolean copy = (mapmsg.getMsgType() == mapmsg.MSG_STATE_COPY); MapMessage me = new MapMessage(mapContextName, copy?MapMessage.MSG_COPY:MapMessage.MSG_PROXY, @@ -719,6 +719,7 @@ public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements while (i.hasNext()) { Map.Entry e = (Map.Entry) i.next(); MapEntry entry = (MapEntry) super.get(e.getKey()); + if (entry==null) continue; if (entry.isPrimary() && inSet(member,entry.getBackupNodes())) { if (log.isDebugEnabled()) log.debug("[1] Primary choosing a new backup"); try { @@ -977,7 +978,7 @@ public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements while (i.hasNext()) { Map.Entry e = (Map.Entry) i.next(); MapEntry entry = (MapEntry) super.get(e.getKey()); - if (entry.isPrimary() && value.equals(entry.getValue())) return true; + if (entry!=null && entry.isPrimary() && value.equals(entry.getValue())) return true; }//while return false; }//end if @@ -1062,7 +1063,7 @@ public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements while ( i.hasNext() ) { Map.Entry e = (Map.Entry)i.next(); MapEntry entry = (MapEntry)super.get(e.getKey()); - if ( entry.isPrimary() && entry.getValue()!=null) values.add(entry.getValue()); + if (entry!=null && entry.isPrimary() && entry.getValue()!=null) values.add(entry.getValue()); } return Collections.unmodifiableCollection(values); } -- 2.11.0