diff options
author | Venky Shankar <venky@gluster.com> | 2011-09-28 16:38:00 +0530 |
---|---|---|
committer | Vijay Bellur <vijay@gluster.com> | 2011-10-20 23:26:23 -0700 |
commit | bdf20a205a4d67d5f6d3ac6010a34291c2822a80 (patch) | |
tree | 412c56b2d2f765011a7b158f4b31b75a7bffce2b /xlators/features/marker/utils/syncdaemon/syncdutils.py | |
parent | 84ebee8c20ce667a5ec5fddc0aa47f8b5bef39f8 (diff) |
cli: add geo-replication log-rotate command
Rotating geo-replication master/monitor log files from cli.
On invocation, the log file for a given master-slave session
is backed up with the current timestamp suffixed to the file
name and signal is sent to gsyncd to start logging to a new
log file.
Sample commands:
* Rotate log file for this <master>:<slave> session:
gluster volume geo-replication <master> <slave> log-rotate
* Rotate log files for all session for master volume <master>
gluster volume geo-replication <master> log-rotate
* Rotate log files for all sessions:
gluster volume geo-replication log-rotate
Change-Id: I75f641b4e082a04d5373c18583ca4a1d9651d27a
BUG: 3519
Reviewed-on: http://review.gluster.com/529
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Csaba Henk <csaba@gluster.com>
Diffstat (limited to 'xlators/features/marker/utils/syncdaemon/syncdutils.py')
-rw-r--r-- | xlators/features/marker/utils/syncdaemon/syncdutils.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/xlators/features/marker/utils/syncdaemon/syncdutils.py b/xlators/features/marker/utils/syncdaemon/syncdutils.py index e3098d5f4..59defa711 100644 --- a/xlators/features/marker/utils/syncdaemon/syncdutils.py +++ b/xlators/features/marker/utils/syncdaemon/syncdutils.py @@ -6,9 +6,11 @@ import fcntl import shutil import logging from threading import Lock, Thread as baseThread -from errno import EACCES, EAGAIN, EPIPE, ENOTCONN +from errno import EACCES, EAGAIN, EPIPE, ENOTCONN, EINTR from signal import SIGTERM, SIGKILL from time import sleep +import select as oselect +from os import waitpid as owaitpid try: from cPickle import PickleError except ImportError: @@ -247,3 +249,21 @@ def boolify(s): logging.warn("Unknown string (%s) in string to boolean conversion defaulting to False\n" % (s)) return rv + +def eintr_wrap(func, exc, *a): + """ + wrapper around syscalls resilient to interrupt caused + by signals + """ + while True: + try: + return func(*a) + except exc, ex: + if not ex[0] == EINTR: + raise GsyncdError(ex[1]) + +def select(*a): + return eintr_wrap(oselect.select, oselect.error, *a) + +def waitpid (*a): + return eintr_wrap(owaitpid, OSError, *a) |