Author: toad
Date: 2009-01-28 17:22:00 +0000 (Wed, 28 Jan 2009)
New Revision: 25352

Modified:
   branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
Log:
mustWait is meaningless, and ignored by callers. Log an error if metadata is 
already resolved, and don't insert it.  Log at minor if already started insert 
for metadata.


Modified: 
branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java    
2009-01-28 17:17:00 UTC (rev 25351)
+++ branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java    
2009-01-28 17:22:00 UTC (rev 25352)
@@ -701,18 +701,22 @@
         * @throws InsertException
         * @throws IOException
         */
-       private boolean resolve(MetadataUnresolvedException e, ObjectContainer 
container, ClientContext context) throws InsertException, IOException {
+       private void resolve(MetadataUnresolvedException e, ObjectContainer 
container, ClientContext context) throws InsertException, IOException {
                Metadata[] metas = e.mustResolve;
-               boolean mustWait = false;
                if(persistent())
                        container.activate(metadataPuttersByMetadata, 2);
                for(int i=0;i<metas.length;i++) {
                        Metadata m = metas[i];
-                       if(!m.isResolved())
-                               mustWait = true;
                        synchronized(this) {
-                               if(metadataPuttersByMetadata.containsKey(m)) 
continue;
+                               if(metadataPuttersByMetadata.containsKey(m)) {
+                                       if(logMINOR) Logger.minor(this, 
"Already started insert for "+m+" in resolve() for "+metas.length+" 
Metadata's");
+                                       continue;
+                               }
                        }
+                       if(m.isResolved()) {
+                               Logger.error(this, "Already resolved: "+m+" in 
resolve() - race condition???");
+                               continue;
+                       }
                        try {
                                Bucket b = 
m.toBucket(context.getBucketFactory(persistent()));
                                
@@ -730,7 +734,6 @@
                }
                if(persistent())
                        container.store(metadataPuttersByMetadata);
-               return mustWait;
        }
 
        private void namesToByteArrays(HashMap putHandlersByName, HashMap 
namesToByteArrays, ObjectContainer container) {

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to