From 4eaab9db37c5fa2a3203952e3188bd41da66bf9b Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Tue, 18 Oct 2016 11:18:57 -0400 Subject: [PATCH] Avoid inifinite replay loop on bad previouslogfile If circumstances result in a log file after rollover pointing at itself, break out rather than looping trying to get the same data from itself. --- confluent_server/confluent/log.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/confluent_server/confluent/log.py b/confluent_server/confluent/log.py index 662294a2..e336c9b4 100644 --- a/confluent_server/confluent/log.py +++ b/confluent_server/confluent/log.py @@ -613,8 +613,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)