Author: toad
Date: 2009-03-24 23:40:04 +0000 (Tue, 24 Mar 2009)
New Revision: 26167
Modified:
branches/db4o/freenet/src/freenet/client/async/USKInserter.java
Log:
Store, reactivate where needed, don't cancel twice
Modified: branches/db4o/freenet/src/freenet/client/async/USKInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/USKInserter.java
2009-03-24 23:28:16 UTC (rev 26166)
+++ branches/db4o/freenet/src/freenet/client/async/USKInserter.java
2009-03-24 23:40:04 UTC (rev 26167)
@@ -254,22 +254,27 @@
public void cancel(ObjectContainer container, ClientContext context) {
USKFetcherTag tag;
+ boolean persist = persistent;
synchronized(this) {
+ if(finished) return;
+ finished = true;
tag = fetcher;
fetcher = null;
}
- if(tag != null)
+ if(persistent) container.store(this);
+ if(tag != null) {
tag.cancel(container, context);
+ if(persist) container.activate(this, 1); // May have
been deactivated by callbacks
+ }
if(sbi != null) {
sbi.cancel(container, context); // will call onFailure,
which will removeFrom()
+ if(persist) container.activate(this, 1); // May have
been deactivated by callbacks
}
- synchronized(this) {
- finished = true;
- }
if(freeData) {
data.free();
if(persistent) data.removeFrom(container);
}
+ if(persistent) container.activate(cb, 1);
cb.onFailure(new InsertException(InsertException.CANCELLED),
this, container, context);
}
@@ -331,7 +336,7 @@
public void removeFrom(ObjectContainer container, ClientContext
context) {
if(Logger.shouldLog(Logger.MINOR, this))
- Logger.minor(this, "Removing from database: "+this);
+ Logger.minor(this, "Removing from database: "+this, new
Exception("debug"));
// parent will remove self
if(freeData && data != null && container.ext().isStored(data)) {
try {
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs