]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blobdiff - src/allmydata/nodemaker.py
do not cache and re-use imm filenodes in nodemaker
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / nodemaker.py
index d0c9b4b69b199df1f4601b8687044664ea0ae48a..d590bf5aea63a4fb0c3d817b07bd9486ccc01e30 100644 (file)
@@ -72,12 +72,12 @@ class NodeMaker:
             cap = uri.from_string(bigcap, deep_immutable=deep_immutable,
                                   name=name)
             node = self._create_from_single_cap(cap)
-            if node:
-                self._node_cache[memokey] = node  # note: WeakValueDictionary
-            else:
+            if node is None:
                 # don't cache UnknownNode
                 node = UnknownNode(writecap, readcap,
                                    deep_immutable=deep_immutable, name=name)
+            elif node.is_mutable():
+                self._node_cache[memokey] = node  # note: WeakValueDictionary
 
         if self.blacklist:
             si = node.get_storage_index()
@@ -139,6 +139,7 @@ class NodeMaker:
         packed = pack_children(children, None, deep_immutable=True)
         uploadable = Data(packed, convergence)
         d = self.uploader.upload(uploadable)
-        d.addCallback(lambda results: self.create_from_cap(None, results.uri))
+        d.addCallback(lambda results:
+                      self.create_from_cap(None, results.get_uri()))
         d.addCallback(self._create_dirnode)
         return d