path: root/bin/gluster-swift-object-expirer
diff options
authorPrashanth Pai <>2016-03-18 18:09:46 +0530
committerThiago da Silva <>2016-04-15 05:27:54 -0700
commit2bd696e392e420a2521dcca0b8613122d8169025 (patch)
tree9cd42e35957c0df07696e160f357019fde78c2d4 /bin/gluster-swift-object-expirer
parent43da7927560811c55838a6a1c2d0ee1a52aada40 (diff)
Enhance object expiration
This change re-introduces object expiration feature with some internal differences from earlier implementation such as: * Creation of zero-byte tracker object is performed directly on the mount point. Earlier HTTP request was sent to object server for the same. This incurred overhead of metadata creation for these zero-byte files which isn't necessarry as all required information is encoded in the path itself. * Crawling of zero-byte tracker objects is done by the object expirer daemon itself and not container server. * Deletion of tracker object is performed by the object expiration daemon directly on mount point. Deletion of actual data object is not carried out by object expiration daemon directly. The object expirer sends a DELETE request to object server which deletes the actual object. This behaviour is not changed. There is no change in behaviour in comparison with older implementation. This is asserted by re-enabling existing functional tests without any changes. Change-Id: I01dc77cc4db3be3147d54e3aa2a19ed182498900 Signed-off-by: Prashanth Pai <> Reviewed-on: Reviewed-by: Thiago da Silva <> Tested-by: Thiago da Silva <>
Diffstat (limited to 'bin/gluster-swift-object-expirer')
1 files changed, 33 insertions, 0 deletions
diff --git a/bin/gluster-swift-object-expirer b/bin/gluster-swift-object-expirer
new file mode 100755
index 0000000..b5db80f
--- /dev/null
+++ b/bin/gluster-swift-object-expirer
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+# Copyright (c) 2016 Red Hat
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+from swift.common.daemon import run_daemon
+from swift.common.utils import parse_options
+from gluster.swift.obj.expirer import ObjectExpirer
+from optparse import OptionParser
+if __name__ == '__main__':
+ parser = OptionParser("%prog CONFIG [options]")
+ parser.add_option('--processes', dest='processes',
+ help="Number of processes to use to do the work, don't "
+ "use this option to do all the work in one process")
+ parser.add_option('--process', dest='process',
+ help="Process number for this process, don't use "
+ "this option to do all the work in one process, this "
+ "is used to determine which part of the work this "
+ "process should do")
+ conf_file, options = parse_options(parser=parser, once=True)
+ run_daemon(ObjectExpirer, conf_file, **options)