mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-03-10 22:43:52 +00:00
use set instead of WeakKeyDictionary
This commit is contained in:
parent
d06127c720
commit
4928d62d66
@ -1,4 +1,4 @@
|
|||||||
import os, re, weakref, struct, time
|
import os, re, struct, time
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from foolscap.api import Referenceable
|
from foolscap.api import Referenceable
|
||||||
@ -67,7 +67,7 @@ class StorageServer(service.MultiService, Referenceable):
|
|||||||
self.incomingdir = os.path.join(sharedir, 'incoming')
|
self.incomingdir = os.path.join(sharedir, 'incoming')
|
||||||
self._clean_incomplete()
|
self._clean_incomplete()
|
||||||
fileutil.make_dirs(self.incomingdir)
|
fileutil.make_dirs(self.incomingdir)
|
||||||
self._active_writers = weakref.WeakKeyDictionary()
|
self._active_writers = set()
|
||||||
log.msg("StorageServer created", facility="tahoe.storage")
|
log.msg("StorageServer created", facility="tahoe.storage")
|
||||||
|
|
||||||
if reserved_space:
|
if reserved_space:
|
||||||
@ -302,7 +302,7 @@ class StorageServer(service.MultiService, Referenceable):
|
|||||||
if self.no_storage:
|
if self.no_storage:
|
||||||
bw.throw_out_all_data = True
|
bw.throw_out_all_data = True
|
||||||
bucketwriters[shnum] = bw
|
bucketwriters[shnum] = bw
|
||||||
self._active_writers[bw] = 1
|
self._active_writers.add(bw)
|
||||||
if limited:
|
if limited:
|
||||||
remaining_space -= max_space_per_bucket
|
remaining_space -= max_space_per_bucket
|
||||||
else:
|
else:
|
||||||
@ -359,7 +359,7 @@ class StorageServer(service.MultiService, Referenceable):
|
|||||||
def bucket_writer_closed(self, bw, consumed_size):
|
def bucket_writer_closed(self, bw, consumed_size):
|
||||||
if self.stats_provider:
|
if self.stats_provider:
|
||||||
self.stats_provider.count('storage_server.bytes_added', consumed_size)
|
self.stats_provider.count('storage_server.bytes_added', consumed_size)
|
||||||
del self._active_writers[bw]
|
self._active_writers.remove(bw)
|
||||||
|
|
||||||
def _get_bucket_shares(self, storage_index):
|
def _get_bucket_shares(self, storage_index):
|
||||||
"""Return a list of (shnum, pathname) tuples for files that hold
|
"""Return a list of (shnum, pathname) tuples for files that hold
|
||||||
|
@ -555,13 +555,8 @@ class Server(unittest.TestCase):
|
|||||||
# we abandon the first set, so their provisional allocation should be
|
# we abandon the first set, so their provisional allocation should be
|
||||||
# returned
|
# returned
|
||||||
|
|
||||||
# XXX okay, so the weak-key-dictionary in storage-server is
|
for x in writers.values():
|
||||||
# basically making an interface to the storage-server that is
|
x.remote_close()
|
||||||
# "whenever I drop my object AND the garbage-collector removes
|
|
||||||
# it, *then* that thing is no longer writing"..? ... yuuuuck.
|
|
||||||
del already
|
|
||||||
del writers
|
|
||||||
gc.collect() # for pypy's benefit
|
|
||||||
self.failUnlessEqual(len(ss._active_writers), 1)
|
self.failUnlessEqual(len(ss._active_writers), 1)
|
||||||
# now we have a provisional allocation of 1001 bytes
|
# now we have a provisional allocation of 1001 bytes
|
||||||
|
|
||||||
@ -574,7 +569,6 @@ class Server(unittest.TestCase):
|
|||||||
del already2
|
del already2
|
||||||
del writers2
|
del writers2
|
||||||
del bw
|
del bw
|
||||||
gc.collect() # for pypy's benefit
|
|
||||||
self.failUnlessEqual(len(ss._active_writers), 0)
|
self.failUnlessEqual(len(ss._active_writers), 0)
|
||||||
|
|
||||||
# this also changes the amount reported as available by call_get_disk_stats
|
# this also changes the amount reported as available by call_get_disk_stats
|
||||||
@ -586,8 +580,8 @@ class Server(unittest.TestCase):
|
|||||||
self.failUnlessEqual(len(writers3), 39)
|
self.failUnlessEqual(len(writers3), 39)
|
||||||
self.failUnlessEqual(len(ss._active_writers), 39)
|
self.failUnlessEqual(len(ss._active_writers), 39)
|
||||||
|
|
||||||
del already3
|
for x in writers3.values():
|
||||||
del writers3
|
x._disconnected()
|
||||||
self.failUnlessEqual(len(ss._active_writers), 0)
|
self.failUnlessEqual(len(ss._active_writers), 0)
|
||||||
ss.disownServiceParent()
|
ss.disownServiceParent()
|
||||||
del ss
|
del ss
|
||||||
|
Loading…
x
Reference in New Issue
Block a user