[ https://issues.apache.org/jira/browse/IO-530?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Randall Theobald updated IO-530: -------------------------------- Attachment: io-530.patch Simple patch to add delay to the tight loop. > Tailer pegs CPU if file disappears and doesn't come back > -------------------------------------------------------- > > Key: IO-530 > URL: https://issues.apache.org/jira/browse/IO-530 > Project: Commons IO > Issue Type: Bug > Affects Versions: 2.5 > Reporter: Randall Theobald > Priority: Critical > Attachments: io-530.patch > > > I ran into a situation where a bug in my log rotation leads to the tailed > file being renamed, but the original file name does not re-appear (new log > entries still go to the renamed log file). This uncovered a bug in the Tailer > class. In this case, tailer enters a tight loop trying to re-open the file: > {code} > while (getRun()) { > final boolean newer = FileUtils.isFileNewer(file, last); // > IO-279, must be done first > // Check the file length to see if it was rotated > final long length = file.length(); > if (length < position) { > // File was rotated > listener.fileRotated(); > // Reopen the reader after rotation ensuring that the old > file is closed iff we re-open it > // successfully > try (RandomAccessFile save = reader) { > reader = new RandomAccessFile(file, RAF_MODE); > // At this point, we're sure that the old file is > rotated > // Finish scanning the old file and then we'll start > with the new one > try { > readLines(save); > } catch (IOException ioe) { > listener.handle(ioe); > } > position = 0; > } catch (final FileNotFoundException e) { > // in this case we continue to use the previous > reader and position values > listener.fileNotFound(); > } > continue; > {code} > Since a non-existent file returns a length of zero, we keep entering this top > loop, trying to open the missing file, getting a FileNotFoundException and > starting over. > There should be some delay here. -- This message was sent by Atlassian JIRA (v6.3.15#6346)