[
https://issues.apache.org/jira/browse/NIFI-16315?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18113604#comment-18113604
]
ASF subversion and git services commented on NIFI-16315:
--------------------------------------------------------
Commit fd59f5df4afc2f00755726aad5562750c2136391 in nifi's branch
refs/heads/NIFI-16315 from Joe Witt
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=fd59f5df4af ]
NIFI-16315 Remove additional PutUDP payload tests
Retain the oversized payload coverage in TestPutUDP and remove the standalone
test class following deprecation of the processor.
Co-authored-by: Cursor <[email protected]>
> PutUDP should reject oversized FlowFiles before copying content into a
> datagram
> -------------------------------------------------------------------------------
>
> Key: NIFI-16315
> URL: https://issues.apache.org/jira/browse/NIFI-16315
> Project: Apache NiFi
> Issue Type: Improvement
> Reporter: Joe Witt
> Assignee: Joe Witt
> Priority: Major
> Time Spent: 50m
> Remaining Estimate: 0h
>
> PutUDP documents that a FlowFile larger than the UDP transport limit
> (generally just under 64KB) is marked failed. It never checks size.
> onTrigger always copies the entire FlowFile with IOUtils.toByteArray, then
> sendEvent. The only oversized handling is whatever Exception the send throws
> after that copy. testSendLargeFileInvalid (1 MB) already takes that path: the
> array is allocated, send fails, catch Exception routes to failure.
> That does not hold for a FlowFile large enough to exhaust the heap.
> toByteArray can throw OutOfMemoryError. The catch is Exception, not
> Throwable, so OOM never reaches REL_FAILURE and can take down the timer
> thread.
> IPv4 UDP payload cannot exceed 65,507 bytes (65,535 − 8 UDP − 20 IP). A
> FlowFile larger than that cannot be a single datagram and should be rejected
> using flowFile.getSize() before any content copy.
> Proposed change:
> - If getSize() exceeds the IPv4 UDP maximum payload, penalize and route to
> failure without reading content.
> - Keep the existing send-failure path for sizes that are legal for UDP but
> still rejected by the local stack (the current tests treat ~32 KB as
> sendable).
> - Do not change hostname/port EL or the Netty sender.
> Out of scope:
> - Do not add record splitting or delimiter framing. PutUDP is one FlowFile,
> one datagram.
> - Do not start a campaign to remove toByteArray from other processors.
> Tests (TestPutUDP, in-process DatagramSocket):
> - FlowFile larger than 65,507 bytes routes to failure. Do not allocate a
> multi-GB array in CI; enqueue a modest oversize (e.g. 70 KB) and assert
> failure plus that the processor returns without depending on send.
> - Existing ~32 KB success path still sends.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)