From 655132fb059cfa70fb338d54f1bb0fb48198fb0f Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Wed, 02 Sep 2026 06:44:10 +0000
Subject: [PATCH] [#873] Give each backend its own compressed schema trees (#881)
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pdb/PDBStorage.java | 40 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pdb/PDBStorage.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pdb/PDBStorage.java
index ea23395..e99db98 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pdb/PDBStorage.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pdb/PDBStorage.java
@@ -468,6 +468,12 @@
}
@Override
+ public boolean treeExists(TreeName treeName)
+ {
+ return PDBStorage.this.treeExists(treeName);
+ }
+
+ @Override
public Cursor<ByteString, ByteString> openCursor(final TreeName treeName)
{
try
@@ -691,6 +697,12 @@
}
@Override
+ public boolean treeExists(TreeName treeName)
+ {
+ return delegate.treeExists(treeName);
+ }
+
+ @Override
public void openTree(TreeName treeName, boolean createOnDemand)
{
if (createOnDemand)
@@ -820,6 +832,13 @@
}
@Override
+ public boolean treeExists(TreeName treeName)
+ {
+ // No volume was ever opened, so nothing is stored.
+ return false;
+ }
+
+ @Override
public <T> T read(ReadOperation<T> operation) throws Exception
{
return operation.run(this);
@@ -832,6 +851,27 @@
}
}
+ /**
+ * Tells whether the volume holds a tree of that name. Deliberately not implemented by asking for
+ * an {@link Exchange}: {@code getExchange(volume, name, true)} would create the tree being tested,
+ * and with {@code false} Persistit reports its absence by throwing.
+ */
+ boolean treeExists(final TreeName treeName)
+ {
+ if (volume == null)
+ {
+ return false;
+ }
+ try
+ {
+ return volume.getTree(treeName.toString(), false) != null;
+ }
+ catch (PersistitException e)
+ {
+ throw new StorageRuntimeException(e);
+ }
+ }
+
Exchange getNewExchange(final TreeName treeName, final boolean create) throws PersistitException
{
final Exchange ex = db.getExchange(volume, treeName.toString(), create);
--
Gitblit v1.10.0