This is an automated email from the ASF dual-hosted git repository.

dengzhhu653 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 569c064edc3 HIVE-29762: Synchronization logic added as a part of 
HIVE-24428 is having hash collision issue. (#6651)
569c064edc3 is described below

commit 569c064edc3813409362d6b8bb914828fe9d145e
Author: Dayakar M <[email protected]>
AuthorDate: Mon Aug 3 12:22:52 2026 +0530

    HIVE-29762: Synchronization logic added as a part of HIVE-24428 is having 
hash collision issue. (#6651)
---
 .../java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java | 8 ++++++--
 .../org/apache/hadoop/hive/metastore/handler/BaseHandler.java     | 5 ++++-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git 
a/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
 
b/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
index 3a4d7a173d4..b03bed9b51e 100644
--- 
a/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
+++ 
b/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
@@ -2017,8 +2017,12 @@ public enum ConfVars {
             + "e.g. 
javax.net.ssl.trustStore=/tmp/truststore,javax.net.ssl.trustStorePassword=pwd.\n
 " +
             "If both this and the metastore.dbaccess.ssl.* properties are set, 
then the latter properties \n" +
             "will overwrite what was set in the deprecated property."),
-    METASTORE_NUM_STRIPED_TABLE_LOCKS("metastore.num.striped.table.locks", 
"hive.metastore.num.striped.table.locks", 32,
-        "Number of striped locks available to provide exclusive operation 
support for critical table operations like add_partitions."),
+    METASTORE_NUM_STRIPED_TABLE_LOCKS(
+        "metastore.num.striped.table.locks", 
"hive.metastore.num.striped.table.locks", 65536,
+        "Number of striped locks available to provide exclusive operation 
support for critical table "
+            + "operations like add_partitions.\n The locks are lazily 
allocated and weakly referenced "
+            + "so unused stripes will not impose memory cost.\n A larger value 
reduces the probability of "
+            + "hash-collision-induced false contention between unrelated 
tables."),
     
COLSTATS_RETAIN_ON_COLUMN_REMOVAL("metastore.colstats.retain.on.column.removal",
         "hive.metastore.colstats.retain.on.column.removal", true,
         "Whether to retain column statistics during column removals in 
partitioned tables - disabling this "
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/handler/BaseHandler.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/handler/BaseHandler.java
index 5c4f5d868ba..4664529ccd9 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/handler/BaseHandler.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/handler/BaseHandler.java
@@ -271,7 +271,10 @@ private void initDefaultSchema() throws MetaException {
       if (tablelocks == null) {
         int numTableLocks = MetastoreConf.getIntVar(conf,
             MetastoreConf.ConfVars.METASTORE_NUM_STRIPED_TABLE_LOCKS);
-        tablelocks = Striped.lock(numTableLocks);
+        // lazyWeakLock: lock objects are allocated on first use and held via 
weak references,
+        // so unused stripes are GC'd. A large stripe count keeps hash 
collisions between
+        // unrelated (db, tbl) keys without paying permanent memory cost.
+        tablelocks = Striped.lazyWeakLock(numTableLocks);
       }
     }
   }

Reply via email to