Author: toad
Date: 2006-06-10 20:36:46 +0000 (Sat, 10 Jun 2006)
New Revision: 9139
Modified:
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/Version.java
Log:
800: Re-entrancy/locking changes relating to peer node backoff reasons
structure on Node.
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2006-06-10 19:19:45 UTC (rev
9138)
+++ trunk/freenet/src/freenet/node/Node.java 2006-06-10 20:36:46 UTC (rev
9139)
@@ -3006,28 +3006,33 @@
/**
* Add a PeerNode routing backoff reason to the map
*/
- public synchronized void addPeerNodeRoutingBackoffReason(String
peerNodeRoutingBackoffReason, PeerNode peerNode) {
- HashSet reasonSet = null;
-
if(peerNodeRoutingBackoffReasons.containsKey(peerNodeRoutingBackoffReason)) {
- reasonSet = (HashSet)
peerNodeRoutingBackoffReasons.get(peerNodeRoutingBackoffReason);
- if(reasonSet.contains(peerNode)) {
- Logger.error(this, "addPeerNodeRoutingBackoffReason():
identity '"+peerNode.getIdentityString()+"' already in
peerNodeRoutingBackoffReasons as "+peerNode+" with status code
"+peerNodeRoutingBackoffReason);
- return;
+ public void addPeerNodeRoutingBackoffReason(String
peerNodeRoutingBackoffReason, PeerNode peerNode) {
+ synchronized(peerNodeRoutingBackoffReasons) {
+ HashSet reasonSet = null;
+
if(peerNodeRoutingBackoffReasons.containsKey(peerNodeRoutingBackoffReason)) {
+ reasonSet = (HashSet)
peerNodeRoutingBackoffReasons.get(peerNodeRoutingBackoffReason);
+ if(reasonSet.contains(peerNode)) {
+ Logger.error(this,
"addPeerNodeRoutingBackoffReason(): identity '"+peerNode.getIdentityString()+"'
already in peerNodeRoutingBackoffReasons as "+peerNode+" with status code
"+peerNodeRoutingBackoffReason);
+ return;
+ }
+
peerNodeRoutingBackoffReasons.remove(peerNodeRoutingBackoffReason);
+ } else {
+ reasonSet = new HashSet();
}
-
peerNodeRoutingBackoffReasons.remove(peerNodeRoutingBackoffReason);
- } else {
- reasonSet = new HashSet();
+ Logger.minor(this, "addPeerNodeRoutingBackoffReason(): adding
PeerNode for '"+peerNode.getIdentityString()+"' with status code
"+peerNodeRoutingBackoffReason);
+ reasonSet.add(peerNode);
+ peerNodeRoutingBackoffReasons.put(peerNodeRoutingBackoffReason,
reasonSet);
}
- Logger.minor(this, "addPeerNodeRoutingBackoffReason(): adding PeerNode
for '"+peerNode.getIdentityString()+"' with status code
"+peerNodeRoutingBackoffReason);
- reasonSet.add(peerNode);
- peerNodeRoutingBackoffReasons.put(peerNodeRoutingBackoffReason,
reasonSet);
}
/**
* What are the currently tracked PeerNode routing backoff reasons?
*/
public String [] getPeerNodeRoutingBackoffReasons() {
- String [] reasonStrings = (String [])
peerNodeRoutingBackoffReasons.keySet().toArray(new
String[peerNodeRoutingBackoffReasons.size()]);
+ String [] reasonStrings;
+ synchronized(peerNodeRoutingBackoffReasons) {
+ reasonStrings = (String [])
peerNodeRoutingBackoffReasons.keySet().toArray(new
String[peerNodeRoutingBackoffReasons.size()]);
+ }
Arrays.sort(reasonStrings);
return reasonStrings;
}
@@ -3037,12 +3042,14 @@
*/
public int getPeerNodeRoutingBackoffReasonSize(String
peerNodeRoutingBackoffReason) {
HashSet reasonSet = null;
-
if(peerNodeRoutingBackoffReasons.containsKey(peerNodeRoutingBackoffReason)) {
- reasonSet = (HashSet)
peerNodeRoutingBackoffReasons.get(peerNodeRoutingBackoffReason);
- } else {
- reasonSet = new HashSet();
+ synchronized(peerNodeRoutingBackoffReasons) {
+
if(peerNodeRoutingBackoffReasons.containsKey(peerNodeRoutingBackoffReason)) {
+ reasonSet = (HashSet)
peerNodeRoutingBackoffReasons.get(peerNodeRoutingBackoffReason);
+ return reasonSet.size();
+ } else {
+ return 0;
+ }
}
- return reasonSet.size();
}
/**
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-06-10 19:19:45 UTC (rev
9138)
+++ trunk/freenet/src/freenet/node/Version.java 2006-06-10 20:36:46 UTC (rev
9139)
@@ -18,7 +18,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 799;
+ private static final int buildNumber = 800;
/** Oldest build of Fred we will talk to */
private static final int lastGoodBuild = 765;