Author: toad
Date: 2009-03-17 17:16:45 +0000 (Tue, 17 Mar 2009)
New Revision: 26066
Modified:
branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
Log:
NPE fixes, activation
Modified:
branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
2009-03-17 15:33:07 UTC (rev 26065)
+++ branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
2009-03-17 17:16:45 UTC (rev 26066)
@@ -268,17 +268,18 @@
parent.fatallyFailedBlock(container, context);
else
parent.failedBlock(container, context);
- if(persistent)
- container.activate(cb, 1);
unregister(container, context);
- cb.onFailure(e, this, container, context);
if(freeData) {
+ if(persistent) container.activate(sourceData, 1);
sourceData.free();
if(persistent) sourceData.removeFrom(container);
sourceData = null;
if(persistent)
container.store(this);
}
+ if(persistent)
+ container.activate(cb, 1);
+ cb.onFailure(e, this, container, context);
}
public ClientKeyBlock getBlock(ObjectContainer container, ClientContext
context, boolean calledByCB) {
@@ -564,6 +565,15 @@
private BlockItem getBlockItem(ObjectContainer container, ClientContext
context) {
try {
+ synchronized(this) {
+ if(finished) return null;
+ }
+ if(persistent) {
+ if(sourceData == null) {
+ Logger.error(this, "getBlockItem():
sourceData = null but active = "+container.ext().isActive(this));
+ return null;
+ }
+ }
boolean deactivateBucket = false;
if(persistent) {
container.activate(uri, 1);
@@ -683,6 +693,7 @@
errors.removeFrom(container);
if(freeData && sourceData != null &&
container.ext().isStored(sourceData)) {
Logger.error(this, "Data not removed!");
+ container.activate(sourceData, 1);
sourceData.removeFrom(container);
}
container.delete(this);
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs