Author: toad
Date: 2009-03-21 00:27:55 +0000 (Sat, 21 Mar 2009)
New Revision: 26132
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
branches/db4o/freenet/src/freenet/keys/FreenetURI.java
branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java
Log:
Never store EMPTY_CHK_URI to database
Modified: branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
2009-03-20 23:19:56 UTC (rev 26131)
+++ branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
2009-03-21 00:27:55 UTC (rev 26132)
@@ -100,11 +100,13 @@
if(currentState != null) return false;
cancel = this.cancelled;
if(!cancel) {
- if(!binaryBlob)
+ if(!binaryBlob) {
+ ClientMetadata meta = cm;
+ if(meta != null) meta =
persistent() ? meta.clone() : meta;
currentState =
- new
SingleFileInserter(this, this, new InsertBlock(data, persistent() ? cm.clone()
: cm, persistent() ? targetURI.clone() : targetURI), isMetadata, ctx,
+ new
SingleFileInserter(this, this, new InsertBlock(data, meta, persistent() ?
targetURI.clone() : targetURI), isMetadata, ctx,
false,
getCHKOnly, false, null, null, false, targetFilename, earlyEncode);
- else
+ } else
currentState =
new
BinaryBlobInserter(data, this, null, false, priorityClass, ctx, context,
container);
}
@@ -359,8 +361,7 @@
container.activate(ctx, 1);
ctx.removeFrom(container);
container.activate(targetURI, 5);
- if(targetURI != FreenetURI.EMPTY_CHK_URI)
- targetURI.removeFrom(container);
+ targetURI.removeFrom(container);
if(uri != null) {
container.activate(uri, 5);
uri.removeFrom(container);
Modified:
branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
2009-03-20 23:19:56 UTC (rev 26131)
+++ branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
2009-03-21 00:27:55 UTC (rev 26132)
@@ -60,7 +60,7 @@
this.cm = cm;
this.data = data;
InsertBlock block =
- new InsertBlock(data, cm,
FreenetURI.EMPTY_CHK_URI);
+ new InsertBlock(data, cm, persistent() ?
FreenetURI.EMPTY_CHK_URI.clone() : FreenetURI.EMPTY_CHK_URI);
this.origSFI =
new SingleFileInserter(this, this, block,
false, ctx, false, getCHKOnly, true, null, null, true, null, earlyEncode);
metadata = null;
@@ -402,7 +402,11 @@
@Override
public void notifyClients(ObjectContainer container,
ClientContext context) {
- // FIXME generate per-filename events???
+ if(persistent)
+ container.activate(SimpleManifestPutter.this,
1);
+ SimpleManifestPutter.this.notifyClients(container,
context);
+ if(persistent)
+ container.deactivate(SimpleManifestPutter.this,
1);
}
public void onBlockSetFinished(ClientPutState state,
ObjectContainer container, ClientContext context) {
@@ -469,8 +473,8 @@
}
if(oldState != null) {
Logger.error(this, "currentState is set in
removeFrom() on "+this+" for "+SimpleManifestPutter.this);
- currentState.cancel(container, context);
- currentState.removeFrom(container, context);
+ oldState.cancel(container, context);
+ oldState.removeFrom(container, context);
}
if(cm != null) {
cm.removeFrom(container);
@@ -815,6 +819,7 @@
// Can we just insert it, and not bother with a
redirect to it?
// Thereby exploiting implicit manifest
support, which will pick up on .metadata??
// We ought to be able to !!
+ if(persistent()) container.activate(targetURI,
5);
block = new InsertBlock(outputBucket, new
ClientMetadata(mimeType), persistent() ? targetURI.clone() : targetURI);
isMetadata = false;
insertAsArchiveManifest = true;
@@ -969,7 +974,7 @@
try {
Bucket b =
m.toBucket(context.getBucketFactory(persistent()));
- InsertBlock ib = new InsertBlock(b, null,
FreenetURI.EMPTY_CHK_URI);
+ InsertBlock ib = new InsertBlock(b, null,
persistent() ? FreenetURI.EMPTY_CHK_URI.clone() : FreenetURI.EMPTY_CHK_URI);
SingleFileInserter metadataInserter =
new SingleFileInserter(this, this, ib,
true, ctx, false, getCHKOnly, false, m, null, true, null, earlyEncode);
if(logMINOR) Logger.minor(this, "Inserting
subsidiary metadata: "+metadataInserter+" for "+m);
@@ -1227,7 +1232,9 @@
boolean fin = false;
ClientPutState oldState;
synchronized(this) {
- oldState =
metadataPuttersByMetadata.remove(state.getToken());
+ Metadata token = (Metadata) state.getToken();
+ container.activate(token, 1);
+ oldState = metadataPuttersByMetadata.remove(token);
if(!metadataPuttersByMetadata.isEmpty()) {
if(logMINOR) Logger.minor(this, "Still running
metadata putters: "+metadataPuttersByMetadata.size());
} else {
@@ -1517,10 +1524,8 @@
Logger.error(this, "Put handlers list still present in
removeFrom() on "+this);
removePutHandlers(container, context);
}
- if(finalURI != FreenetURI.EMPTY_CHK_URI)
- finalURI.removeFrom(container);
- if(targetURI != FreenetURI.EMPTY_CHK_URI)
- targetURI.removeFrom(container);
+ finalURI.removeFrom(container);
+ targetURI.removeFrom(container);
container.activate(ctx, 1);
ctx.removeFrom(container);
container.activate(metadataPuttersByMetadata, 2);
Modified:
branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
2009-03-20 23:19:56 UTC (rev 26131)
+++ branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
2009-03-21 00:27:55 UTC (rev 26132)
@@ -597,8 +597,7 @@
if(persistent) {
if(deactivateBucket)
container.deactivate(sourceData, 1);
- if(uri != FreenetURI.EMPTY_CHK_URI)
- container.deactivate(uri, 1);
+ container.deactivate(uri, 1);
}
return new BlockItem(this, data, isMetadata,
compressionCodec, sourceLength, u, hashCode(), persistent);
} catch (IOException e) {
@@ -686,8 +685,7 @@
if(logMINOR) Logger.minor(this, "removeFrom() on "+this);
// FIXME remove sourceData ???
container.activate(uri, 5);
- if(uri != FreenetURI.EMPTY_CHK_URI)
- uri.removeFrom(container);
+ uri.removeFrom(container);
if(resultingURI != null) {
container.activate(resultingURI, 5);
resultingURI.removeFrom(container);
Modified: branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
2009-03-20 23:19:56 UTC (rev 26131)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
2009-03-21 00:27:55 UTC (rev 26132)
@@ -397,7 +397,9 @@
if(!missingURIs) {
// Create Metadata
- m = new Metadata(splitfileAlgorithm, dataURIs,
checkURIs, segmentSize, checkSegmentSize, persistent ? cm.clone() : cm,
dataLength, archiveType, compressionCodec, decompressedLength, isMetadata);
+ ClientMetadata meta = cm;
+ if(persistent) meta = meta == null ? null :
meta.clone();
+ m = new Metadata(splitfileAlgorithm, dataURIs,
checkURIs, segmentSize, checkSegmentSize, meta, dataLength, archiveType,
compressionCodec, decompressedLength, isMetadata);
}
haveSentMetadata = true;
}
Modified: branches/db4o/freenet/src/freenet/keys/FreenetURI.java
===================================================================
--- branches/db4o/freenet/src/freenet/keys/FreenetURI.java 2009-03-20
23:19:56 UTC (rev 26131)
+++ branches/db4o/freenet/src/freenet/keys/FreenetURI.java 2009-03-21
00:27:55 UTC (rev 26132)
@@ -886,6 +886,13 @@
// All members are inline (arrays, ints etc), treated as
values, so we can happily just call delete(this).
container.delete(this);
}
+
+ public boolean objectCanNew(ObjectContainer container) {
+ if(this == FreenetURI.EMPTY_CHK_URI) {
+ throw new RuntimeException("Storing static CHK@ to
database - can't remove it!");
+ }
+ return true;
+ }
public boolean isUSK() {
return "USK".equals(keyType);
Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java 2009-03-20
23:19:56 UTC (rev 26131)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java 2009-03-21
00:27:55 UTC (rev 26132)
@@ -538,7 +538,7 @@
container.delete(origFilename);
}
// clientMetadata will be deleted by putter
- if(targetURI != null && targetURI !=
FreenetURI.EMPTY_CHK_URI) {
+ if(targetURI != null) {
container.activate(targetURI, 5);
targetURI.removeFrom(container);
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs