Author: markt Date: Wed Mar 26 14:48:32 2014 New Revision: 1581872 URL: http://svn.apache.org/r1581872 Log: Locks should be outside try/finally
Modified: tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java Modified: tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java?rev=1581872&r1=1581871&r2=1581872&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java Wed Mar 26 14:48:32 2014 @@ -416,10 +416,9 @@ public abstract class AbstractReplicated } //check to see if the message is diffable MapMessage msg = null; - if (rentry != null && rentry.isDiffable() && - (isDirty || complete)) { + if (rentry != null && rentry.isDiffable() && (isDirty || complete)) { + rentry.lock(); try { - rentry.lock(); //construct a diff message msg = new MapMessage(mapContextName, MapMessage.MSG_BACKUP, true, (Serializable) entry.getKey(), null, @@ -432,7 +431,6 @@ public abstract class AbstractReplicated } finally { rentry.unlock(); } - } if (msg == null && complete) { //construct a complete @@ -440,7 +438,6 @@ public abstract class AbstractReplicated false, (Serializable) entry.getKey(), (Serializable) entry.getValue(), null, entry.getPrimary(),entry.getBackupNodes()); - } if (msg == null) { //construct a access message @@ -656,8 +653,8 @@ public abstract class AbstractReplicated if (entry.getValue() instanceof ReplicatedMapEntry) { ReplicatedMapEntry diff = (ReplicatedMapEntry) entry.getValue(); if (mapmsg.isDiff()) { + diff.lock(); try { - diff.lock(); diff.applyDiff(mapmsg.getDiffValue(), 0, mapmsg.getDiffValue().length); } catch (Exception x) { log.error("Unable to apply diff to key:" + entry.getKey(), x); @@ -1259,8 +1256,8 @@ public abstract class AbstractReplicated public void apply(byte[] data, int offset, int length, boolean diff) throws IOException, ClassNotFoundException { if (isDiffable() && diff) { ReplicatedMapEntry rentry = (ReplicatedMapEntry) value; + rentry.lock(); try { - rentry.lock(); rentry.applyDiff(data, offset, length); } finally { rentry.unlock(); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org