Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 1512333 - [RGW] Swift object expiry incorrectly trims entries, leaving behind some of the objects to be not deleted
Summary: [RGW] Swift object expiry incorrectly trims entries, leaving behind some of t...
Keywords:
Status: CLOSED DUPLICATE of bug 1514210
Alias: None
Product: Red Hat Ceph Storage
Classification: Red Hat
Component: RGW
Version: 2.3
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: rc
: 2.5
Assignee: Matt Benjamin (redhat)
QA Contact: ceph-qe-bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-11-12 21:59 UTC by Benjamin Schmaus
Modified: 2018-01-03 15:59 UTC (History)
8 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-01-03 15:59:28 UTC


Attachments (Terms of Use)


Links
System ID Priority Status Summary Last Updated
Ceph Project Bug Tracker 22084 None None None 2017-11-12 21:59:38 UTC

Description Benjamin Schmaus 2017-11-12 21:59:38 UTC
Description of problem:
In cls_timeindex_list() though `to_index` has expired for a timespan, the marker is set for a subsequent index during the time boundary check. This marker is further returned to RGWObjectExpirer::process_single_shard(), where this out_marker is trimmed from the respective shard, resulting in a lost removal hint and a leaked object.

Version-Release number of selected component (if applicable):
2.3

How reproducible:
100%

Steps to Reproduce:
To reproduce this, I've used the following simple script and by having an aggressive object expiry gc interval setting rgw_objexp_gc_interval = 30

!/bin/sh
object="myobjects" 
container=newcontainer
objects=50
j=1
while [ $j -lt $objects ]
do
final_object=$(printf "%s$j" "$object")
touch $final_object
swift -A http://localhost:80/auth -U test:tester -K testing upload $container $final_object -H X-Delete-After:60
j=`expr $j + 1`
done 

For one such run, am left with the following leaked objects after the run

swift -A http://localhost:80/auth -U test:tester -K testing list newcontainer
myobjects20
myobjects24
myobjects33


Actual results:
Objects not expired

Expected results:
Objects should be expired

Additional info:

Upstream PR: https://github.com/ceph/ceph/pull/18821


Note You need to log in before you can comment on or make changes to this bug.