mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-20 05:28:04 +00:00
client.py: add a 'debug_no_storage' option to throw out all share data
This commit is contained in:
parent
e91288d9ed
commit
1aa22b9abd
@ -83,7 +83,9 @@ class Client(node.Node, Referenceable):
|
|||||||
"G": 1000 * 1000 * 1000,
|
"G": 1000 * 1000 * 1000,
|
||||||
}[suffix]
|
}[suffix]
|
||||||
sizelimit = int(number) * multiplier
|
sizelimit = int(number) * multiplier
|
||||||
self.add_service(StorageServer(storedir, sizelimit))
|
NOSTORAGE_FILE = os.path.join(self.basedir, "debug_no_storage")
|
||||||
|
no_storage = os.path.exists(NOSTORAGE_FILE)
|
||||||
|
self.add_service(StorageServer(storedir, sizelimit, no_storage))
|
||||||
|
|
||||||
def _check_hotline(self, hotline_file):
|
def _check_hotline(self, hotline_file):
|
||||||
if os.path.exists(hotline_file):
|
if os.path.exists(hotline_file):
|
||||||
|
@ -31,6 +31,7 @@ class BucketWriter(Referenceable):
|
|||||||
self.finalhome = finalhome
|
self.finalhome = finalhome
|
||||||
self._size = size
|
self._size = size
|
||||||
self.closed = False
|
self.closed = False
|
||||||
|
self.throw_out_all_data = False
|
||||||
# touch the file, so later callers will see that we're working on it
|
# touch the file, so later callers will see that we're working on it
|
||||||
f = open(self.incominghome, 'ab')
|
f = open(self.incominghome, 'ab')
|
||||||
f.close()
|
f.close()
|
||||||
@ -42,6 +43,8 @@ class BucketWriter(Referenceable):
|
|||||||
precondition(not self.closed)
|
precondition(not self.closed)
|
||||||
precondition(offset >= 0)
|
precondition(offset >= 0)
|
||||||
precondition(offset+len(data) <= self._size)
|
precondition(offset+len(data) <= self._size)
|
||||||
|
if self.throw_out_all_data:
|
||||||
|
return
|
||||||
f = open(self.incominghome, 'ab')
|
f = open(self.incominghome, 'ab')
|
||||||
f.seek(offset)
|
f.seek(offset)
|
||||||
f.write(data)
|
f.write(data)
|
||||||
@ -70,11 +73,12 @@ class StorageServer(service.MultiService, Referenceable):
|
|||||||
implements(RIStorageServer)
|
implements(RIStorageServer)
|
||||||
name = 'storageserver'
|
name = 'storageserver'
|
||||||
|
|
||||||
def __init__(self, storedir, sizelimit=None):
|
def __init__(self, storedir, sizelimit=None, no_storage=False):
|
||||||
service.MultiService.__init__(self)
|
service.MultiService.__init__(self)
|
||||||
fileutil.make_dirs(storedir)
|
fileutil.make_dirs(storedir)
|
||||||
self.storedir = storedir
|
self.storedir = storedir
|
||||||
self.sizelimit = sizelimit
|
self.sizelimit = sizelimit
|
||||||
|
self.no_storage = no_storage
|
||||||
self.incomingdir = os.path.join(storedir, 'incoming')
|
self.incomingdir = os.path.join(storedir, 'incoming')
|
||||||
self._clean_incomplete()
|
self._clean_incomplete()
|
||||||
fileutil.make_dirs(self.incomingdir)
|
fileutil.make_dirs(self.incomingdir)
|
||||||
@ -113,6 +117,8 @@ class StorageServer(service.MultiService, Referenceable):
|
|||||||
fileutil.make_dirs(os.path.join(self.incomingdir, si_s))
|
fileutil.make_dirs(os.path.join(self.incomingdir, si_s))
|
||||||
bw = BucketWriter(self, incominghome, finalhome,
|
bw = BucketWriter(self, incominghome, finalhome,
|
||||||
space_per_bucket)
|
space_per_bucket)
|
||||||
|
if self.no_storage:
|
||||||
|
bw.throw_out_all_data = True
|
||||||
bucketwriters[shnum] = bw
|
bucketwriters[shnum] = bw
|
||||||
self._active_writers[bw] = 1
|
self._active_writers[bw] = 1
|
||||||
if yes_limits:
|
if yes_limits:
|
||||||
|
Loading…
Reference in New Issue
Block a user