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: [email protected]
For additional commands, e-mail: [email protected]