Author: toad
Date: 2005-11-16 15:23:44 +0000 (Wed, 16 Nov 2005)
New Revision: 7545
Added:
trunk/freenet/src/freenet/client/events/GeneratedURIEvent.java
Modified:
trunk/freenet/src/freenet/client/BlockInserter.java
trunk/freenet/src/freenet/client/FileInserter.java
trunk/freenet/src/freenet/client/InserterException.java
trunk/freenet/src/freenet/client/SplitInserter.java
trunk/freenet/src/freenet/node/TextModeClientInterface.java
trunk/freenet/src/freenet/node/Version.java
Log:
182:
Make TMCI return the URI generated even if it RNFs.
Modified: trunk/freenet/src/freenet/client/BlockInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/BlockInserter.java 2005-11-16 14:46:11 UTC
(rev 7544)
+++ trunk/freenet/src/freenet/client/BlockInserter.java 2005-11-16 15:23:44 UTC
(rev 7545)
@@ -108,7 +108,8 @@
}
private void fatalError(Throwable t, int code) {
- fatalError(new InserterException(code, t), code);
+ // Don't need to include uri
+ fatalError(new InserterException(code, t, null), code);
}
private void nonfatalError(InserterException e, int code) {
Modified: trunk/freenet/src/freenet/client/FileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/FileInserter.java 2005-11-16 14:46:11 UTC
(rev 7544)
+++ trunk/freenet/src/freenet/client/FileInserter.java 2005-11-16 15:23:44 UTC
(rev 7545)
@@ -2,6 +2,7 @@
import java.io.IOException;
+import freenet.client.events.GeneratedURIEvent;
import freenet.client.events.SimpleBlockPutEvent;
import freenet.keys.CHKEncodeException;
import freenet.keys.ClientCHKBlock;
@@ -36,7 +37,7 @@
if(block.data == null)
throw new NullPointerException();
if(!block.desiredURI.toString(false).equals("CHK@"))
- throw new
InserterException(InserterException.INVALID_URI);
+ throw new
InserterException(InserterException.INVALID_URI, null);
// Insert the content.
// If we have reason to create a metadata document, include the
client metadata.
@@ -78,7 +79,7 @@
}
}
} catch (IOException e) {
- throw new
InserterException(InserterException.BUCKET_ERROR, e);
+ throw new
InserterException(InserterException.BUCKET_ERROR, e, null);
} catch (CompressionOutputSizeException e) {
// Impossible
throw new Error(e);
@@ -95,10 +96,10 @@
chk = ClientCHKBlock.encode(data,
metadata, false, bestCodec.codecNumberForMetadata(), (int)origSize);
}
} catch (IOException e) {
- throw new
InserterException(InserterException.BUCKET_ERROR, e);
+ throw new
InserterException(InserterException.BUCKET_ERROR, e, null);
} catch (CHKEncodeException e) {
Logger.error(this, "Unexpected error: "+e, e);
- throw new
InserterException(InserterException.INTERNAL_ERROR);
+ throw new
InserterException(InserterException.INTERNAL_ERROR, null);
}
return simplePutCHK(chk, block.clientMetadata,
getCHKOnly);
}
@@ -138,22 +139,22 @@
}
if(le != null)
- translateException(le);
+ translateException(le, uri);
return uri;
}
- private void translateException(LowLevelPutException e) throws
InserterException {
+ private void translateException(LowLevelPutException e, FreenetURI uri)
throws InserterException {
switch(e.code) {
case LowLevelPutException.INTERNAL_ERROR:
- throw new
InserterException(InserterException.INTERNAL_ERROR, e);
+ throw new
InserterException(InserterException.INTERNAL_ERROR, e, null);
case LowLevelPutException.REJECTED_OVERLOAD:
- throw new
InserterException(InserterException.REJECTED_OVERLOAD);
+ throw new
InserterException(InserterException.REJECTED_OVERLOAD, uri);
case LowLevelPutException.ROUTE_NOT_FOUND:
- throw new
InserterException(InserterException.ROUTE_NOT_FOUND);
+ throw new
InserterException(InserterException.ROUTE_NOT_FOUND, uri);
default:
Logger.error(this, "Unknown LowLevelPutException code:
"+e.code+" on "+this);
- throw new
InserterException(InserterException.INTERNAL_ERROR, e);
+ throw new
InserterException(InserterException.INTERNAL_ERROR, e, null);
}
}
@@ -166,7 +167,7 @@
try {
bucket = BucketTools.makeImmutableBucket(ctx.bf, data);
} catch (IOException e) {
- throw new
InserterException(InserterException.BUCKET_ERROR);
+ throw new
InserterException(InserterException.BUCKET_ERROR, null);
}
InsertBlock block = new InsertBlock(bucket, null,
FreenetURI.EMPTY_CHK_URI);
return run(block, true, getCHKOnly);
Modified: trunk/freenet/src/freenet/client/InserterException.java
===================================================================
--- trunk/freenet/src/freenet/client/InserterException.java 2005-11-16
14:46:11 UTC (rev 7544)
+++ trunk/freenet/src/freenet/client/InserterException.java 2005-11-16
15:23:44 UTC (rev 7545)
@@ -2,6 +2,7 @@
import java.io.IOException;
+import freenet.keys.FreenetURI;
import freenet.node.LowLevelPutException;
import freenet.support.Logger;
@@ -11,39 +12,45 @@
final int mode;
/** For collection errors */
final FailureCodeTracker errorCodes;
+ /** If a non-serious error, the URI */
+ public final FreenetURI uri;
/** Get the failure mode. */
public int getMode() {
return mode;
}
- public InserterException(int m, String msg) {
+ public InserterException(int m, String msg, FreenetURI expectedURI) {
super(getMessage(m)+": "+msg);
mode = m;
Logger.minor(this, "Creating InserterException:
"+getMessage(mode)+": "+msg, this);
errorCodes = null;
+ this.uri = expectedURI;
}
- public InserterException(int m) {
+ public InserterException(int m, FreenetURI expectedURI) {
super(getMessage(m));
mode = m;
Logger.minor(this, "Creating InserterException:
"+getMessage(mode), this);
errorCodes = null;
+ this.uri = expectedURI;
}
- public InserterException(int mode, Throwable e) {
+ public InserterException(int mode, Throwable e, FreenetURI expectedURI)
{
super(getMessage(mode)+": "+e.getMessage());
Logger.minor(this, "Creating InserterException:
"+getMessage(mode)+": "+e, e);
this.mode = mode;
errorCodes = null;
initCause(e);
+ this.uri = expectedURI;
}
- public InserterException(int mode, FailureCodeTracker errorCodes) {
+ public InserterException(int mode, FailureCodeTracker errorCodes,
FreenetURI expectedURI) {
super(getMessage(mode));
this.mode = mode;
Logger.minor(this, "Creating InserterException:
"+getMessage(mode), this);
this.errorCodes = errorCodes;
+ this.uri = expectedURI;
}
/** Caller supplied a URI we cannot use */
Modified: trunk/freenet/src/freenet/client/SplitInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/SplitInserter.java 2005-11-16 14:46:11 UTC
(rev 7544)
+++ trunk/freenet/src/freenet/client/SplitInserter.java 2005-11-16 15:23:44 UTC
(rev 7545)
@@ -3,6 +3,7 @@
import java.io.IOException;
import java.util.Vector;
+import freenet.client.events.GeneratedURIEvent;
import freenet.keys.FreenetURI;
import freenet.keys.NodeCHK;
import freenet.support.Bucket;
@@ -55,7 +56,7 @@
try {
splitIntoBlocks();
} catch (IOException e) {
- throw new
InserterException(InserterException.BUCKET_ERROR, e);
+ throw new
InserterException(InserterException.BUCKET_ERROR, e, null);
}
this.inserter = inserter;
}
@@ -76,7 +77,7 @@
Logger.minor(this, "Encoded segment
"+i+" of "+segments.length);
}
} catch (IOException e) {
- throw new
InserterException(InserterException.BUCKET_ERROR, e);
+ throw new
InserterException(InserterException.BUCKET_ERROR, e, null);
}
// Wait for the insertion thread to finish
return waitForCompletion();
@@ -84,7 +85,7 @@
Logger.error(this, "Caught "+t, t);
tracker.kill();
if(t instanceof InserterException) throw
(InserterException)t;
- throw new
InserterException(InserterException.INTERNAL_ERROR, t);
+ throw new
InserterException(InserterException.INTERNAL_ERROR, t, null);
}
}
@@ -120,7 +121,7 @@
try {
mbucket =
BucketTools.makeImmutableBucket(ctx.bf, metadata.writeToByteArray());
} catch (IOException e) {
- throw new
InserterException(InserterException.BUCKET_ERROR);
+ throw new
InserterException(InserterException.BUCKET_ERROR, null);
}
if(inserter == null)
@@ -135,12 +136,14 @@
}
// Did we succeed?
+ ctx.eventProducer.produceEvent(new GeneratedURIEvent(uri));
+
if(fatalErrors > 0) {
- throw new
InserterException(InserterException.FATAL_ERRORS_IN_BLOCKS,
tracker.getAccumulatedFatalErrorCodes());
+ throw new
InserterException(InserterException.FATAL_ERRORS_IN_BLOCKS,
tracker.getAccumulatedFatalErrorCodes(), uri);
}
if(failed > 0) {
- throw new
InserterException(InserterException.TOO_MANY_RETRIES_IN_BLOCKS,
tracker.getAccumulatedNonFatalErrorCodes());
+ throw new
InserterException(InserterException.TOO_MANY_RETRIES_IN_BLOCKS,
tracker.getAccumulatedNonFatalErrorCodes(), uri);
}
return uri;
Added: trunk/freenet/src/freenet/client/events/GeneratedURIEvent.java
===================================================================
--- trunk/freenet/src/freenet/client/events/GeneratedURIEvent.java
2005-11-16 14:46:11 UTC (rev 7544)
+++ trunk/freenet/src/freenet/client/events/GeneratedURIEvent.java
2005-11-16 15:23:44 UTC (rev 7545)
@@ -0,0 +1,21 @@
+package freenet.client.events;
+
+import freenet.keys.FreenetURI;
+
+public class GeneratedURIEvent implements ClientEvent {
+
+ public static final int code = 0x06;
+ public final FreenetURI uri;
+
+ public GeneratedURIEvent(FreenetURI uri) {
+ this.uri = uri;
+ }
+
+ public String getDescription() {
+ return "Generated URI on insert: "+uri;
+ }
+
+ public int getCode() {
+ return code;
+ }
+}
Modified: trunk/freenet/src/freenet/node/TextModeClientInterface.java
===================================================================
--- trunk/freenet/src/freenet/node/TextModeClientInterface.java 2005-11-16
14:46:11 UTC (rev 7544)
+++ trunk/freenet/src/freenet/node/TextModeClientInterface.java 2005-11-16
15:23:44 UTC (rev 7545)
@@ -219,6 +219,8 @@
uri = client.insert(block, getCHKOnly);
} catch (InserterException e) {
System.out.println("Error: "+e.getMessage());
+ if(e.uri != null)
+ System.out.println("URI would have been: "+e.uri);
return;
}
@@ -254,6 +256,8 @@
System.out.println("File not found");
} catch (InserterException e) {
System.out.println("Finished insert but: "+e.getMessage());
+ if(e.uri != null)
+ System.out.println("URI would have been: "+e.uri);
} catch (Throwable t) {
System.out.println("Insert threw: "+t);
t.printStackTrace();
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2005-11-16 14:46:11 UTC (rev
7544)
+++ trunk/freenet/src/freenet/node/Version.java 2005-11-16 15:23:44 UTC (rev
7545)
@@ -20,7 +20,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- public static final int buildNumber = 181;
+ public static final int buildNumber = 182;
/** Oldest build of Fred we will talk to */
public static final int lastGoodBuild = 181;