Author: nextgens
Date: 2006-07-11 11:45:16 +0000 (Tue, 11 Jul 2006)
New Revision: 9557
Modified:
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/PeerNode.java
Log:
Small locking tweakings
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2006-07-11 08:59:43 UTC (rev
9556)
+++ trunk/freenet/src/freenet/node/Node.java 2006-07-11 11:45:16 UTC (rev
9557)
@@ -166,21 +166,25 @@
Logger.minor(this, "update()");
if(!checkIPUpdated()) return;
Logger.minor(this, "Inserting ARK because peers list
changed");
- synchronized(this) {
+ synchronized (inserter) {
if(inserter != null) {
// Already inserting.
// Re-insert after finished.
- shouldInsert = true;
+ synchronized(this) {
+ shouldInsert = true;
+ }
return;
}
// Otherwise need to start an insert
if(!peers.anyConnectedPeers()) {
// Can't start an insert yet
- shouldInsert = true;
+ synchronized (this) {
+ shouldInsert = true;
+ }
return;
- }
- startInserter();
+ }
}
+ startInserter();
}
private boolean checkIPUpdated() {
@@ -228,14 +232,19 @@
Logger.minor(this, "Inserting ARK: "+uri);
- synchronized (this) {
+ synchronized (inserter) {
inserter = new ClientPutter(this, b, uri,
new
ClientMetadata("text/plain") /* it won't quite fit in an SSK anyway */,
Node.this.makeClient((short)0).getInserterContext(),
chkPutScheduler,
sskPutScheduler, RequestStarter.INTERACTIVE_PRIORITY_CLASS, false, false, this);
-
- try {
- inserter.start();
+ }
+
+ try {
+ synchronized (inserter) {
+ inserter.start();
+ }
+
+ synchronized (this) {
if(fs.get("physical.udp") == null)
lastInsertedPeers = null;
else {
@@ -251,9 +260,11 @@
Logger.error(this,
"Error parsing own ref: "+e1+" : "+fs.get("physical.udp"), e1);
}
}
- } catch (InserterException e) {
- onFailure(e, inserter);
}
+ } catch (InserterException e) {
+ synchronized (inserter) {
+ onFailure(e, inserter);
+ }
}
}
@@ -267,12 +278,19 @@
public void onSuccess(BaseClientPutter state) {
Logger.minor(this, "ARK insert succeeded");
- synchronized(this) {
+ synchronized(inserter) {
inserter = null;
- if(shouldInsert) {
- shouldInsert = false;
+ boolean myShouldInsert;
+ synchronized (this) {
+ myShouldInsert = shouldInsert;
+ }
+ if(myShouldInsert) {
+ myShouldInsert = false;
startInserter();
}
+ synchronized (this){
+ shouldInsert = myShouldInsert;
+ }
}
}
@@ -288,9 +306,8 @@
} catch (InterruptedException e1) {
// Ignore
}
- synchronized(this) {
- startInserter();
- }
+
+ startInserter();
}
public void onGeneratedURI(FreenetURI uri, BaseClientPutter
state) {
@@ -307,21 +324,26 @@
public void onConnectedPeer() {
if(!checkIPUpdated()) return;
- synchronized(this) {
- if(!shouldInsert) return;
- if(inserter != null) {
- // Already inserting.
- return;
+ synchronized(inserter) {
+ synchronized (this) {
+ if(!shouldInsert) return;
}
+ // Already inserting.
+ if(inserter != null) return;
+
// Otherwise need to start an insert
if(!peers.anyConnectedPeers()) {
// Can't start an insert yet
- shouldInsert = true;
+ synchronized (this) {
+ shouldInsert = true;
+ }
return;
}
- shouldInsert = false;
- startInserter();
+ synchronized (this) {
+ shouldInsert = false;
+ }
}
+ startInserter();
}
}
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2006-07-11 08:59:43 UTC
(rev 9556)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2006-07-11 11:45:16 UTC
(rev 9557)
@@ -1551,9 +1551,11 @@
fs.put("version", version);
fs.put("myName", myName);
if(myARK != null) {
- // Decrement it because we keep the number we would like to
fetch, not the last one fetched.
- fs.put("ark.number", Long.toString(myARK.suggestedEdition-1));
- fs.put("ark.pubURI", myARK.getBaseSSK().toString(false));
+ synchronized (this) {
+ // Decrement it because we keep the number we would like to
fetch, not the last one fetched.
+ fs.put("ark.number", Long.toString(myARK.suggestedEdition-1));
+ fs.put("ark.pubURI", myARK.getBaseSSK().toString(false));
+ }
}
return fs;
}