You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2026/01/09 13:38:00 UTC

[jira] [Commented] (NIFI-15431) PutSmbFile can fail with "StandardContentClaim is already marked for transfer"

    [ https://issues.apache.org/jira/browse/NIFI-15431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18050852#comment-18050852 ] 

ASF subversion and git services commented on NIFI-15431:
--------------------------------------------------------

Commit 3a94d2688365a19695b1f0e7eeedae291c8801ed in nifi's branch refs/heads/main from Peter Turcsanyi
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=3a94d26883 ]

NIFI-15431 Fixed error handling in PutSmbFile to allow batch processing to continue


> PutSmbFile can fail with "StandardContentClaim is already marked for transfer"
> ------------------------------------------------------------------------------
>
>                 Key: NIFI-15431
>                 URL: https://issues.apache.org/jira/browse/NIFI-15431
>             Project: Apache NiFi
>          Issue Type: Bug
>            Reporter: Peter Turcsanyi
>            Assignee: Peter Turcsanyi
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> PutSmbFile processes the FlowFiles in batches (one onTrigger fetches N FlowFiles and uploads them in a loop). The error handling of individual FlowFiles is essentially separate: the successfully uploaded files go to the Success relationship while failed ones go to Failure. However, in some error cases - such as directory creation failure or generic error - only the outer level error handler catches the exception. This handler is intended for connection or authentication errors and attempts to transfer all FlowFiles to Failure. This may result in a "StandardContentClaim is already marked for transfer" error, because some FlowFiles in the batch have already been processed successfully and routed to Success. Consequently, the entire batch is rolled back.
> Stack trace:
> {code:java}
> 2026-01-06 17:20:32,216 ERROR [Timer-Driven Process Thread-10] o.apache.nifi.processors.smb.PutSmbFile PutSmbFile[id=136e1017-a2b5-3680-b7f5-c08813f8e62e] Processing halted: yielding [1 sec]
> org.apache.nifi.processor.exception.FlowFileHandlingException: StandardFlowFileRecord[uuid=698f2cfd-e84e-4cc2-8647-d502926cf92a,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1767716178875-1, container=default, section=1], offset=24, length=4],offset=0,name=698f2cfd-e84e-4cc2-8647-d502926cf92a,size=4] is already marked for transfer
> 	at org.apache.nifi.controller.repository.StandardProcessSession.validateRecordState(StandardProcessSession.java:3703)
> 	at org.apache.nifi.controller.repository.StandardProcessSession.validateRecordState(StandardProcessSession.java:3685)
> 	at org.apache.nifi.controller.repository.StandardProcessSession.validateRecordState(StandardProcessSession.java:3716)
> 	at org.apache.nifi.controller.repository.StandardProcessSession.transfer(StandardProcessSession.java:2396)
> 	at org.apache.nifi.processors.smb.PutSmbFile.onTrigger(PutSmbFile.java:418)
> 	at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
> 	at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1274)
> 	at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:229)
> 	at org.apache.nifi.controller.scheduling.AbstractTimeBasedSchedulingAgent.lambda$doScheduleOnce$0(AbstractTimeBasedSchedulingAgent.java:59)
> 	at org.apache.nifi.engine.FlowEngine.lambda$wrap$1(FlowEngine.java:105)
> 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
> 	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
> 	at java.base/java.lang.Thread.run(Thread.java:1583)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)