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

wchevreuil pushed a commit to branch branch-2.6
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2.6 by this push:
     new 0802d681afe HBASE-29160: Cache region name string in RegionInfo, 
additional branch-2 changes (#6756)
0802d681afe is described below

commit 0802d681afe4f3193428186bdf300b8a08013e78
Author: Charles Connell <[email protected]>
AuthorDate: Thu Mar 20 08:53:12 2025 -0400

    HBASE-29160: Cache region name string in RegionInfo, additional branch-2 
changes (#6756)
    
    Signed-off-by: Wellington Chevreuil <[email protected]>
---
 .../java/org/apache/hadoop/hbase/HRegionInfo.java  | 23 ++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java
index 33d7d98c61e..41aca85f537 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java
@@ -161,6 +161,7 @@ public class HRegionInfo implements RegionInfo {
   public static final String NO_HASH = null;
   private String encodedName = null;
   private byte[] encodedNameAsBytes = null;
+  private String nameAsString = null;
   private int replicaId = DEFAULT_REPLICA_ID;
 
   // Current TableName
@@ -455,15 +456,21 @@ public class HRegionInfo implements RegionInfo {
   /** Returns Region name as a String for use in logging, etc. */
   @Override
   public String getRegionNameAsString() {
-    if (RegionInfo.hasEncodedName(this.regionName)) {
-      // new format region names already have their encoded name.
-      return Bytes.toStringBinary(this.regionName);
+    if (nameAsString == null) {
+      String name;
+      if (RegionInfo.hasEncodedName(this.regionName)) {
+        // new format region names already have their encoded name.
+        name = Bytes.toStringBinary(this.regionName);
+      } else {
+        // old format. regionNameStr doesn't have the region name.
+        name = Bytes.toStringBinary(this.regionName) + "." + 
this.getEncodedName();
+      }
+      // may race with other threads setting this, but that's ok
+      nameAsString = name;
+      return name;
+    } else {
+      return nameAsString;
     }
-
-    // old format. regionNameStr doesn't have the region name.
-    //
-    //
-    return Bytes.toStringBinary(this.regionName) + "." + this.getEncodedName();
   }
 
   /** Returns the encoded region name */

Reply via email to