Author: toad
Date: 2009-03-17 23:17:36 +0000 (Tue, 17 Mar 2009)
New Revision: 26068
Modified:
branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
Log:
More paranoia
Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
2009-03-17 23:16:37 UTC (rev 26067)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
2009-03-17 23:17:36 UTC (rev 26068)
@@ -52,23 +52,38 @@
// objectOnNew is called once, objectOnUpdate is never called,
yet manifestElements get blanked anyway!
-// this.manifestElements = new HashMap<String, Object>() {
-// public boolean objectCanUpdate(ObjectContainer
container) {
-// if(logMINOR)
-// Logger.minor(this, "objectCanUpdate()
on HashMap for ClientPutDir "+this+" stored="+container.ext().isStored(this)+"
active="+container.ext().isActive(this), new Exception("debug"));
-// return true;
-// }
-//
-// public boolean objectCanNew(ObjectContainer container) {
-// if(logMINOR)
-// Logger.minor(this, "objectCanNew() on
HashMap for ClientPutDir "+this+" stored="+container.ext().isStored(this+"
active="+container.ext().isActive(this)), new Exception("debug"));
-// return true;
-// }
-//
-// };
-// this.manifestElements.putAll(manifestElements);
+ this.manifestElements = new HashMap<String, Object>() {
+ public boolean objectCanUpdate(ObjectContainer
container) {
+ if(logMINOR)
+ Logger.minor(this, "objectCanUpdate()
on HashMap for ClientPutDir "+this+" stored="+container.ext().isStored(this)+"
active="+container.ext().isActive(this)+" size="+size(), new
Exception("debug"));
+ return true;
+ }
+
+ public boolean objectCanNew(ObjectContainer container) {
+ if(logMINOR)
+ Logger.minor(this, "objectCanNew() on
HashMap for ClientPutDir "+this+" stored="+container.ext().isStored(this)+"
active="+container.ext().isActive(this)+" size="+size(), new
Exception("debug"));
+ return true;
+ }
+
+ public void objectOnUpdate(ObjectContainer container) {
+ if(logMINOR)
+ Logger.minor(this, "objectOnUpdate() on
HashMap for ClientPutDir "+this+" stored="+container.ext().isStored(this)+"
active="+container.ext().isActive(this)+" size="+size(), new
Exception("debug"));
+ }
+
+ public void objectOnNew(ObjectContainer container) {
+ if(logMINOR)
+ Logger.minor(this, "objectOnNew() on
HashMap for ClientPutDir "+this+" stored="+container.ext().isStored(this)+"
active="+container.ext().isActive(this)+" size="+size(), new
Exception("debug"));
+ }
+
+ public void objectOnActivate(ObjectContainer container)
{
+ if(logMINOR)
+ Logger.minor(this, "objectOnActivate()
on HashMap for ClientPutDir stored="+container.ext().isStored(this)+"
active="+container.ext().isActive(this)+" size="+size(), new
Exception("debug"));
+ }
+
+ };
+ this.manifestElements.putAll(manifestElements);
- this.manifestElements = manifestElements;
+// this.manifestElements = manifestElements;
// this.manifestElements = new HashMap<String, Object>();
// this.manifestElements.putAll(manifestElements);
@@ -275,24 +290,22 @@
if(manifestElements == null) return;
}
if(logMINOR) Logger.minor(this, "freeData() more on "+this+"
persistence type = "+persistenceType);
+ // We have to commit everything, so activating everything here
doesn't cost us much memory...?
+ if(persistenceType == PERSIST_FOREVER)
container.activate(manifestElements, Integer.MAX_VALUE);
freeData(manifestElements, container);
manifestElements = null;
- container.store(this);
+ if(persistenceType == PERSIST_FOREVER) container.store(this);
}
@SuppressWarnings("unchecked")
private void freeData(HashMap<String, Object> manifestElements,
ObjectContainer container) {
- if(persistenceType == PERSIST_FOREVER)
- container.activate(manifestElements, 2);
if(logMINOR) Logger.minor(this, "freeData() inner on "+this+"
persistence type = "+persistenceType+" size = "+manifestElements.size());
Iterator i = manifestElements.values().iterator();
while(i.hasNext()) {
Object o = i.next();
- if(persistenceType == PERSIST_FOREVER)
- container.activate(o, 1);
- if(o instanceof HashMap)
+ if(o instanceof HashMap) {
freeData((HashMap<String, Object>) o,
container);
- else {
+ } else {
ManifestElement e = (ManifestElement) o;
if(logMINOR) Logger.minor(this, "Freeing "+e);
e.freeData(container, persistenceType ==
PERSIST_FOREVER);
@@ -428,6 +441,7 @@
@Override
public void requestWasRemoved(ObjectContainer container, ClientContext
context) {
+ logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(persistenceType == PERSIST_FOREVER) {
container.activate(putter, 1);
putter.removeFrom(container, context);
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs