Details
-
Documentation
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.5.0
-
None
-
CPU is pre-Haswell
Description
When Nimbus start-up and storm_rocks already contains data, the JVM will encounter an illegal instruction exception if the CPU is pre-Haswell era.
This can be seen on such a CPU by deploying a running topology then restarting Nimbus. It will fail to startup because the JVM will have crashed when RocksDB reads the state from storm_rocks folder. (You can recover from this by deleting the storm_rocks folder - Nimbus will then startup ok ... until the next time it restarts!)
The issue is that RocksDB v7.x.x or higher (so, applies to Storm 2.5.0 onwards from this commit https://github.com/apache/storm/commit/d7b4c084a89961a4060edb2e755491a21015c200) is a C++ component built for modern CPUs. The fix for this is to downgrade RocksDB to pre v7.x.x (or you can build your own version of v7+ from source with certain compiler options set)
You can find other reports of this - e.g. https://github.com/facebook/rocksdb/issues/11096 or https://github.com/trezor/blockbook/issues/684
This is not a bug in Storm, of course. Nor is it a bug - more a 'minimum requirements'.
So I have a pull request to suggest workarounds for this in the Troubleshooting guide.