Brandon DeVries created NIFI-5331:
-------------------------------------

             Summary: SequentialAccessWriteAheadLog: poisioned journal requires 
restart
                 Key: NIFI-5331
                 URL: https://issues.apache.org/jira/browse/NIFI-5331
             Project: Apache NiFi
          Issue Type: Bug
          Components: Core Framework
    Affects Versions: 1.6.0
            Reporter: Brandon DeVries


If using the SequentialAccessWriteAheadLog, once a journal becomes poisoned, 
NiFi can't recover without a restart.  

SequentialAccessWriteAheadLog uses a LengthDelimitedJournal which has a 
"poisoned" flag[1].  This is initially set "false", but is set true if an 
Exceptions or Throwable is encountered on a write operation[2].  Once poisoned, 
calls to update()[3] will result in a call to checkState()[4] which then throws 
an IOException stating, "Cannot update journal file... If the repository is 
able to checkpoint, then this problem will resolve itself..."  
SequentialAccessWriteAheadLog.checkpoint()[5] creates a new 
LengthDelimitedJournal which would hypothetically have a cleared "poisoned" 
flag .  However, before creating that new Journal, it calls journal.fsync()[6], 
which calls checkState(), which throws the above IOException if poisoned == 
true.  So, the FlowFileRepository enters a state where it cannot be written to, 
and cannot recover, until the instance is restarted.

 

[1] 
[https://github.com/apache/nifi/blob/rel/nifi-1.6.0/nifi-commons/nifi-write-ahead-log/src/main/java/org/apache/nifi/wali/LengthDelimitedJournal.java#L70]
 

[2] 
[https://github.com/apache/nifi/blob/rel/nifi-1.6.0/nifi-commons/nifi-write-ahead-log/src/main/java/org/apache/nifi/wali/LengthDelimitedJournal.java#L208]
 

[3] 
[https://github.com/apache/nifi/blob/rel/nifi-1.6.0/nifi-commons/nifi-write-ahead-log/src/main/java/org/apache/nifi/wali/LengthDelimitedJournal.java#L178]

[4] 
[https://github.com/apache/nifi/blob/rel/nifi-1.6.0/nifi-commons/nifi-write-ahead-log/src/main/java/org/apache/nifi/wali/LengthDelimitedJournal.java#L217]
 

[5] 
[https://github.com/apache/nifi/blob/rel/nifi-1.6.0/nifi-commons/nifi-write-ahead-log/src/main/java/org/apache/nifi/wali/SequentialAccessWriteAheadLog.java#L279]
 

[6] 
[https://github.com/apache/nifi/blob/rel/nifi-1.6.0/nifi-commons/nifi-write-ahead-log/src/main/java/org/apache/nifi/wali/SequentialAccessWriteAheadLog.java#L259]
 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to