I have a Kafka Streams application. I had no problems with rocksdb or Kafka Streams until we deployed the code to our QA servers. The applications streams state was set to error and this was the error message:
ERROR com.sial.notifications.kafka.streams.AuditStream - Thread: notification-messages-ecf5f120-5cfb-4a2a-91b5-b145e99c3014-StreamThread-1 Uncaught streams exception /tmp/librocksdbjni6472682265799189638.so: /tmp/librocksdbjni6472682265799189638.so: failed to map segment from shared object: Operation not permitted
When the application starts the Rocksdb shared object is written out to /tmp However for security purposes the server mounts /tmp noexec so we cannot run the shared object from /tmp. Is there a way to control where the the so is written?
I found that I could change it by setting java.io.tmpdir system property, but this seems very heavyweight and could have side effects with other packages. Is there a system property that is specific to Rocksdb or Kafka streams that will determine where the so is written?