From 28b969fb9592eddd1bfcdb5e609d94458d288f05 Mon Sep 17 00:00:00 2001 From: Jermy Li Date: Sun, 31 Aug 2025 02:08:32 +0800 Subject: [PATCH] perf(rocksdb): RocksDBStore remove redundant checkOpened() call Change-Id: I4c4ae6368fecb994708ae1da89c256beefda4511 --- .../backend/store/rocksdb/RocksDBStore.java | 87 ++++++++++--------- 1 file changed, 47 insertions(+), 40 deletions(-) diff --git a/hugegraph-server/hugegraph-rocksdb/src/main/java/org/apache/hugegraph/backend/store/rocksdb/RocksDBStore.java b/hugegraph-server/hugegraph-rocksdb/src/main/java/org/apache/hugegraph/backend/store/rocksdb/RocksDBStore.java index c34d9632fc..3b6b54eadb 100644 --- a/hugegraph-server/hugegraph-rocksdb/src/main/java/org/apache/hugegraph/backend/store/rocksdb/RocksDBStore.java +++ b/hugegraph-server/hugegraph-rocksdb/src/main/java/org/apache/hugegraph/backend/store/rocksdb/RocksDBStore.java @@ -425,7 +425,6 @@ public void mutate(BackendMutation mutation) { Lock readLock = this.storeLock.readLock(); readLock.lock(); try { - this.checkOpened(); if (LOG.isDebugEnabled()) { LOG.debug("Store {} mutation: {}", this.store, mutation); } @@ -490,7 +489,6 @@ public Iterator query(Query query) { readLock.lock(); try { - this.checkOpened(); HugeType tableType = RocksDBTable.tableType(query); RocksDBTable table; RocksDBSessions.Session session; @@ -525,7 +523,6 @@ public Number queryNumber(Query query) { Lock readLock = this.storeLock.readLock(); readLock.lock(); try { - this.checkOpened(); HugeType tableType = RocksDBTable.tableType(query); RocksDBTable table = this.table(tableType); return table.queryNumber(this.session(tableType), query); @@ -648,8 +645,6 @@ public void beginTx() { Lock readLock = this.storeLock.readLock(); readLock.lock(); try { - this.checkOpened(); - for (RocksDBSessions.Session session : this.session()) { assert !session.hasChanges(); } @@ -663,7 +658,6 @@ public void commitTx() { Lock readLock = this.storeLock.readLock(); readLock.lock(); try { - this.checkOpened(); // Unable to guarantee atomicity when committing multi sessions for (RocksDBSessions.Session session : this.session()) { Object count = session.commit(); @@ -681,8 +675,6 @@ public void rollbackTx() { Lock readLock = this.storeLock.readLock(); readLock.lock(); try { - this.checkOpened(); - for (RocksDBSessions.Session session : this.session()) { session.rollback(); } @@ -691,19 +683,6 @@ public void rollbackTx() { } } - @Override - protected RocksDBSessions.Session session(HugeType tableType) { - this.checkOpened(); - - // Optimized disk - String disk = this.tableDiskMapping.get(tableType); - if (disk != null) { - return this.db(disk).session(); - } - - return this.sessions.session(); - } - @Override public Map createSnapshot(String snapshotPrefix) { Lock readLock = this.storeLock.readLock(); @@ -785,22 +764,6 @@ private void useSessions() { } } - private List session() { - this.checkOpened(); - - if (this.tableDiskMapping.isEmpty()) { - return Collections.singletonList(this.sessions.session()); - } - - // Collect session of each table with optimized disk - List list = new ArrayList<>(this.tableDiskMapping.size() + 1); - list.add(this.sessions.session()); - for (String disk : this.tableDiskMapping.values()) { - list.add(db(disk).session()); - } - return list; - } - private void closeSessions() { Iterator> iter = this.dbs.entrySet().iterator(); while (iter.hasNext()) { @@ -813,12 +776,56 @@ private void closeSessions() { } } - private Collection sessions() { + private final Collection sessions() { return this.dbs.values(); } - private void parseTableDiskMapping(Map disks, String dataPath) { + private final List session() { + this.checkDbOpened(); + + // Collect session of standard disk + RocksDBSessions.Session session = this.sessions.session(); + if (!session.opened()) { + this.checkOpened(); + } + + if (this.tableDiskMapping.isEmpty()) { + return ImmutableList.of(session); + } + // Collect session of each table with optimized disk + List list = new ArrayList<>(this.tableDiskMapping.size() + 1); + list.add(session); + for (String disk : this.tableDiskMapping.values()) { + RocksDBSessions.Session optimizedSession = this.db(disk).session(); + assert optimizedSession.opened(); + list.add(optimizedSession); + } + return list; + } + + @Override + protected RocksDBSessions.Session session(HugeType tableType) { + this.checkDbOpened(); + + RocksDBSessions.Session session; + String disk = this.tableDiskMapping.get(tableType); + if (disk != null) { + // Optimized disk + session = this.db(disk).session(); + } else { + // Standard disk + session = this.sessions.session(); + } + + if (!session.opened()) { + this.checkOpened(); + } + return session; + } + + private void parseTableDiskMapping(Map disks, String dataPath) { + // reset and parse this.tableDiskMapping.clear(); for (Map.Entry disk : disks.entrySet()) { // The format of `disk` like: `graph/vertex: /path/to/disk1` @@ -869,7 +876,7 @@ private void checkDbOpened() { } protected RocksDBSessions db(HugeType tableType) { - this.checkOpened(); + this.checkDbOpened(); // Optimized disk String disk = this.tableDiskMapping.get(tableType);