When using SpillableMemoryChannel, the values of all metrics of channel component int monitoring system is zero.It's caused by a bug belowed.
SpillableMemoryChannel extends FileChannel,and each of them have a ChannelCounter-Type field named of 'channelCounter'. FileChannel's channelCounter filed is private, so it can not be override by SpillableMemoryChannel. SpillableMemoryChannel's channelCounter is initialized in configure method(Line 600 at SpillableMemoryChannel.java), then super.configure() is called(Line 727 at SpillableMemoryChannel.java). So FileChannel's channelCounter is also initialized(Line 267 at SpillableMemoryChannel.java).
When SpillableMemoryChannel start(call start() method), it should and want to register ChannelCounter. In start() method, SpillableMemoryChannel calls super.start() (Line 768 at SpillableMemoryChannel.java), then FileChannel calls channelCounter.start() to register channelCounter. But this channelCounter is the one of FileChannle, not the one of SpillableMemoryChannel!
This bug results that when using SpillableMemoryChannel, the values of all metrics of channel component is zero.
Maybe the qualifier of FileChannel's channelCounter filed should be changed to prtected, and remove the channelCounter filed of SpillableMemoryChannel.
- is duplicated by
FLUME-2634 channelCounter of SpillableMemoryChannel not register
- links to