Hi,
Starting at line 203:
try {
/* bytesRead may not exactly equal the bytes read by a task: split
boundaries aren't
* always at record boundaries, so tasks may need to read into
other splits to complete
* a record. */
inputMetrics.bytesRead = split.inputSplit.value.getLength()
} catch {
case e: java.io.IOException =>
logWarning("Unable to get input size to set InputMetrics for
task", e)
}
context.taskMetrics.inputMetrics = Some(inputMetrics)
If there is IOException, context.taskMetrics.inputMetrics is set by
wrapping inputMetrics - as if there wasn't any error.
I wonder if the above code should distinguish the error condition.
Cheers