Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
When a RemoteProcessGroup is sending data to another NiFi instance, the protocol should establish a transaction and then send a sequence of FlowFiles following a pattern along the lines of:
<FlowFile Follows><FlowFile Attributes><FlowFile Content> <FlowFile Follows><FlowFile Attributes><FlowFile Content> <FlowFile Follows><FlowFile Attributes><FlowFile Content> <Finished Transaction>
However, currently, the protocol is flushing the Socket's output buffer each that that it indicates that a FlowFile follows, and again after each FlowFile. So it's more like:
<FlowFile Follows>*Flush Buffer* <FlowFile Attributes><FlowFile Content>*Flush Buffer* <FlowFile Follows>*Flush Buffer* <FlowFile Attributes><FlowFile Content>*Flush Buffer* <FlowFile Follows>*Flush Buffer* <FlowFile Attributes><FlowFile Content>*Flush Buffer*
As a result, when sending a large number of smaller FlowFiles, we end up constantly flushing data to the socket, which results in dramatically worse performance.
Attachments
Issue Links
- links to