[ 
https://issues.apache.org/jira/browse/NIFI-9810?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kevin Doran updated NIFI-9810:
------------------------------
    Description: 
For arm64 / Apple M1 compatibility, RocksDB needs to be bumped to >= v6.29.4.1 
(see below for runtime errors on an Apple Silicon M1 Mac with the current 
version).

RocksDB is used only by the RocksDBFlowFileRepository implementation. After 
wider discussion with the community and who could help test and verify this 
change, we came to the conclusion it makes the most sense to focus maintenance 
efforts on the default FlowFileRepository implementation and deprecate the 
RocksDB variant.

For now, we will bump the version of RocksDB for arm64 compatibility on macOS, 
but this ticket is also to extract it to its own module to isolate it, and also 
mark it as deprecated with an eye on dropping it in a future major version of 
NiFi.


*MIGRATION GUIDANCE NOTE*
Users of the {{RocksDBFlowFileRepository}} will have to download the new 
{{org.apache.nifi::nifi-rocksdb-nar::x.y.z}} and add it to the lib directory 
after upgrading past 1.16.3


  was:
For arm64 / Apple M1 compatibility, RocksDB needs to be bumped to >= v6.29.4.1 
(see below for runtime errors on an Apple Silicon M1 Mac with the current 
version).

RocksDB is used only by the RocksDBFlowFileRepository implementation. After 
wider discussion with the community and who could help test and verify this 
change, we came to the conclusion it makes the most sense to focus maintenance 
efforts on the default FlowFileRepository implementation and deprecate the 
RocksDB variant.

For now, we will bump the version of RocksDB for arm64 compatibility on macOS, 
but this ticket is also to extract it to its own module to isolate it, and also 
mark it as deprecated with an eye on dropping it in a future major version of 
NiFi.

*MIGRATION GUIDANCE NOTE*
Users of the {{RocksDBFlowFileRepository}} will have to download the new 
{{org.apache.nifi::nifi-rocksdb-nar::x.y.z}} and add it to the lib directory 
after upgrading past 1.16.3


----


{noformat}
[INFO] -----------------< org.apache.nifi:nifi-rocksdb-utils >-----------------
[INFO] Building nifi-rocksdb-utils 1.16.0-SNAPSHOT                     [35/642]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-enforcer-plugin:3.0.0:enforce (enforce-maven-version) @ 
nifi-rocksdb-utils ---
[INFO]
[INFO] --- maven-enforcer-plugin:3.0.0:enforce (enforce-java-version) @ 
nifi-rocksdb-utils ---
[INFO]
[INFO] --- maven-remote-resources-plugin:1.7.0:process 
(process-resource-bundles) @ nifi-rocksdb-utils ---
[INFO] Preparing remote bundle org.apache:apache-jar-resource-bundle:1.4
[INFO] Copying 3 resources from 1 bundle.
[INFO]
[INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ 
nifi-rocksdb-utils ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] skip non existing resourceDirectory 
/Users/kdoran/dev/code/nifi/nifi-commons/nifi-rocksdb-utils/src/main/resources
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.9.0:compile (default-compile) @ 
nifi-rocksdb-utils ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.2.0:testResources (default-testResources) @ 
nifi-rocksdb-utils ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] Copying 1 resource
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.9.0:testCompile (default-testCompile) @ 
nifi-rocksdb-utils ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-compiler-plugin:3.9.0:testCompile (groovy-tests) @ 
nifi-rocksdb-utils ---
[INFO] Changes detected - recompiling the module!
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:3.0.0-M5:test (default-test) @ 
nifi-rocksdb-utils ---
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running org.apache.nifi.rocksdb.TestRocksDBMetronome
[ERROR] Tests run: 10, Failures: 2, Errors: 7, Skipped: 0, Time elapsed: 0.097 
s <<< FAILURE! - in org.apache.nifi.rocksdb.TestRocksDBMetronome
[ERROR] org.apache.nifi.rocksdb.TestRocksDBMetronome.testColumnFamilies(Path)  
Time elapsed: 0.058 s  <<< ERROR!
java.lang.UnsatisfiedLinkError: 
/private/var/folders/dj/1c85sd0d6dvcp1fltmwr5nl40000gn/T/librocksdbjni1540031708884427750.jnilib:
 
dlopen(/private/var/folders/dj/1c85sd0d6dvcp1fltmwr5nl40000gn/T/librocksdbjni1540031708884427750.jnilib,
 0x0001): tried: 
