Daniel Chaffelson created NIFI-15709:
----------------------------------------
Summary: ConsumeJMS RecordWriter fails with IllegalStateException
when schema retrieval fails
Key: NIFI-15709
URL: https://issues.apache.org/jira/browse/NIFI-15709
Project: Apache NiFi
Issue Type: Bug
Components: Extensions
Affects Versions: 2.7.2
Reporter: Daniel Chaffelson
When using ConsumeJMS with Record Reader/Writer and any Output Strategy, if
{{writerFactory.getSchema()}} throws an exception during record processing, the
processor fails with:
{{java.lang.IllegalStateException: StandardFlowFileRecord[uuid=...] already in
use for an active callback or an OutputStream created by
ProcessSession.write(FlowFile) has not been closed}}
{*}Root Cause{*}:
In {{{}RecordWriter.java{}}}, line 130 opens an OutputStream on the FlowFile
via {{{}session.write(flowFile){}}}. If the subsequent
{{writerFactory.getSchema()}} call (line 134) throws an exception, the error
handling path (lines 136-139) calls {{continue}} without closing the
OutputStream. When {{recordCount == 0}} at line 182-183,
{{session.remove(flowFile)}} is called while the OutputStream is still open,
triggering the IllegalStateException.
{*}Steps to Reproduce{*}:
# Configure ConsumeJMS with:
** Record Reader: JsonTreeReader (Schema Access Strategy: Infer Schema)
** Record Writer: JsonRecordSetWriter
** Output Strategy: Use Wrapper (or Use Appender)
# Consume a JMS message where schema inference succeeds for RecordReader but
fails for RecordSetWriterFactory.getSchema()
# Processor throws IllegalStateException
{*}Fix{*}:
Close {{rawOut}} in the catch block before the {{continue}} statement.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)