Mark Payne created NIFI-2975:
--------------------------------
Summary: NiFi attempts to expire FlowFiles before all have been
restored
Key: NIFI-2975
URL: https://issues.apache.org/jira/browse/NIFI-2975
Project: Apache NiFi
Issue Type: Bug
Components: Core Framework
Reporter: Mark Payne
Fix For: 1.2.0
Occasionally, I have seen the following log message in logs/nifi-app.log:
ERROR [Framework Task Thread Thread-1] o.a.n.controller.tasks.ExpireFlowFiles
Failed to expire FlowFiles due to java.lang.IllegalStateException: Cannot
update repository until record recovery has been performed
java.lang.IllegalStateException: Cannot update repository until record recovery
has been performed
at
org.wali.MinimalLockingWriteAheadLog.update(MinimalLockingWriteAheadLog.java:199)
~[nifi-write-ahead-log-1.0.0.2.0.1.0-12.jar:1.0.0.2.0.1.0-12]
at
org.apache.nifi.controller.repository.WriteAheadFlowFileRepository.updateRepository(WriteAheadFlowFileRepository.java:219)
~[nifi-framework-core-1.0.0.2.0.1.0-12.jar:1.0.0.2.0.1.0-12]
at
org.apache.nifi.controller.repository.WriteAheadFlowFileRepository.updateRepository(WriteAheadFlowFileRepository.java:187)
~[nifi-framework-core-1.0.0.2.0.1.0-12.jar:1.0.0.2.0.1.0-12]
at
org.apache.nifi.controller.repository.StandardProcessSession.commit(StandardProcessSession.java:357)
~[nifi-framework-core-1.0.0.2.0.1.0-12.jar:1.0.0.2.0.1.0-12]
at
org.apache.nifi.controller.repository.StandardProcessSession.commit(StandardProcessSession.java:299)
~[nifi-framework-core-1.0.0.2.0.1.0-12.jar:1.0.0.2.0.1.0-12]
at
org.apache.nifi.controller.tasks.ExpireFlowFiles.expireFlowFiles(ExpireFlowFiles.java:85)
~[nifi-framework-core-1.0.0.2.0.1.0-12.jar:1.0.0.2.0.1.0-12]
at
org.apache.nifi.controller.tasks.ExpireFlowFiles.expireFlowFiles(ExpireFlowFiles.java:90)
~[nifi-framework-core-1.0.0.2.0.1.0-12.jar:1.0.0.2.0.1.0-12]
at
org.apache.nifi.controller.tasks.ExpireFlowFiles.expireFlowFiles(ExpireFlowFiles.java:116)
~[nifi-framework-core-1.0.0.2.0.1.0-12.jar:1.0.0.2.0.1.0-12]
at
org.apache.nifi.controller.tasks.ExpireFlowFiles.run(ExpireFlowFiles.java:56)
~[nifi-framework-core-1.0.0.2.0.1.0-12.jar:1.0.0.2.0.1.0-12]
at
org.apache.nifi.controller.scheduling.StandardProcessScheduler$1.run(StandardProcessScheduler.java:115)
[nifi-framework-core-1.0.0.2.0.1.0-12.jar:1.0.0.2.0.1.0-12]
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[na:1.8.0_45]
at
java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_45]
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
[na:1.8.0_45]
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
[na:1.8.0_45]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[na:1.8.0_45]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[na:1.8.0_45]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
This appears to be due to the fact that we are attempting to expire FlowFiles
before we have finished recovering all of the FlowFiles from the
FlowFileRepository. This is not really harmful, as the expiration will just
keep trying until it is successful. However, it does result in some alarming
ERROR-level messages in the logs and needs to be resolved.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)