David Handermann created NIFI-12206:
---------------------------------------
Summary: Refactor Flow Configuration History from H2 to JetBrains
Xodus
Key: NIFI-12206
URL: https://issues.apache.org/jira/browse/NIFI-12206
Project: Apache NiFi
Issue Type: Improvement
Components: Core Framework
Reporter: David Handermann
Assignee: David Handermann
Fix For: 2.latest
The [H2 Database Engine|https://h2database.com/html/main.html] has provided
local persistent storage for several types of information across Apache NiFi
versions. With multiple refactoring efforts over several versions, H2 no longer
stores user session information or identity provider group information, leaving
the Flow Configuration History as the only remaining reference to H2.
H2 version 2.1 introduced incompatible changes in the binary storage format
from H2 version 1.4, and H2 version 2.2 was also unable to read files from
earlier H2 versions. These binary changes required custom migration modules and
shaded distribution of H2 libraries to support upgrading between Apache NiFi
versions.
With the scope of H2 usage narrowed to Flow Configuration History in Apache
NiFi 1.23.0 and following, the storage strategy should be changed. Apache
Derby, SQLite, and HSQLDB are other potential options supporting file-based
relational storage, but maintenance level and platform-specific limitations
present concerns with these libraries.
The [JetBrains Xodus|https://github.com/JetBrains/xodus] library provides
persistent and scalable storage that avoids several issues present in other
alternatives. The framework is licensed under Apache Software License Version
2.0 and has a narrow set of dependencies aside from the Kotlin standard
libraries. Xodus is now in version 2.0 and has maintained format compatibility
when upgrading between major versions.
Based on the H2 database migration modules on the Apache NiFi support branch, a
subsequent issue can implement automated migration from H2 to Xodus, providing
an upgrade path from NiFi 1 to 2.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)