2013-11-07 15:33:25 |
Juan J. Martínez |
description |
I'm running 1.7.4 SAIO (Swift All In One) in Debian Squeeze and when I upgrade to 1.10.0 I get this error when different components try to load the ring:
Traceback (most recent call last):
File "/usr/bin/swift-container-replicator", line 23, in <module>
run_daemon(ContainerReplicator, conf_file, **options)
File "/usr/lib/pymodules/python2.6/swift/common/daemon.py", line 110, in run_daemon
klass(conf).run(once=once, **kwargs)
File "/usr/lib/pymodules/python2.6/swift/common/db_replicator.py", line 159, in __init__
self.ring = ring.Ring(swift_dir, ring_name=self.server_type)
File "/usr/lib/pymodules/python2.6/swift/common/ring/ring.py", line 141, in __init__
self._reload(force=True)
File "/usr/lib/pymodules/python2.6/swift/common/ring/ring.py", line 164, in _reload
self._rebuild_tier_data()
File "/usr/lib/pymodules/python2.6/swift/common/ring/ring.py", line 184, in _rebuild_tier_data
for tier in tiers_for_dev(dev):
File "/usr/lib/pymodules/python2.6/swift/common/ring/utils.py", line 26, in tiers_for_dev
t1 = dev['region']
KeyError: 'region'
(in this example, swift-container-replicator)
I don't know if this upgrade path is supported (1.7 to 1.10), and this cluster has been upgraded several time (I think first version was Bexar!), but the problem can be fixed easily with the attached patch (applies to 1.10.0). |
I'm running 1.7.4 SAIO (Swift All In One) in Debian Squeeze and when I upgrade to 1.10.0 I get this error when different components try to load the ring:
Traceback (most recent call last):
File "/usr/bin/swift-container-replicator", line 23, in <module>
run_daemon(ContainerReplicator, conf_file, **options)
File "/usr/lib/pymodules/python2.6/swift/common/daemon.py", line 110, in run_daemon
klass(conf).run(once=once, **kwargs)
File "/usr/lib/pymodules/python2.6/swift/common/db_replicator.py", line 159, in __init__
self.ring = ring.Ring(swift_dir, ring_name=self.server_type)
File "/usr/lib/pymodules/python2.6/swift/common/ring/ring.py", line 141, in __init__
self._reload(force=True)
File "/usr/lib/pymodules/python2.6/swift/common/ring/ring.py", line 164, in _reload
self._rebuild_tier_data()
File "/usr/lib/pymodules/python2.6/swift/common/ring/ring.py", line 184, in _rebuild_tier_data
for tier in tiers_for_dev(dev):
File "/usr/lib/pymodules/python2.6/swift/common/ring/utils.py", line 26, in tiers_for_dev
t1 = dev['region']
KeyError: 'region'
(in this example, swift-container-replicator)
I don't know if this upgrade path is supported (1.7 to 1.10), and this cluster has been upgraded several time (I think first version was Bexar!), but the problem can be fixed easily with the attached patch (applies to 1.10.0).
UPDATE: seems that the problem is when loading an old-style pickled ring. |
|