Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
0.4.0
-
None
-
Debian 5.0, Hadoop 0.20
-
Fixed infinite loop archiving at midnight. (Sourygna Luangsay via Eric Yang)
Description
The archive manager Chukwa daemon enters an infinite loop between 24H to 1H. This entails an increase of the namenode load and a huge increase of both chukwa and namenode logs.
Problem seems to come from the start function of ChukwaArchiveManager.java (in package org/apache/hadoop/chukwa/extraction/archive). At midnight, we get two directories in /chukwa/dataSinkArchives/ (one for the last day and one for the new day). This means that we neither enter the "daysInRawArchiveDir.length == 0" condition nor the "daysInRawArchiveDir.length == 1" one. processDay function is then called but few is done due to "modificationDate < oneHourAgo" condition.
Finally, we loop without having slept or deleted last day directory. Such process repeats itself during one hour.
Here is how I propose to change the "daysInRawArchiveDir.length == 1" condition block in the start function:
148 if (daysInRawArchiveDir.length >= 1 ) {
149 long nextRun = lastRun + (2*ONE_HOUR) - (1*60*1000);// 2h -1min
150 if (now < nextRun)
155 }
As for me, it removed the infinite loop problem. But maybe there is a reason to separate "1 directory" case from "many directories" case. I've been reading documentation and subversion but could not find it.
If there is one, could someone explain it to me?
Regards.