Errata

Using Flume

Errata for Using Flume

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Printed, PDF, ePub, Mobi,
Page 44
Example 3-3. HTTP Source configuration

The HTTP Source example mentions two configuration parameters incorrectly.

The parameter to enable SSL should be:
agent.sources.httpSrc.enableSSL = true and the parameter to set the keystore password should be:
agent.sources.httpSrc.keystorePassword = UsingApacheFlume

Hari Shreedharan
Hari Shreedharan
 
Oct 17, 2014 
Printed, PDF, ePub, Mobi, , Other Digital Version
Page 62
2nd paragraph

The text in this paragraph that states that the source can block the process producing the data if the channel is full and then continue the process once the channel is no longer full. This is incorrect. While this feature was planned, it has not been completed and is not available in any released version of Flume. This functionality is being tracked on https://issues.apache.org/jira/browse/FLUME-1947

Hari Shreedharan
Hari Shreedharan
 
May 31, 2016 
Printed, PDF, ePub, Mobi, , Other Digital Version
Page 69
2nd Paragraph

The section that mentions importing the flume-jms-source artifact in your pom.xml file incorrectly shows importing flume-hdfs-sink, rather than flume-jms-source. The XML snippet should be:

<dependency>
<groupId>org.apache.flume.flume-ng-sinks</groupId> <artifactId>flume-jms-source</artifactId>
<version>1.5.0</version>
</dependency>

Hari Shreedharan
Hari Shreedharan
 
Jan 05, 2015 
Printed, PDF, ePub, Mobi, , Other Digital Version
Page 87
Table 4-2. File Channel configuration

The checkpointInterval parameter is actually in milliseconds and not in seconds, as shown in the table.

The default value is 30000 (in millis).

Hari Shreedharan
Hari Shreedharan
 
Nov 10, 2014 
Printed, PDF, ePub, Mobi, , Other Digital Version
Page 154
Configuration Example

Immediately after the example configuration, the text says "In this example, the Avro Source writes events to four channels." when it should really be "In this example, the Avro Source writes events to five channels."

Hari Shreedharan
Hari Shreedharan
 
Jan 05, 2015 
PDF
Page 201
3rd paragraph

In the 3rd paragraph of "Failover Sink Processor" the author says "The failover mechanism, though, does not choose a new sink until and unless the current sink fails. This means even though it is possible that the agent with highst priority may have failed and come back online, the failover sink processor does not make the sink writing to that agent active until the currently active sink hits an error".

This statement is simply incorrect. The Failover Sink Processor will retry the failed Sink with higher priority as soon as the failure penalty period is over and If the Sink successfully sends message, It will become the active sink.

The proof of it can be seen at "https://git-wip-us.apache.org/repos/asf?p=flume.git;a=blob;f=flume-ng-core/src/main/java/org/apache/flume/sink/FailoverSinkProcessor.java;h=3bd52f20ddf5522c08aa4a7083a3cfa303b0d999;hb=trunk". I am pasting the code for everyone's convenience:

public Status process() throws EventDeliveryException {
// Retry any failed sinks that have gone through their "cooldown" period
Long now = System.currentTimeMillis();
while(!failedSinks.isEmpty() && failedSinks.peek().getRefresh() < now) {
FailedSink cur = failedSinks.poll();
Status s;
try {
s = cur.getSink().process();
if (s == Status.READY) {
liveSinks.put(cur.getPriority(), cur.getSink());
/* This line proves that the author made a technical mistakes in understanding the working of FailoverSinkProcessor */
activeSink = liveSinks.get(liveSinks.lastKey());
logger.debug("Sink {} was recovered from the fail list",
cur.getSink().getName());
} else {
// if it's a backoff it needn't be penalized.
failedSinks.add(cur);
}
return s;
} catch (Exception e) {
cur.incFails();
failedSinks.add(cur);
}
}
/* Remaining code skipped */
}

Note from the Author or Editor:
Thanks Sheraz for the errata. You are right - that statement is, in fact, incorrect. We will make sure it is corrected when there is an update to the text.

Sheraz Ahmed  Nov 04, 2015 
Printed, PDF, ePub, Mobi,
Page 206
2nd paragraph (above Table 8-1)

The property to configure poll frequency should be "-Dflume.monitoring.pollFrequency" with no whitespace in between poll and Frequency.

Hari Shreedharan
Hari Shreedharan
 
Oct 07, 2014