You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@chukwa.apache.org by "Sourygna Luangsay (JIRA)" <ji...@apache.org> on 2012/11/01 20:33:12 UTC
[jira] [Commented] (CHUKWA-668) Infinite loop in FileTailingAdaptor
[ https://issues.apache.org/jira/browse/CHUKWA-668?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13488963#comment-13488963 ]
Sourygna Luangsay commented on CHUKWA-668:
------------------------------------------
The patch I submit fix the loop problem.
It also covers 2 other small bugs:
- In LWFTAdaptor#tailFile(), return value hasMoreData was never updated, causing some problem
if the length of the data appended is greater than MAX_READ_SIZE_OPT.
- In FileTailingAdaptor#tailFile(), I think we shouldn't call slurp if len == fileReadOffset and
fixedNameLastModified <= lastSlurpTime (the file just stopped receiving more logs) so
I moved the slurp call in the "if (fixedNameLastModified > lastSlurpTime)" condition.
> Infinite loop in FileTailingAdaptor
> -----------------------------------
>
> Key: CHUKWA-668
> URL: https://issues.apache.org/jira/browse/CHUKWA-668
> Project: Chukwa
> Issue Type: Bug
> Components: Data Collection
> Affects Versions: 0.6.0
> Reporter: Sourygna Luangsay
> Fix For: 0.6.0
>
> Attachments: chukwa-668.patch
>
>
> In LWFTAdaptor.java, lastSlurpTime is never updated, triggering an infinite loop if we use the
> adaptor FileTailingAdaptor and subclass adaptors.
> Loop occurs like this:
> 1) lastSlurpTime is never changed and thus always 0.
> 2) we append some data to the log file and we do a normal slurp
> 3) after this slurp, we have: len == fileReadOffset && fixedNameLastModified > lastSlurpTime
> thus we think log file has rotated when it hasn't: fileReadOffset is reset to 0
> 4) we get: len > fileReadOffset and so we do a slurp of len bytes.
> 5) we are in the same situation as 3) -> infinite loop: the agent never stops sending chunks
> to the collector although log files does not change.
> It seems like this bug comes from CHUKWA-646. The first patch tailfile.patch seemed to do it
> right but in the second patch, the line "lastSlurpTime = System.currentTimeMillis();" just
> disapeared from LWFTAdaptor.java.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira