Author: nextgens
Date: 2008-04-04 06:12:05 +0000 (Fri, 04 Apr 2008)
New Revision: 18976
Modified:
trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
trunk/freenet/src/freenet/client/async/SplitFileInserter.java
Log:
Some sync fixes
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-04-04 06:05:54 UTC (rev 18975)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-04-04 06:12:05 UTC (rev 18976)
@@ -52,7 +52,7 @@
final FetchContext fetchContext;
final long maxBlockLength;
/** Has the segment finished processing? Irreversible. */
- private boolean finished;
+ private volatile boolean finished;
private boolean startedDecode;
/** Bucket to store the data retrieved, after it has been decoded */
private Bucket decodedData;
@@ -244,8 +244,10 @@
parentFetcher.segmentFinished(SplitFileFetcherSegment.this);
} catch (IOException e) {
Logger.normal(this, "Caught bucket error?: "+e, e);
- finished = true;
- failureException = new
FetchException(FetchException.BUCKET_ERROR);
+ synchronized(this) {
+ finished = true;
+ failureException = new
FetchException(FetchException.BUCKET_ERROR);
+ }
parentFetcher.segmentFinished(SplitFileFetcherSegment.this);
return;
}
Modified: trunk/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserter.java
2008-04-04 06:05:54 UTC (rev 18975)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserter.java
2008-04-04 06:12:05 UTC (rev 18976)
@@ -22,7 +22,7 @@
public class SplitFileInserter implements ClientPutState {
- private static boolean logMINOR;
+ private boolean logMINOR;
final BaseClientPutter parent;
final InsertContext ctx;
final PutCompletionCallback cb;
@@ -38,7 +38,7 @@
private boolean haveSentMetadata;
final ClientMetadata cm;
final boolean isMetadata;
- private boolean finished;
+ private volatile boolean finished;
private boolean fetchable;
public final Object token;
final boolean insertAsArchiveManifest;