Author: toad
Date: 2006-06-14 20:24:14 +0000 (Wed, 14 Jun 2006)
New Revision: 9201
Modified:
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/PacketSender.java
trunk/freenet/src/freenet/node/Version.java
Log:
813: Declare the watchdog variable volatile. Write the new noderef to
node-*.bak first then rename it, rather than writing it to the original and
failing over to the backup.
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2006-06-14 19:56:15 UTC (rev
9200)
+++ trunk/freenet/src/freenet/node/Node.java 2006-06-14 20:24:14 UTC (rev
9201)
@@ -725,21 +725,36 @@
}
public void writeNodeFile() {
+ writeNodeFile(new File(nodeDir, "node-"+portNumber), new File(nodeDir,
"node-"+portNumber+".bak"));
+ }
+
+ private void writeNodeFile(File orig, File backup) {
+ SimpleFieldSet fs = exportPrivateFieldSet();
+
+ if(orig.exists()) backup.delete();
+
+ OutputStreamWriter osr = null;
try {
- writeNodeFile(new File(nodeDir, "node-"+portNumber), new
File(nodeDir, "node-"+portNumber+".bak"));
+ FileOutputStream fos = new FileOutputStream(backup);
+ osr = new OutputStreamWriter(fos);
+ fs.writeTo(osr);
+ osr.close();
+ if(!backup.renameTo(orig)) {
+ orig.delete();
+ if(!backup.renameTo(orig)) {
+ Logger.error(this, "Could not rename new node file
"+backup+" to "+orig);
+ }
+ }
} catch (IOException e) {
- Logger.error(this, "Cannot write node file!: "+e+" :
"+"node-"+portNumber);
+ if(osr != null) {
+ try {
+ osr.close();
+ } catch (IOException e1) {
+ Logger.error(this, "Cannot close "+backup+":
"+e1, e1);
+ }
+ }
}
}
-
- private void writeNodeFile(File orig, File backup) throws IOException {
- SimpleFieldSet fs = exportPrivateFieldSet();
- orig.renameTo(backup);
- FileOutputStream fos = new FileOutputStream(orig);
- OutputStreamWriter osr = new OutputStreamWriter(fos);
- fs.writeTo(osr);
- osr.close();
- }
private void initNodeFileSettings(RandomSource r) {
Logger.normal(this, "Creating new node file from scratch");
Modified: trunk/freenet/src/freenet/node/PacketSender.java
===================================================================
--- trunk/freenet/src/freenet/node/PacketSender.java 2006-06-14 19:56:15 UTC
(rev 9200)
+++ trunk/freenet/src/freenet/node/PacketSender.java 2006-06-14 20:24:14 UTC
(rev 9201)
@@ -30,7 +30,7 @@
long lastReportedNoPackets;
long lastReceivedPacketFromAnyNode;
/** For watchdog. 32-bit to avoid locking. */
- int lastTimeInSeconds;
+ volatile int lastTimeInSeconds;
PacketSender(Node node) {
resendPackets = new LinkedList();
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-06-14 19:56:15 UTC (rev
9200)
+++ trunk/freenet/src/freenet/node/Version.java 2006-06-14 20:24:14 UTC (rev
9201)
@@ -18,7 +18,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 812;
+ private static final int buildNumber = 813;
/** Oldest build of Fred we will talk to */
private static final int lastGoodBuild = 765;