From 54c54fda42e49d077b1784f4940d20317e701d25 Mon Sep 17 00:00:00 2001
From: Prashant <prashant.thakre@gmail.com>
Date: Tue, 17 Feb 2026 10:50:34 +0000
Subject: [PATCH] Migrate to caffeine 3 (#594)
---
opendj-server-legacy/src/main/java/org/opends/server/backends/cassandra/Storage.java | 123 +++++++++++++++++++---------------------
1 files changed, 58 insertions(+), 65 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/cassandra/Storage.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/cassandra/Storage.java
index 8a94353..56c8fae 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/cassandra/Storage.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/cassandra/Storage.java
@@ -62,21 +62,19 @@
import com.datastax.oss.driver.api.core.cql.ResultSet;
import com.datastax.oss.driver.api.core.cql.Row;
import com.datastax.oss.driver.api.core.cql.Statement;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
+
+import com.github.benmanes.caffeine.cache.Caffeine;
+import com.github.benmanes.caffeine.cache.LoadingCache;
public class Storage implements org.opends.server.backends.pluggable.spi.Storage, ConfigurationChangeListener<CASBackendCfg>{
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
- //private final ServerContext serverContext;
private CASBackendCfg config;
-
+
public Storage(CASBackendCfg cfg, ServerContext serverContext) {
- //this.serverContext = serverContext;
this.config = cfg;
- cfg.addCASChangeListener(this);
+ cfg.addCASChangeListener(this);
}
//config
@@ -88,37 +86,32 @@
@Override
public ConfigChangeResult applyConfigurationChange(CASBackendCfg cfg) {
final ConfigChangeResult ccr = new ConfigChangeResult();
- try
- {
- this.config = cfg;
- }
- catch (Exception e)
- {
- addErrorMessage(ccr, LocalizableMessage.raw(stackTraceToSingleLineString(e)));
- }
- return ccr;
+ try
+ {
+ this.config = cfg;
+ }
+ catch (Exception e)
+ {
+ addErrorMessage(ccr, LocalizableMessage.raw(stackTraceToSingleLineString(e)));
+ }
+ return ccr;
}
CqlSession session=null;
-
- final LoadingCache<String,PreparedStatement> prepared=CacheBuilder.newBuilder()
- .expireAfterAccess(Duration.ofMinutes(10))
- .maximumSize(4096)
- .build(new CacheLoader<String,PreparedStatement>(){
- @Override
- public PreparedStatement load(String query) throws Exception {
- return session.prepare(query);
- }
- });
-
+
+ final LoadingCache<String,PreparedStatement> prepared = Caffeine.newBuilder()
+ .expireAfterAccess(Duration.ofMinutes(10))
+ .maximumSize(4096)
+ .build(query -> session.prepare(query));
+
ResultSet execute(Statement<?> statement) {
if (logger.isTraceEnabled()) {
final ResultSet res=session.execute(statement.setTracing(true));
logger.trace(LocalizableMessage.raw(
"cassandra: %s"
,res.getExecutionInfo().getQueryTrace().getParameters()
- )
- );
+ )
+ );
return res;
}
return session.execute(statement);
@@ -129,11 +122,11 @@
public void open(AccessMode accessMode) throws Exception {
this.accessMode=accessMode;
session=CqlSession.builder()
- .withApplicationName("OpenDJ "+getKeyspaceName()+"."+config.getBackendId())
- .withConfigLoader(DriverConfigLoader.fromDefaults(Storage.class.getClassLoader()))
- .build();
+ .withApplicationName("OpenDJ "+getKeyspaceName()+"."+config.getBackendId())
+ .withConfigLoader(DriverConfigLoader.fromDefaults(Storage.class.getClassLoader()))
+ .build();
if (AccessMode.READ_WRITE.equals(accessMode)) {
- execute(prepared.getUnchecked("CREATE KEYSPACE IF NOT EXISTS "+getKeyspaceName()+" WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'};").bind().setExecutionProfileName(profile));
+ execute(prepared.get("CREATE KEYSPACE IF NOT EXISTS "+getKeyspaceName()+" WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'};").bind().setExecutionProfileName(profile));
}
storageStatus = StorageStatus.working();
}
@@ -163,7 +156,7 @@
@Override
public void removeStorageFiles() throws StorageRuntimeException {
- final Boolean isOpen=getStorageStatus().isWorking();
+ final boolean isOpen=getStorageStatus().isWorking();
if (!isOpen) {
try {
open(AccessMode.READ_WRITE);
@@ -172,7 +165,7 @@
}
}
try {
- execute(prepared.getUnchecked("TRUNCATE TABLE "+getTableName()+";").bind().setExecutionProfileName(profile));
+ execute(prepared.get("TRUNCATE TABLE "+getTableName()+";").bind().setExecutionProfileName(profile));
}catch (Throwable e) {}
if (!isOpen) {
close();
@@ -210,7 +203,7 @@
@Override
public void openTree(TreeName name, boolean createOnDemand) {
if (createOnDemand) {
- execute(prepared.getUnchecked("CREATE TABLE IF NOT EXISTS "+getTableName()+" (baseDN text,indexId text,key blob,value blob,PRIMARY KEY ((baseDN,indexId),key));").bind().setExecutionProfileName(profile));
+ execute(prepared.get("CREATE TABLE IF NOT EXISTS "+getTableName()+" (baseDN text,indexId text,key blob,value blob,PRIMARY KEY ((baseDN,indexId),key));").bind().setExecutionProfileName(profile));
}
}
@@ -222,10 +215,10 @@
@Override
public ByteString read(TreeName treeName, ByteSequence key) {
final Row row=execute(
- prepared.getUnchecked("SELECT value FROM "+getTableName()+" WHERE baseDN=:baseDN and indexId=:indexId and key=:key").bind()
- .setString("baseDN", treeName.getBaseDN()).setString("indexId", treeName.getIndexId())
- .setByteBuffer("key", ByteBuffer.wrap(key.toByteArray()))
- ).one();
+ prepared.get("SELECT value FROM "+getTableName()+" WHERE baseDN=:baseDN and indexId=:indexId and key=:key").bind()
+ .setString("baseDN", treeName.getBaseDN()).setString("indexId", treeName.getIndexId())
+ .setByteBuffer("key", ByteBuffer.wrap(key.toByteArray()))
+ ).one();
return row==null?null:ByteString.wrap(row.getByteBuffer("value").array());
}
@@ -237,9 +230,9 @@
@Override
public long getRecordCount(TreeName treeName) {
return execute(
- prepared.getUnchecked("SELECT count(*) FROM "+getTableName()+" WHERE baseDN=:baseDN and indexId=:indexId").bind()
- .setString("baseDN", treeName.getBaseDN()).setString("indexId", treeName.getIndexId())
- ).one().getLong(0);
+ prepared.get("SELECT count(*) FROM "+getTableName()+" WHERE baseDN=:baseDN and indexId=:indexId").bind()
+ .setString("baseDN", treeName.getBaseDN()).setString("indexId", treeName.getIndexId())
+ ).one().getLong(0);
}
@Override
@@ -247,20 +240,20 @@
checkReadOnly();
openTree(treeName,true);
execute(
- prepared.getUnchecked("DELETE FROM "+getTableName()+" WHERE baseDN=:baseDN and indexId=:indexId").bind()
- .setString("baseDN", treeName.getBaseDN()).setString("indexId", treeName.getIndexId())
- );
+ prepared.get("DELETE FROM "+getTableName()+" WHERE baseDN=:baseDN and indexId=:indexId").bind()
+ .setString("baseDN", treeName.getBaseDN()).setString("indexId", treeName.getIndexId())
+ );
}
@Override
public void put(TreeName treeName, ByteSequence key, ByteSequence value) {
checkReadOnly();
execute(
- prepared.getUnchecked("INSERT INTO "+getTableName()+" (baseDN,indexId,key,value) VALUES (:baseDN,:indexId,:key,:value)").bind()
- .setString("baseDN", treeName.getBaseDN()).setString("indexId", treeName.getIndexId())
+ prepared.get("INSERT INTO "+getTableName()+" (baseDN,indexId,key,value) VALUES (:baseDN,:indexId,:key,:value)").bind()
+ .setString("baseDN", treeName.getBaseDN()).setString("indexId", treeName.getIndexId())
.setByteBuffer("key", ByteBuffer.wrap(key.toByteArray()))
.setByteBuffer("value",ByteBuffer.wrap(value.toByteArray()))
- );
+ );
}
@Override
@@ -269,15 +262,15 @@
final ByteString oldValue=read(treeName,key);
final ByteSequence newValue=f.computeNewValue(oldValue);
if (Objects.equals(newValue, oldValue))
- {
+ {
return false;
- }
- if (newValue == null)
- {
- delete(treeName, key);
- return true;
- }
- put(treeName,key,newValue);
+ }
+ if (newValue == null)
+ {
+ delete(treeName, key);
+ return true;
+ }
+ put(treeName,key,newValue);
return true;
}
@@ -285,10 +278,10 @@
public boolean delete(TreeName treeName, ByteSequence key) {
checkReadOnly();
execute(
- prepared.getUnchecked("DELETE FROM "+getTableName()+" WHERE baseDN=:baseDN and indexId=:indexId and key=:key").bind()
- .setString("baseDN", treeName.getBaseDN()).setString("indexId", treeName.getIndexId())
- .setByteBuffer("key", ByteBuffer.wrap(key.toByteArray()))
- );
+ prepared.get("DELETE FROM "+getTableName()+" WHERE baseDN=:baseDN and indexId=:indexId and key=:key").bind()
+ .setString("baseDN", treeName.getBaseDN()).setString("indexId", treeName.getIndexId())
+ .setByteBuffer("key", ByteBuffer.wrap(key.toByteArray()))
+ );
return true;
}
@@ -316,9 +309,9 @@
ResultSet full(){
return execute(
- prepared.getUnchecked("SELECT key,value FROM "+getTableName()+" WHERE baseDN=:baseDN and indexId=:indexId ORDER BY key").bind()
- .setString("baseDN", treeName.getBaseDN()).setString("indexId", treeName.getIndexId())
- );
+ prepared.get("SELECT key,value FROM "+getTableName()+" WHERE baseDN=:baseDN and indexId=:indexId ORDER BY key").bind()
+ .setString("baseDN", treeName.getBaseDN()).setString("indexId", treeName.getIndexId())
+ );
}
@Override
@@ -424,7 +417,7 @@
return true;
}
ct++;
- }
+ }
current=null;
return false;
}
--
Gitblit v1.10.0