How to solve the resource temporarily unavailable problem when using YCSB to generate multiple clients to access rocksdb?

30 Views Asked by At

When testing the performance of Rocksdb with multiple column families using YCSB, I used four clients to load workloads on Rocksdb and wrote a script to execute four commands in parallel. The content is as follows: enter image description here But only one command can be executed, and other commands cannot be executed due to resource locked issues when initting a DB. The terminal prompts an error message as follows: enter image description here Is this error message indicating that multiple instances are using the same database path, and a database path can only be accessed by one instance? As far as I know, Rocksdb supports multi-threaded parallel access to a DB. I guess YCSB has imposed restrictions on Rocksdb, but I don't know how to modify this restriction.

In YCSB/core/src/main/java/site/ycsb/ClientThread.java, init() and clean up() method both use synchronization primitives to a RocksDBCLient class, should I make modifications here (for example, using the CAS directive form————ReentrantLock class to reconstruct locks to RocksDBClient.class? enter image description here enter image description here

0

There are 0 best solutions below