diff options
| -rw-r--r-- | geo-replication/syncdaemon/libgfchangelog.py | 5 | ||||
| -rw-r--r-- | geo-replication/syncdaemon/resource.py | 5 | ||||
| -rw-r--r-- | geo-replication/syncdaemon/syncdutils.py | 2 | ||||
| -rw-r--r-- | xlators/features/changelog/lib/src/gf-history-changelog.c | 15 | 
4 files changed, 23 insertions, 4 deletions
diff --git a/geo-replication/syncdaemon/libgfchangelog.py b/geo-replication/syncdaemon/libgfchangelog.py index 1d580caf6e8..d87b56cd941 100644 --- a/geo-replication/syncdaemon/libgfchangelog.py +++ b/geo-replication/syncdaemon/libgfchangelog.py @@ -11,7 +11,7 @@  import os  from ctypes import CDLL, RTLD_GLOBAL, create_string_buffer, get_errno, byref, c_ulong  from ctypes.util import find_library -from syncdutils import ChangelogException +from syncdutils import ChangelogException, ChangelogHistoryNotAvailable  class Changes(object): @@ -99,6 +99,9 @@ class Changes(object):          if ret == -1:              cls.raise_changelog_err() +        if ret == -2: +            raise ChangelogHistoryNotAvailable() +          return (ret, actual_end.value)      @classmethod diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py index bc7b13c95bc..ed0e7efe2b2 100644 --- a/geo-replication/syncdaemon/resource.py +++ b/geo-replication/syncdaemon/resource.py @@ -36,7 +36,7 @@ import syncdutils  from syncdutils import GsyncdError, select, privileged, boolify, funcode  from syncdutils import umask, entry2pb, gauxpfx, errno_wrap, lstat  from syncdutils import NoPurgeTimeAvailable, PartialHistoryAvailable -from syncdutils import ChangelogException +from syncdutils import ChangelogException, ChangelogHistoryNotAvailable  from syncdutils import CHANGELOG_AGENT_CLIENT_VERSION  from gsyncdstatus import GeorepStatus @@ -1503,6 +1503,9 @@ class GLUSTER(AbstractUrl, SlaveLocal, SlaveRemote):                  logging.info('Partial history available, using xsync crawl'                               ' after consuming history till %s' % str(e))                  g1.crawlwrap(oneshot=True, register_time=register_time) +            except ChangelogHistoryNotAvailable: +                logging.info('Changelog history not available, using xsync') +                g1.crawlwrap(oneshot=True, register_time=register_time)              except NoPurgeTimeAvailable:                  logging.info('No stime available, using xsync crawl')                  g1.crawlwrap(oneshot=True, register_time=register_time) diff --git a/geo-replication/syncdaemon/syncdutils.py b/geo-replication/syncdaemon/syncdutils.py index 9d89a3cd415..40eff050a9e 100644 --- a/geo-replication/syncdaemon/syncdutils.py +++ b/geo-replication/syncdaemon/syncdutils.py @@ -501,6 +501,8 @@ class NoPurgeTimeAvailable(Exception):  class PartialHistoryAvailable(Exception):      pass +class ChangelogHistoryNotAvailable(Exception): +    pass  class ChangelogException(OSError):      pass diff --git a/xlators/features/changelog/lib/src/gf-history-changelog.c b/xlators/features/changelog/lib/src/gf-history-changelog.c index ba312e3b10f..5d3def12117 100644 --- a/xlators/features/changelog/lib/src/gf-history-changelog.c +++ b/xlators/features/changelog/lib/src/gf-history-changelog.c @@ -796,6 +796,8 @@ gf_history_changelog (char* changelog_dir, unsigned long start,          ret = pthread_attr_init (&attr);          if (ret != 0) { +                gf_log (this->name, GF_LOG_ERROR, +                        "Pthread init failed: %s", strerror (errno));                  return -1;          } @@ -819,6 +821,9 @@ gf_history_changelog (char* changelog_dir, unsigned long start,          /* basic sanity check */          if (start > end || n_parallel <= 0) { +                gf_log (this->name, GF_LOG_ERROR, "Sanity check failed. " +                        "START - %lu END - %lu THREAD_COUNT - %d", +                        start, end, n_parallel);                  ret = -1;                  goto out;          } @@ -941,8 +946,14 @@ gf_history_changelog (char* changelog_dir, unsigned long start,                          goto out; -                } /* end of range check */ - +                } else {/* end of range check */ +                        gf_log (this->name, GF_LOG_ERROR, "Requested changelog " +                                "range is not available. START - %lu " +                                "CHLOG_MIN - %lu CHLOG_MAX - %lu", +                                start, min_ts, max_ts); +                        ret = -2; +                        goto out; +                }          } /* end of readdir() */          if (!from || !to)  | 
