Github user alopresto commented on the issue:
https://github.com/apache/nifi/pull/2086
I verified the new unit test passed successfully. I then started the app
normally, ran a heavy flow, and debugged at the `checkpoint()` method to ensure
I captured a valid `snapshot` file. I modified this by truncating the file
after a transaction ID, yielding an incomplete record. I stopped the
application, moved the modified `snapshot` into place, and restarted the app.
On loading, NiFi stopped with the following expected error in the
`nifi-app.log`:
```
org.apache.nifi.web.NiFiCoreException: Unable to start Flow Controller.
at
org.apache.nifi.web.contextlistener.ApplicationStartupContextListener.contextInitialized(ApplicationStartupContextListener.java:88)
at
org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:876)
at
org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:532)
at
org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:839)
at
org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:344)
at
org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1480)
at
org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1442)
at
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:799)
at
org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:261)
at
org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:540)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:105)
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
at
org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:290)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
at org.eclipse.jetty.server.Server.start(Server.java:452)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:105)
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
at org.eclipse.jetty.server.Server.doStart(Server.java:419)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.apache.nifi.web.server.JettyServer.start(JettyServer.java:707)
at org.apache.nifi.NiFi.<init>(NiFi.java:160)
at org.apache.nifi.NiFi.main(NiFi.java:268)
Caused by: java.io.EOFException: Failed to read field 'Repository Record
Update'
at
org.apache.nifi.repository.schema.SchemaRecordReader.readField(SchemaRecordReader.java:115)
at
org.apache.nifi.repository.schema.SchemaRecordReader.readRecord(SchemaRecordReader.java:72)
at
org.apache.nifi.controller.repository.SchemaRepositoryRecordSerde.deserializeRecord(SchemaRepositoryRecordSerde.java:124)
at
org.apache.nifi.controller.repository.SchemaRepositoryRecordSerde.deserializeRecord(SchemaRepositoryRecordSerde.java:46)
at
org.wali.MinimalLockingWriteAheadLog.recoverFromSnapshot(MinimalLockingWriteAheadLog.java:380)
at
org.wali.MinimalLockingWriteAheadLog.recoverRecords(MinimalLockingWriteAheadLog.java:300)
at
org.apache.nifi.controller.repository.WriteAheadFlowFileRepository.loadFlowFiles(WriteAheadFlowFileRepository.java:381)
at
org.apache.nifi.controller.FlowController.initializeFlow(FlowController.java:723)
at
org.apache.nifi.controller.StandardFlowService.initializeController(StandardFlowService.java:956)
at
org.apache.nifi.controller.StandardFlowService.load(StandardFlowService.java:535)
at
org.apache.nifi.web.contextlistener.ApplicationStartupContextListener.contextInitialized(ApplicationStartupContextListener.java:72)
... 28 common frames omitted
Suppressed: java.io.EOFException: Failed to read field 'Create or
Update'
at
org.apache.nifi.repository.schema.SchemaRecordReader.readField(SchemaRecordReader.java:115)
at
org.apache.nifi.repository.schema.SchemaRecordReader.readFieldValue(SchemaRecordReader.java:186)
at
org.apache.nifi.repository.schema.SchemaRecordReader.readField(SchemaRecordReader.java:113)
... 38 common frames omitted
Suppressed: java.io.EOFException: Unexpected End-of-File when
attempting to read Repetition value for field 'Swap Location'
at
org.apache.nifi.repository.schema.SchemaRecordReader.readField(SchemaRecordReader.java:101)
at
org.apache.nifi.repository.schema.SchemaRecordReader.readFieldValue(SchemaRecordReader.java:171)
at
org.apache.nifi.repository.schema.SchemaRecordReader.readField(SchemaRecordReader.java:113)
... 40 common frames omitted
```
Ran `contrib-check` and all tests pass. +1, merging.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---