so I have a directory that looks like this:
clayg@swift:~$ ls /srv/node1/sdb1/objects/736/ce8/b80cbd53563425737e12108c6b497ce8/
1386805231.06924.meta
The object-server just 500's:
Dec 11 16:46:21 swift object-server: ERROR __call__ error with HEAD /sdb4/736/AUTH_test/test/asdf : #012Traceback (most recent call last):#012 File "/mnt/workspace/swift/swift/obj/server.py", line 661, in __call__#012 res = method(req)#012 File "/mnt/workspace/swift/swift/common/utils.py", line 2012, in wrapped#012 return func(*a, **kw)#012 File "/mnt/workspace/swift/swift/common/utils.py", line 760, in _timing_stats#012 resp = func(ctrl, *args, **kwargs)#012 File "/mnt/workspace/swift/swift/obj/server.py", line 540, in HEAD#012 metadata = disk_file.read_metadata()#012 File "/mnt/workspace/swift/swift/obj/diskfile.py", line 1258, in read_metadata#012 with self.open():#012 File "/mnt/workspace/swift/swift/obj/diskfile.py", line 973, in open#012 data_file, meta_file, ts_file = self._get_ondisk_file()#012 File "/mnt/workspace/swift/swift/obj/diskfile.py", line 1088, in _get_ondisk_file#012 " %s, meta_file: %s, ts_file: %s" % (data_file, meta_file, ts_file)#012AssertionError: On-disk file search algorithm contract is broken: data_file: None, meta_file: /srv/node4/sdb4/objects/736/ce8/b80cbd53563425737e12108c6b497ce8/1386805246.55842.meta, ts_file: None (txn: tx5171b4f05f244420824ea-0052a9075d)
Dec 11 16:46:21 swift object-server: 127.0.0.1 - - [12/Dec/2013:00:46:21 +0000] "HEAD /sdb4/736/AUTH_test/test/asdf" 500 1046 "HEAD http://localhost:8080/v1/AUTH_test/test/asdf" "tx5171b4f05f244420824ea-0052a9075d" "proxy-server 1794" 0.0021
Dec 11 16:46:21 swift proxy-server: ERROR 500 From Object Server 127.0.0.1:6040/sdb4 (txn: tx5171b4f05f244420824ea-0052a9075d)
My auditor is also whining about AssertionError:
object-auditor: ERROR Trying to audit /srv/node1/sdb1/objects/736/ce8/b80cbd53563425737e12108c6b497ce8: #012Traceback (most recent call last):#012 File "/mnt/workspace/swift/swift/obj/auditor.py", line 155, in failsafe_object_audit#012 self.object_audit(location)#012 File "/mnt/workspace/swift/swift/obj/auditor.py", line 173, in object_audit#012 with df.open():#012 File "/mnt/workspace/swift/swift/obj/diskfile.py", line 973, in open#012 data_file, meta_file, ts_file = self._get_ondisk_file()#012 File "/mnt/workspace/swift/swift/obj/diskfile.py", line 1088, in _get_ondisk_file#012 " %s, meta_file: %s, ts_file: %s" % (data_file, meta_file, ts_file)#012AssertionError: On-disk file search algorithm contract is broken: data_file: None, meta_file: /srv/node1/sdb1/objects/736/ce8/b80cbd53563425737e12108c6b497ce8/1386805231.06924.meta, ts_file: None
ssync replicator too:
object-replicator: 127.0.0.1:6010/sdb1/736 Unexpected response: ":ERROR: 0 'On-disk file search algorithm contract is broken: data_file: None, meta_file: /srv/node1/sdb1/objects/736/ce8/b80cbd53563425737e12108c6b497ce8/1386805231.06924.meta, ts_file: None'"
Seems like in that condition someone could step up to the table and quarantine that bad-boy or push in a datafile under it or something. e.g. rsync seems to square it as long as it noticed the hashes.pkl is out of date...
Yeah, quarantine is probably the way to go here, then a 404 from the object server (or whatever it usually does on quarantine).
I guess you could get here if an object server is unlinking stuff and dies halfway through...?