'/private/var/folders/dj/1c85sd0d6dvcp1fltmwr5nl40000gn/T/librocksdbjni1540031708884427750.jnilib'
 (mach-o file, but is an incompatible architecture (have 'x86_64', need 
'arm64e')), '/usr/lib/librocksdbjni1540031708884427750.jnilib' (no such file)
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testColumnFamilies(TestRocksDBMetronome.java:170)

[ERROR] org.apache.nifi.rocksdb.TestRocksDBMetronome.testWaitForSync(Path)  
Time elapsed: 0.003 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testWaitForSync(TestRocksDBMetronome.java:267)

[ERROR] 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testWaitForSyncWithValue(Path)  
Time elapsed: 0.001 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testWaitForSyncWithValue(TestRocksDBMetronome.java:299)

[ERROR] org.apache.nifi.rocksdb.TestRocksDBMetronome.testCounterIncrement(Path) 
 Time elapsed: 0.001 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testCounterIncrement(TestRocksDBMetronome.java:247)

[ERROR] org.apache.nifi.rocksdb.TestRocksDBMetronome.testPutGetDelete(Path)  
Time elapsed: 0.001 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testPutGetDelete(TestRocksDBMetronome.java:105)

[ERROR] org.apache.nifi.rocksdb.TestRocksDBMetronome.testPutClosed(Path)  Time 
elapsed: 0.003 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: Unexpected exception type thrown ==> 
expected: <java.lang.IllegalStateException> but was: 
<java.lang.NoClassDefFoundError>
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testPutClosed(TestRocksDBMetronome.java:152)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class 
org.rocksdb.RocksDB
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.lambda$testPutClosed$1(TestRocksDBMetronome.java:155)
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testPutClosed(TestRocksDBMetronome.java:152)

[ERROR] 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testPutGetConfiguration(Path)  
Time elapsed: 0 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testPutGetConfiguration(TestRocksDBMetronome.java:128)

[ERROR] org.apache.nifi.rocksdb.TestRocksDBMetronome.testPutBeforeInit(Path)  
Time elapsed: 0.001 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: Unexpected exception type thrown ==> 
expected: <java.lang.IllegalStateException> but was: 
<java.lang.NoClassDefFoundError>
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testPutBeforeInit(TestRocksDBMetronome.java:141)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class 
org.rocksdb.RocksDB
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.lambda$testPutBeforeInit$0(TestRocksDBMetronome.java:144)
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testPutBeforeInit(TestRocksDBMetronome.java:141)

[ERROR] org.apache.nifi.rocksdb.TestRocksDBMetronome.testIterator(Path)  Time 
elapsed: 0 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.rocksdb.TestRocksDBMetronome.testIterator(TestRocksDBMetronome.java:220)

[INFO]
[INFO] Results:
[INFO]
[ERROR] Failures:
[ERROR]   TestRocksDBMetronome.testPutBeforeInit:141 Unexpected exception type 
thrown ==> expected: <java.lang.IllegalStateException> but was: 
<java.lang.NoClassDefFoundError>
[ERROR]   TestRocksDBMetronome.testPutClosed:152 Unexpected exception type 
thrown ==> expected: <java.lang.IllegalStateException> but was: 
<java.lang.NoClassDefFoundError>
[ERROR] Errors:
[ERROR]   TestRocksDBMetronome.testColumnFamilies:170 » UnsatisfiedLink 
/private/var/fol...
[ERROR]   TestRocksDBMetronome.testCounterIncrement:247 » NoClassDefFound Could 
not init...
[ERROR]   TestRocksDBMetronome.testIterator:220 » NoClassDefFound Could not 
initialize c...
[ERROR]   TestRocksDBMetronome.testPutGetConfiguration:128 » NoClassDefFound 
Could not i...
[ERROR]   TestRocksDBMetronome.testPutGetDelete:105 » NoClassDefFound Could not 
initiali...
[ERROR]   TestRocksDBMetronome.testWaitForSync:267 » NoClassDefFound Could not 
initializ...
[ERROR]   TestRocksDBMetronome.testWaitForSyncWithValue:299 » NoClassDefFound 
Could not ...
[INFO]
[ERROR] Tests run: 10, Failures: 2, Errors: 7, Skipped: 0
{noformat}

and

