Review Board 1.7.22

Fix issues with rollsink for slow/blocked append

Review Request #2869 - Created Nov. 17, 2011 and updated

Prasad Mujumdar
esammer, jmhsieh
If the append takes longer than a second, then the roll-trigger thread aborts the append. This results into an interrupted exception that is not handled gracefully and hence causes a nullpointer exception in the pumper thread.

Change the interrupted exception to Runtime so that it can be handled by direct driver. There were a couple of other related issues that are also fixed in the roll sink.
Also it allows the wait time for trigger thread can be configured via flume.collector.roll.timeout property in flume-conf.xml. 
Added new test TestSlowSinkRoll. will run full regression test.
Review request changed
Updated (Nov. 23, 2011, 12:43 a.m.)
Updated the patch to support a timeout value 0 which makes the trigger thread not to interrupt the append. Corrected the space and comments. Added more validations to tests.
Ship it!
Posted (Nov. 23, 2011, 11:07 p.m.)
Hey Prasad,

I'm a little concerned about the possibility of having a deadlock when you disabling a slow/blocked append, but this an improvement because if gives you the option to chooses one behavior or the other.

Please fix the typos and commit.

spelling? rollCanceledAppends 

hm.. I apparently dictionary says cancelled and canceled  are both ok..
typo? gots
typo? testSlowSinkdRoll (extra d?)
Typo? testWaitingSlowSinkdRoll (extra d?)