Backport #20325
closed
- Tracker changed from Bug to Backport
- Description updated (diff)
description¶
libradosstriper fails to delete striped objects of zero length without returning any kind of error.
Steps to reproduce:
- Create an empty striper object:
~# echo 123 | rados --striper -p sata put test -
~# rados --striper -p sata truncate test 0
~# rados --striper -p sata stat test
sata/test mtime 2017-06-16 02:31:42.000000, size 0
Note: You cannot write empty object straight into libradosstriper, because it's causes an assertion failure. This issue is fixed in commit 7cce1e8c51640f466d8bb37a21c0d5f1b00db8ab which is not currently a part of jewel release.
- Try to remove striped object:
~# rados --striper -p sata rm test
~# echo $?
0
- Check that object is still present:
~# rados -p sata ls
test.0000000000000000
~# rados --striper -p sata ls
test
Expected result:
Striped object is deleted
It seems that stripe math in "libradosstriper::RadosStriperImpl::remove()" is missing corner case of an empty object, so I'm attaching a simple patch to fix this.
Also this issue is probably fixed in commit 7a50ea479e7e5c2909d899d89d33d3fb082257f8, which is not part of the jewel release and pretty massive to backport.
- Description updated (diff)
- Status changed from New to In Progress
- Assignee set to Nathan Cutler
@Nathan Weinberg Cutler: Great, thanks. Yes, of course you have my permission to use this code.
- Status changed from In Progress to Need More Info
Clarifying whether tests need to be added.
- Status changed from Need More Info to Resolved
- Target version set to v10.2.10
The question of tests was answered in the PR.
Also available in: Atom
PDF