a little defensiveness
[mirror/userdir-ldap.git] / ud-replicated
old mode 100644 (file)
new mode 100755 (executable)
index f38eba4..bb4fa37
@@ -63,14 +63,22 @@ FORMAT='%(asctime)s ud-replicated: %(levelname)s %(message)s'
 SFORMAT='ud-replicated[%(process)s]: %(message)s'
 logging.basicConfig(format=FORMAT, level=lvl)
 LOG = logging.getLogger(__name__)
-syslog_handler = logging.handlers.SysLogHandler(address = '/dev/log')
+logsock = '/dev/log'
+if os.path.exists('/var/run/log'): # Kfreebsd randomly different
+    logsock = '/var/run/log'
+syslog_handler = logging.handlers.SysLogHandler(address = logsock)
 formatter = logging.Formatter(SFORMAT)
 syslog_handler.setFormatter(formatter)
 LOG.addHandler(syslog_handler)
 
+last_run = 0
+
 def do_replicate(message):
-    last_update = time.time()
-    LOG.debug("Got message at %s" % last_update)
+    global last_run
+    last_update = int(time.time())
+    LOG.debug("Got message at %s: %s" % (last_update, message.get('message', message)))
+    if last_run > message.get('timestamp', last_update):
+        return
 
     command = ['/usr/bin/ud-replicate']
     if options.dryrun:
@@ -86,7 +94,7 @@ def do_replicate(message):
             LOG.debug('%s finished with ret: 0' % ' '.join(command))
         finally:
             os.environ['TERM'] = old_term
-    LOG.debug(message)
+    last_run = last_update
 
 def main():
     conn = Connection(conf=mq_conf)