[
https://issues.apache.org/jira/browse/NIFI-8038?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bryan Bende resolved NIFI-8038.
-------------------------------
Fix Version/s: 1.13.0
Resolution: Fixed
> 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
> Fix For: 1.13.0
>
>
> 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)