Boris Brinza created LOGBACK-1344: ------------------------------------- Summary: RollingCalendar invalid period barrier closed computation Key: LOGBACK-1344 URL: https://jira.qos.ch/browse/LOGBACK-1344 Project: logback Issue Type: Bug Components: logback-core Affects Versions: 1.2.3 Reporter: Boris Brinza Assignee: Logback dev list
In RollingCalendar method periodBarriersCrossed, when periods are computed for TOP_OF_HOUR periodicity, unnecessary (and invalid) type cast is performed: {code:java} case TOP_OF_HOUR: return (long)((int)diff) / 3600000L;{code} in case diff > MAX_INT, return from method is wrong. example: {code:java} <fileNamePattern>logs/%d{yyyy/MM/dd,aux}/eps_%d{yyyyMMdd-HH}h.%i.log.zip</fileNamePattern> <cleanHistoryOnStart>true</cleanHistoryOnStart>{code} After i start application, method TimeBasedArchiverRemover.clean(Date now) is in some point called. Then, computation of period elapsed since last clean is called with parameters: {code:java} periodsElapsed = this.rc.periodBarriersCrossed(nowInMillis, nowInMillis + 2764800000L){code} where nowInMillis = 1507034734848 (date = Tue Oct 03 14:45:34 CEST 2017) In method, diff is computed (diff = 2761200000). This value > MAX_INT, so expression {code:java} (long)((int)diff) / 3600000L = -426{code} so no clean up is performed -- This message was sent by Atlassian JIRA (v7.3.1#73012) _______________________________________________ logback-dev mailing list logback-dev@qos.ch http://mailman.qos.ch/mailman/listinfo/logback-dev