-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Warning: "Errorcode: %d cannot get x_attr(%s,%c) from object %s, process %d" #206
Comments
… all possible index operations first, before closing index
A workable solution may be using librados watch/notify mechanism. The sdbox implementation creates a file handle when reading metadata, save_date, get_stream and removes it in dbox_mail_close (sdbox_mail.c). sdbox_sync.c will wait with the deletion using unlink which blocks until all file handler are removed before deleting a file. |
librados create watcher: rados_watch2(io, object,&cookie, watch_notify2_cb, watch_notify2_errcb,NULL); wather callbacks: notify: |
-> more tests under heavy load required to determine scope of this issue. |
**Concurrent read and delete for same object **
The sdbox / mdbox storage plugin, does detect (and sync) concurrent access to a mail object with a filelock. In Ceph is no similar mechanism for an object. So dependent on the actual test (number of users, concurrent users, type of mail operation, ...) the warning with errorcode -2 will occur and the mail object will be marked as expunged.
There is no easy/obvious solution to avoid this, but the timespan a index is locked or has unsaved modifications can be minimized.
e.g. closing the index, before executing / waiting for object deletion.
Discussions are welcome!
The text was updated successfully, but these errors were encountered: