Author: toad
Date: 2009-03-27 14:00:36 +0000 (Fri, 27 Mar 2009)
New Revision: 26230
Modified:
branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java
branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java
Log:
Activation, logging, succeed anyway when have HorribleEvilBug if return bucket
is disk based...
Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java 2009-03-27
13:51:19 UTC (rev 26229)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java 2009-03-27
14:00:36 UTC (rev 26230)
@@ -376,12 +376,16 @@
failed = false;
}
}
+ if(failed && persistenceType == PERSIST_FOREVER) {
+ if(container.ext().getID(returnBucket) ==
container.ext().getID(data))
+ Logger.error(this, "DB4O BUG DETECTED
WITHOUT ARRAY HANDLING! EVIL HORRIBLE BUG!
UID(returnBucket)="+container.ext().getID(returnBucket)+" for "+returnBucket+"
active="+container.ext().isActive(returnBucket)+" stored =
"+container.ext().isStored(returnBucket)+" but
UID(data)="+container.ext().getID(data)+" for "+data+" active =
"+container.ext().isActive(data)+" stored = "+container.ext().isStored(data));
+ if(returnType ==
ClientGetMessage.RETURN_TYPE_DISK) {
+ Logger.error(this, "Succeeding anyway
as the data should be on disk...");
+ failed = false;
+ }
+ }
if(failed) {
Logger.error(this, "returnBucket =
"+returnBucket+" but onSuccess() data = "+data, new Exception("debug"));
- if(persistenceType == PERSIST_FOREVER) {
- if(container.ext().getID(returnBucket)
== container.ext().getID(data))
- Logger.error(this, "DB4O BUG
DETECTED WITHOUT ARRAY HANDLING! EVIL HORRIBLE BUG!
UID(returnBucket)="+container.ext().getID(returnBucket)+" for "+returnBucket+"
but UID(data)="+container.ext().getID(data)+" for "+data);
- }
// Caller guarantees that data == returnBucket
onFailure(new
FetchException(FetchException.INTERNAL_ERROR, "Data != returnBucket"), null,
container);
return;
@@ -879,13 +883,16 @@
* @return The data in a {...@link Bucket}, or <code>null</code> if this
* isn’t applicable
*/
- public Bucket getBucket() {
+ public Bucket getBucket(ObjectContainer container) {
synchronized(this) {
if(targetFile != null) {
- if(succeeded || tempFile == null)
+ if(succeeded || tempFile == null) {
+ if(persistenceType == PERSIST_FOREVER)
container.activate(targetFile, 5);
return new FileBucket(targetFile,
false, true, false, false, false);
- else
+ } else {
+ if(persistenceType == PERSIST_FOREVER)
container.activate(tempFile, 5);
return new FileBucket(tempFile, false,
true, false, false, false);
+ }
} else return returnBucket;
}
}
Modified: branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java 2009-03-27
13:51:19 UTC (rev 26229)
+++ branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java 2009-03-27
14:00:36 UTC (rev 26230)
@@ -1091,7 +1091,7 @@
ClientGet get = globalRebootClient.getCompletedRequest(key,
null);
if(get != null) {
// FIXME race condition with free() - arrange
refcounting for the data to prevent this
- return new TempFetchResult(new
ClientMetadata(get.getMIMEType(null)), get.getBucket(), false);
+ return new TempFetchResult(new
ClientMetadata(get.getMIMEType(null)), get.getBucket(null), false);
}
class OutputWrapper {
@@ -1109,7 +1109,7 @@
ClientGet get =
globalForeverClient.getCompletedRequest(key, container);
container.activate(get, 1);
if(get != null) {
- Bucket origData =
get.getBucket();
+ Bucket origData =
get.getBucket(container);
container.activate(origData, 5);
boolean copied = false;
Bucket newData;
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs