diff --git a/src/main/java/it/cavallium/dbengine/database/disk/OptimisticRocksDBColumn.java b/src/main/java/it/cavallium/dbengine/database/disk/OptimisticRocksDBColumn.java index cd1f9cc..bb30524 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/OptimisticRocksDBColumn.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/OptimisticRocksDBColumn.java @@ -14,6 +14,7 @@ import it.cavallium.dbengine.database.serialization.SerializationFunction; import it.cavallium.dbengine.lucene.ExponentialPageLimits; import java.io.IOException; import java.util.concurrent.ThreadLocalRandom; +import java.util.concurrent.locks.LockSupport; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.rocksdb.ColumnFamilyHandle; @@ -156,12 +157,12 @@ public final class OptimisticRocksDBColumn extends AbstractRocksDBColumn= 5 && retries % 5 == 0 || ALWAYS_PRINT_OPTIMISTIC_RETRIES) { logger.warn(MARKER_ROCKSDB, "Failed optimistic transaction {} (update):" @@ -171,12 +172,8 @@ public final class OptimisticRocksDBColumn extends AbstractRocksDBColumn 0) { - Thread.sleep(retryMs); - } - } catch (InterruptedException e) { - throw new RocksDBException("Interrupted"); + if (retryMs > 0) { + LockSupport.parkNanos(retryMs * 1000000L); } } }