diff --git a/confluent_server/confluent/log.py b/confluent_server/confluent/log.py index 662294a2..5e7c33a1 100644 --- a/confluent_server/confluent/log.py +++ b/confluent_server/confluent/log.py @@ -444,12 +444,17 @@ class TimedAndSizeRotatingFileHandler(BaseRotatingHandler): # As time rolling happens, reset statistics count self.sizeRollingCount = 0 dbfn = self.binpath + "." + time.strftime(self.suffix, timeTuple) + odbfn = dbfn dtfn = self.textpath + "." + time.strftime(self.suffix, timeTuple) - - if os.path.exists(dbfn): - os.remove(dbfn) - if os.path.exists(dtfn): - os.remove(dtfn) + odtfn = dtfn + append=1 + while os.path.exists(dbfn): + dbfn = odbfn + '.{}'.format(append) + append += 1 + append=1 + while os.path.exists(dtfn): + dtfn = odtfn + '.{}'.format(append) + append += 1 if os.path.exists(self.binpath): os.rename(self.binpath, dbfn) if os.path.exists(self.textpath): @@ -613,8 +618,14 @@ class Logger(object): struct.unpack(">BBIHIBBH", recbytes) # rolling events found. if ltype == DataTypes.event and evtdata == Events.logrollover: - textpath, binpath = parse_last_rolling_files(textfile, offset, - datalen) + txtpath, bpath = parse_last_rolling_files(textfile, offset, + datalen) + if txtpath == textpath: + break + if bpath == binpath: + break + textpath = txtpath + binpath = bpath # Rolling event detected, close the current bin file, then open # the renamed bin file. flock(binfile, LOCK_UN)