Author: toad
Date: 2007-07-09 20:30:17 +0000 (Mon, 09 Jul 2007)
New Revision: 14005
Modified:
trunk/freenet/src/freenet/node/InsertHandler.java
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/NodeClientCore.java
trunk/freenet/src/freenet/node/NodeDispatcher.java
trunk/freenet/src/freenet/node/RequestHandler.java
trunk/freenet/src/freenet/node/SSKInsertHandler.java
Log:
Fix spurious IllegalStateException when requests succeed from datastore or
otherwise don't need to lock a UID
Modified: trunk/freenet/src/freenet/node/InsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertHandler.java 2007-07-09 16:21:13 UTC
(rev 14004)
+++ trunk/freenet/src/freenet/node/InsertHandler.java 2007-07-09 20:30:17 UTC
(rev 14005)
@@ -79,7 +79,7 @@
Logger.error(this, "Caught in run() "+t, t);
} finally {
if(logMINOR) Logger.minor(this, "Exiting InsertHandler.run()
for "+uid);
- node.unlockUID(uid, false, true);
+ node.unlockUID(uid, false, true, false);
}
}
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2007-07-09 16:21:13 UTC (rev
14004)
+++ trunk/freenet/src/freenet/node/Node.java 2007-07-09 20:30:17 UTC (rev
14005)
@@ -1960,7 +1960,7 @@
}
}
- public void unlockUID(long uid, boolean ssk, boolean insert) {
+ public void unlockUID(long uid, boolean ssk, boolean insert, boolean
canFail) {
if(logMINOR) Logger.minor(this, "Unlocking "+uid);
Long l = new Long(uid);
completed(uid);
@@ -1969,7 +1969,7 @@
set.remove(l);
}
synchronized(runningUIDs) {
- if(!runningUIDs.remove(l))
+ if(!runningUIDs.remove(l) && !canFail)
throw new IllegalStateException("Could not
unlock "+uid+ '!');
}
}
Modified: trunk/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeClientCore.java 2007-07-09 16:21:13 UTC
(rev 14004)
+++ trunk/freenet/src/freenet/node/NodeClientCore.java 2007-07-09 20:30:17 UTC
(rev 14005)
@@ -479,7 +479,6 @@
Object o = node.makeRequestSender(key.getNodeCHK(),
node.maxHTL(), uid, null, node.getLocation(), false, localOnly, cache,
ignoreStore);
if(o instanceof CHKBlock) {
try {
- node.unlockUID(uid, false, false);
return new ClientCHKBlock((CHKBlock)o, key);
} catch (CHKVerifyException e) {
Logger.error(this, "Does not verify: "+e, e);
@@ -574,7 +573,7 @@
}
}
} finally {
- node.unlockUID(uid, false, false);
+ node.unlockUID(uid, false, false, true);
}
}
@@ -592,7 +591,6 @@
try {
SSKBlock block = (SSKBlock)o;
key.setPublicKey(block.getPubKey());
- node.unlockUID(uid, true, false);
return ClientSSKBlock.construct(block, key);
} catch (SSKVerifyException e) {
Logger.error(this, "Does not verify: "+e, e);
@@ -686,7 +684,7 @@
}
}
} finally {
- node.unlockUID(uid, true, false);
+ node.unlockUID(uid, true, false, true);
}
}
@@ -814,7 +812,7 @@
}
}
} finally {
- node.unlockUID(uid, false, true);
+ node.unlockUID(uid, false, true, true);
}
}
@@ -940,7 +938,7 @@
}
}
} finally {
- node.unlockUID(uid, true, true);
+ node.unlockUID(uid, true, true, true);
}
}
Modified: trunk/freenet/src/freenet/node/NodeDispatcher.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeDispatcher.java 2007-07-09 16:21:13 UTC
(rev 14004)
+++ trunk/freenet/src/freenet/node/NodeDispatcher.java 2007-07-09 20:30:17 UTC
(rev 14005)
@@ -186,7 +186,7 @@
} catch (NotConnectedException e) {
Logger.normal(this, "Rejecting (overload) data
request from "+m.getSource().getPeer()+": "+e);
}
- node.unlockUID(id, isSSK, false);
+ node.unlockUID(id, isSSK, false, false);
return true;
}
//if(!node.lockUID(id)) return false;
@@ -228,7 +228,7 @@
} catch (NotConnectedException e) {
Logger.normal(this, "Rejecting (overload)
insert request from "+m.getSource().getPeer()+": "+e);
}
- node.unlockUID(id, isSSK, true);
+ node.unlockUID(id, isSSK, true, false);
return true;
}
long now = System.currentTimeMillis();
Modified: trunk/freenet/src/freenet/node/RequestHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestHandler.java 2007-07-09 16:21:13 UTC
(rev 14004)
+++ trunk/freenet/src/freenet/node/RequestHandler.java 2007-07-09 20:30:17 UTC
(rev 14005)
@@ -203,7 +203,7 @@
thrown = true;
} finally {
node.removeTransferringRequestHandler(uid);
- node.unlockUID(uid, key instanceof NodeSSK, false);
+ node.unlockUID(uid, key instanceof NodeSSK, false, false);
if((!finalTransferFailed) && rs != null && status !=
RequestSender.TIMED_OUT && status != RequestSender.GENERATED_REJECTED_OVERLOAD
&& status != RequestSender.INTERNAL_ERROR && !thrown) {
int sent, rcvd;
Modified: trunk/freenet/src/freenet/node/SSKInsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/SSKInsertHandler.java 2007-07-09
16:21:13 UTC (rev 14004)
+++ trunk/freenet/src/freenet/node/SSKInsertHandler.java 2007-07-09
20:30:17 UTC (rev 14005)
@@ -83,7 +83,7 @@
Logger.error(this, "Caught "+t, t);
} finally {
if(logMINOR) Logger.minor(this, "Exiting InsertHandler.run() for
"+uid);
- node.unlockUID(uid, true, true);
+ node.unlockUID(uid, true, true, false);
}
}