imbajin commented on code in PR #2888:
URL: 
https://github.com/apache/incubator-hugegraph/pull/2888#discussion_r2467846489


##########
hugegraph-server/hugegraph-mysql/src/main/java/org/apache/hugegraph/backend/store/mysql/MysqlStore.java:
##########
@@ -223,6 +223,7 @@ public void truncate() {
         this.checkOpened();
 
         this.truncateTables();
+        this.init();

Review Comment:
   > **Root Cause** The issue stems from the fact that backend stores such as 
MySQL, HBase, and RocksDB persist metadata (e.g., `driverVersion`) to the 
backend storage. When the `truncate()` operation is executed to clear all table 
data, this metadata is also deleted. As a result, subsequent operations fail 
due to missing metadata or state conflicts.
   > 
   > **Analysis by Backend**
   > 
   > * **RocksDB**:
   >   Although affected by the same problem, its `truncate()` method 
explicitly calls `this.init()` after clearing data to reinitialize the 
metadata, thereby avoiding errors.
   > 
   > ```
   >     @Override
   >     public synchronized void truncate() {
   >         Lock writeLock = this.storeLock.writeLock();
   >         writeLock.lock();
   >         try {
   >             this.checkOpened();
   > 
   >             this.clear(false);
   >             this.init();
   >             // Clear write-batch
   >             
this.dbs.values().forEach(BackendSessionPool::forceResetSessions);
   >             LOG.debug("Store truncated: {}", this.store);
   >         } finally {
   >             writeLock.unlock();
   >         }
   >     }
   > ```
   > 
   > * **HBase**:
   >   Confirmed to have the same issue as MySQL.
   >   Action Required: A follow-up PR is needed to fix the HBase backend 
accordingly.
   > * **Memory / HStore**:
   >   These backends are not affected because they do not persist critical 
version information or similar metadata to the backend storage.
   
   @LYD031106 LGTM, we could add a basic test & comment for the above issue 
(and we could merge this PR soon)
   
   BTW, this week we prepare to release the new version (1.7.0)



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to