[
https://issues.apache.org/jira/browse/NIFI-8038?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17238357#comment-17238357
]
ASF subversion and git services commented on NIFI-8038:
-------------------------------------------------------
Commit 7ad9520079fdbe4efe47ed5b6248ec513fd0ca0b in nifi's branch
refs/heads/main from Mark Payne
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=7ad9520 ]
NIFI-8041: Refactored API for stateless nifi so that calling
StatelessDataflow.trigger() returns an object that allows the caller to wait
for the result, cancel the result, etc. and then optionally acknowledge the
completion. This allows the caller to block the completion of
ProcessSession.commit() until it has handled the output of the dataflow
execution.
NIFI-8038: Fixed deadlock that can occur when updating Parameter Context
This closes #4684.
Signed-off-by: Bryan Bende <[email protected]>
> Potential deadlock when updating parameter contexts
> ---------------------------------------------------
>
> Key: NIFI-8038
> URL: https://issues.apache.org/jira/browse/NIFI-8038
> Project: Apache NiFi
> Issue Type: Bug
> Components: Core Framework
> Reporter: Mark Payne
> Assignee: Mark Payne
> Priority: Critical
>
> Ran into the following deadlock when starting NiFi Stateless but can occur in
> traditional NiFi as well:
> {code:java}
> Java stack information for the threads listed above:
> ===================================================
> "Component Validation Thread-1":
> at sun.misc.Unsafe.park(Native Method)
> - parking to wait for <0x00000000f8492308> (a
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
> at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
> at
> java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
> at
> org.apache.nifi.parameter.StandardParameterContext.getVersion(StandardParameterContext.java:197)
> at
> org.apache.nifi.controller.PropertyConfiguration$ComputedEffectiveValue.matches(PropertyConfiguration.java:122)
> at
> org.apache.nifi.controller.PropertyConfiguration.getEffectiveValue(PropertyConfiguration.java:60)
> at
> org.apache.nifi.processor.StandardValidationContext.<init>(StandardValidationContext.java:89)
> at
> org.apache.nifi.processor.StandardValidationContextFactory.newValidationContext(StandardValidationContextFactory.java:42)
> at
> org.apache.nifi.controller.AbstractComponentNode.getValidationContext(AbstractComponentNode.java:1098)
> at
> org.apache.nifi.controller.AbstractComponentNode.performValidation(AbstractComponentNode.java:587)
> at
> org.apache.nifi.components.validation.StandardValidationTrigger.trigger(StandardValidationTrigger.java:52)
> at
> org.apache.nifi.components.validation.StandardValidationTrigger.lambda$triggerAsync$0(StandardValidationTrigger.java:45)
> at
> org.apache.nifi.components.validation.StandardValidationTrigger$$Lambda$306/401130380.run(Unknown
> Source)
> at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
> "main":
> at sun.misc.Unsafe.park(Native Method)
> - parking to wait for <0x00000000f864bf70> (a
> java.util.concurrent.locks.ReentrantLock$NonfairSync)
> at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
> at
> java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
> at
> java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
> at
> org.apache.nifi.controller.AbstractComponentNode.resetValidationState(AbstractComponentNode.java:999)
> at
> org.apache.nifi.controller.AbstractComponentNode.onParametersModified(AbstractComponentNode.java:908)
> at
> org.apache.nifi.groups.StandardProcessGroup.lambda$onParameterContextUpdated$20(StandardProcessGroup.java:3081)
> at
> org.apache.nifi.groups.StandardProcessGroup$$Lambda$289/1815079573.accept(Unknown
> Source)
> at java.util.ArrayList.forEach(ArrayList.java:1259)
> at
> org.apache.nifi.groups.StandardProcessGroup.onParameterContextUpdated(StandardProcessGroup.java:3081)
> at
> org.apache.nifi.parameter.StandardParameterContext.setParameters(StandardParameterContext.java:142)
> at
> org.apache.nifi.stateless.engine.StandardStatelessEngine.overrideParameters(StandardStatelessEngine.java:385)
> at
> org.apache.nifi.stateless.engine.StandardStatelessEngine.createFlow(StandardStatelessEngine.java:164)
> at
> org.apache.nifi.stateless.flow.StandardStatelessDataflowFactory.createDataflow(StandardStatelessDataflowFactory.java:201)
> at
> org.apache.nifi.stateless.bootstrap.StatelessBootstrap.createDataflow(StatelessBootstrap.java:60)
> at
> org.apache.nifi.stateless.bootstrap.RunStatelessFlow.createDataflow(RunStatelessFlow.java:97)
> at
> org.apache.nifi.stateless.bootstrap.RunStatelessFlow.main(RunStatelessFlow.java:48)Found
> 1 deadlock. {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)