[Checkins] SVN: gocept.zeoraid/trunk/src/gocept/zeoraid/ Fixed
boken windows: Shutting down ZEO servers correctly now and joining
Christian Theune
ct at gocept.com
Wed Jan 30 07:58:16 EST 2008
Log message for revision 83313:
Fixed boken windows: Shutting down ZEO servers correctly now and joining
RAID storage threads to avoid annoyances in the tests.
Changed:
U gocept.zeoraid/trunk/src/gocept/zeoraid/storage.py
U gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py
-=-
Modified: gocept.zeoraid/trunk/src/gocept/zeoraid/storage.py
===================================================================
--- gocept.zeoraid/trunk/src/gocept/zeoraid/storage.py 2008-01-30 12:23:46 UTC (rev 83312)
+++ gocept.zeoraid/trunk/src/gocept/zeoraid/storage.py 2008-01-30 12:58:16 UTC (rev 83313)
@@ -111,6 +111,7 @@
self.__name__ = name
self.read_only = read_only
self.storages = {}
+ self._threads = set()
if blob_dir is not None:
self.blob_fshelper = ZODB.blob.FilesystemHelper(blob_dir)
@@ -172,11 +173,19 @@
# of tests.
return
try:
- self._apply_all_storages('close', expect_connected=False)
+ try:
+ self._apply_all_storages('close', expect_connected=False)
+ except gocept.zeoraid.interfaces.RAIDError:
+ pass
finally:
self.closed = True
del self.storages_optimal[:]
+ for thread in self._threads:
+ # We give all the threads a chance to get done within one second.
+ # This is mostly a convenience for the tests to not annoy.
+ thread.join(1)
+
def getName(self):
"""The name of the storage."""
return self.__name__
@@ -487,6 +496,8 @@
self.storages_degraded.remove(name)
self.storages_recovering.append(name)
t = threading.Thread(target=self._recover_impl, args=(name,))
+ self._threads.add(t)
+ t.setDaemon(True)
t.start()
return 'recovering %r' % (name,)
@@ -505,6 +516,8 @@
self.storages_degraded.append(name)
storage = self.storages[name]
t = threading.Thread(target=storage.close)
+ self._threads.add(t)
+ t.setDaemon(True)
t.start()
del self.storages[name]
if not self.storages_optimal and fail:
Modified: gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py
===================================================================
--- gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py 2008-01-30 12:23:46 UTC (rev 83312)
+++ gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py 2008-01-30 12:58:16 UTC (rev 83313)
@@ -55,12 +55,14 @@
gocept.zeoraid.compatibility.setup()
self._server_storage_files = []
self._servers = []
+ self._pids = []
self._storages = []
for i in xrange(5):
port = get_port()
zconf = forker.ZEOConfig(('', port))
zport, adminaddr, pid, path = forker.start_zeo_server(self.getConfig(),
zconf, port)
+ self._pids.append(pid)
self._servers.append(adminaddr)
self._storages.append(ZEOOpener(zport, storage='1',
min_disconnect_poll=0.5, wait=1,
@@ -80,7 +82,8 @@
self._storage.close()
for server in self._servers:
forker.shutdown_zeo_server(server)
- # XXX wait for servers to come down
+ for pid in self._pids:
+ os.waitpid(pid, 0)
# XXX delete filestorage files
class ReplicationStorageTests(BasicStorage.BasicStorage,
@@ -128,6 +131,7 @@
self._blob_dirs = []
self._servers = []
self._storages = []
+ self._pids = []
for i in xrange(self.backend_count):
port = get_port()
zconf = forker.ZEOConfig(('', port))
@@ -136,6 +140,7 @@
<failingstorage 1>
</failingstorage>""",
zconf, port)
+ self._pids.append(pid)
blob_dir = tempfile.mkdtemp()
self._blob_dirs.append(blob_dir)
self._servers.append(adminaddr)
@@ -148,13 +153,11 @@
self._storages)
def tearDown(self):
- try:
- self._storage.close()
- except:
- pass
+ self._storage.close()
for server in self._servers:
forker.shutdown_zeo_server(server)
- # XXX wait for servers to come down
+ for pid in self._pids:
+ os.waitpid(pid, 0)
class FailingStorageTests2Backends(FailingStorageTestsBase):
More information about the Checkins
mailing list