Unable to run replicator due to bad pickle data error

Asked by Tushar Patil on 2012-10-04

I have a multi node setup, one proxy server and 3 storage nodes.
I have created ring files referring to this documentation (http://docs.openstack.org/trunk/openstack-compute/install/apt/content/osfolubuntu-swift.html). then copied all ring files to the 3 storage nodes.

When I run swift-init all start command on the swift storage node, it gives me following error :-

File "/usr/bin/swift-object-replicator", line 23, in <module>
    run_daemon(ObjectReplicator, conf_file, **options)
  File "/usr/lib/python2.7/dist-packages/swift/common/daemon.py", line 88, in run_daemon
    klass(conf).run(once=once, **kwargs)
  File "/usr/lib/python2.7/dist-packages/swift/obj/replicator.py", line 239, in __init__
    self.object_ring = Ring(join(self.swift_dir, 'object.ring.gz'))
  File "/usr/lib/python2.7/dist-packages/swift/common/ring/ring.py", line 51, in __init__
    self._reload(force=True)
  File "/usr/lib/python2.7/dist-packages/swift/common/ring/ring.py", line 56, in _reload
    ring_data = pickle.load(GzipFile(self.pickle_gz_path, 'rb'))
cPickle.UnpicklingError: bad pickle data

Note: I get same error when I run container/account replicator.

Any idea why it's not able to read the ring files successfully?

Question information

Language:
English Edit question
Status:
Solved
For:
OpenStack Object Storage (swift) Edit question
Assignee:
No assignee Edit question
Solved by:
Tushar Patil
Solved:
2012-10-05
Last query:
2012-10-05
Last reply:
2012-10-05
Tushar Patil (tpatil) said : #1

If I run swift-recon -d command on the swift proxy node, it doesn't give the above error, but I see the same above error after I run the same command on the swift storage node.

Samuel Merritt (torgomatic) said : #2

I'm guessing that you're running a newer version of Swift on the ring-builder machine than you are on the object server.

See https://github.com/openstack/swift/blob/master/CHANGELOG section "1.7.0"; there's a bit in there that talks about a ring format change.

Tushar Patil (tpatil) said : #3

You are correct, the version on the storage nodes is older version (1.4.8) and on the ring builder machine it is 1.7.1. After upgrading to the 1.7.1. version, I could able to run swift_*_replicator services successfully.
Thank you very much for your help!!!

I am getting the exact same error while using 1.4.8 on all my nodes.

Any thoughs or advice ?

Samuel Merritt (torgomatic) said : #5

Either (a) do what Tushar did and upgrade your nodes, or (b) build your rings with Swift 1.4.8.

Samuel Merritt (torgomatic) said : #6

Either (a) do what Tushar did and upgrade your nodes, or (b) build your rings with Swift 1.4.8.