Chesnay Schepler created FLINK-8423:
---------------------------------------
Summary: OperatorChain#pushToOperator catch block may fail with NPE
Key: FLINK-8423
URL:
https://issues.apache.org/jira/browse/FLINK-8423 Project: Flink
Issue Type: Bug
Components: Streaming
Affects Versions: 1.4.0, 1.5.0
Reporter: Chesnay Schepler
Priority: Minor
{code}
@Override
protected <X> void pushToOperator(StreamRecord<X> record) {
try {
// we know that the given outputTag matches our OutputTag so the record
// must be of the type that our operator (and Serializer) expects.
@SuppressWarnings("unchecked")
StreamRecord<T> castRecord = (StreamRecord<T>) record;
numRecordsIn.inc();
StreamRecord<T> copy = castRecord.copy(serializer.copy(castRecord.getValue()));
operator.setKeyContextElement1(copy);
operator.processElement(copy);
} catch (ClassCastException e) {
// Enrich error message
ClassCastException replace = new ClassCastException(
String.format(
"%s. Failed to push OutputTag with id '%s' to operator. " +
"This can occur when multiple OutputTags with different types " +
"but identical names are being used.",
e.getMessage(),
outputTag.getId()));
throw new ExceptionInChainedOperatorException(replace);
} catch (Exception e) {
throw new ExceptionInChainedOperatorException(e);
}
}
{code}
If outputTag is null (as is the case when no sideOutput was defined) the catch block will crash with a NullPointerException. This may happen if {{operator.processElement}} throws a ClassCastException.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)