{noformat}
[INFO] Running 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository
[ERROR] Tests run: 12, Failures: 0, Errors: 11, Skipped: 0, Time elapsed: 0.103 
s <<< FAILURE! - in 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository
[ERROR] 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testRecoveryModeWithContinuedLoading
  Time elapsed: 0.072 s  <<< ERROR!
java.lang.UnsatisfiedLinkError: 
/private/var/folders/dj/1c85sd0d6dvcp1fltmwr5nl40000gn/T/librocksdbjni8333131115704997159.jnilib:
 
dlopen(/private/var/folders/dj/1c85sd0d6dvcp1fltmwr5nl40000gn/T/librocksdbjni8333131115704997159.jnilib,
 0x0001): tried: 
'/private/var/folders/dj/1c85sd0d6dvcp1fltmwr5nl40000gn/T/librocksdbjni8333131115704997159.jnilib'
 (mach-o file, but is an incompatible architecture (have 'x86_64', need 
'arm64e')), '/usr/lib/librocksdbjni8333131115704997159.jnilib' (no such file)
        at 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testRecoveryModeWithContinuedLoading(TestRocksDBFlowFileRepository.java:516)

[ERROR] 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testUnknownVersion
  Time elapsed: 0 s  <<< ERROR!
java.lang.Exception: Unexpected exception, 
expected<java.lang.IllegalStateException> but 
was<java.lang.NoClassDefFoundError>
        at 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testUnknownVersion(TestRocksDBFlowFileRepository.java:436)

[ERROR] 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testDoNotRemoveOrphans
  Time elapsed: 0.001 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testDoNotRemoveOrphans(TestRocksDBFlowFileRepository.java:354)

[ERROR] 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testStallStop
  Time elapsed: 0.001 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testStallStop(TestRocksDBFlowFileRepository.java:598)

[ERROR] 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testSwapLocationsRestored
  Time elapsed: 0 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testSwapLocationsRestored(TestRocksDBFlowFileRepository.java:124)

[ERROR] 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testRecoveryMode
  Time elapsed: 0.001 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testRecoveryMode(TestRocksDBFlowFileRepository.java:451)

[ERROR] 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testSwapLocationsUpdatedOnRepoUpdate
  Time elapsed: 0.001 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testSwapLocationsUpdatedOnRepoUpdate(TestRocksDBFlowFileRepository.java:168)

[ERROR] 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testResourceClaimsIncremented
  Time elapsed: 0.02 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testResourceClaimsIncremented(TestRocksDBFlowFileRepository.java:223)

[ERROR] 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testRestartWithOneRecord
  Time elapsed: 0 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testRestartWithOneRecord(TestRocksDBFlowFileRepository.java:284)

[ERROR] 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testKnownVersion
  Time elapsed: 0.001 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testKnownVersion(TestRocksDBFlowFileRepository.java:422)

[ERROR] 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testRemoveOrphans
  Time elapsed: 0.001 s  <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.RocksDB
        at 
org.apache.nifi.controller.repository.TestRocksDBFlowFileRepository.testRemoveOrphans(TestRocksDBFlowFileRepository.java:390)
{noformat}



> Extract RocksDBFlowFileRepository to its own module and deprecate
> -----------------------------------------------------------------
>
>                 Key: NIFI-9810
>                 URL: https://issues.apache.org/jira/browse/NIFI-9810
>             Project: Apache NiFi
>          Issue Type: Sub-task
>            Reporter: Kevin Doran
>            Priority: Minor
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> For arm64 / Apple M1 compatibility, RocksDB needs to be bumped to >= 
> v6.29.4.1 (see below for runtime errors on an Apple Silicon M1 Mac with the 
> current version).
> RocksDB is used only by the RocksDBFlowFileRepository implementation. After 
> wider discussion with the community and who could help test and verify this 
> change, we came to the conclusion it makes the most sense to focus 
> maintenance efforts on the default FlowFileRepository implementation and 
> deprecate the RocksDB variant.
> For now, we will bump the version of RocksDB for arm64 compatibility on 
> macOS, but this ticket is also to extract it to its own module to isolate it, 
> and also mark it as deprecated with an eye on dropping it in a future major 
> version of NiFi.
> *MIGRATION GUIDANCE NOTE*
> Users of the {{RocksDBFlowFileRepository}} will have to download the new 
> {{org.apache.nifi::nifi-rocksdb-nar::x.y.z}} and add it to the lib directory 
> after upgrading past 1.16.3



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to