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

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


The following commit(s) were added to refs/heads/master by this push:
     new 47add376eb HDDS-8476. ManagedColumnFamilyOptions is not closed 
properly in DatanodeDBProfile (#4731)
47add376eb is described below

commit 47add376eb2b0ce99a3315f07bd58f2d9773587b
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Thu May 18 23:43:36 2023 +0200

    HDDS-8476. ManagedColumnFamilyOptions is not closed properly in 
DatanodeDBProfile (#4731)
---
 .../ozone/container/common/utils/db/DatanodeDBProfile.java    | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/utils/db/DatanodeDBProfile.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/utils/db/DatanodeDBProfile.java
index 49fbcd5837..0e85b486d1 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/utils/db/DatanodeDBProfile.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/utils/db/DatanodeDBProfile.java
@@ -25,8 +25,10 @@ import 
org.apache.hadoop.hdds.utils.db.managed.ManagedBlockBasedTableConfig;
 import org.apache.hadoop.hdds.utils.db.managed.ManagedColumnFamilyOptions;
 import org.apache.hadoop.hdds.utils.db.managed.ManagedDBOptions;
 import org.apache.hadoop.hdds.utils.db.managed.ManagedLRUCache;
+import org.apache.ratis.util.MemoizedSupplier;
 
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Supplier;
 
 import static 
org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_DATANODE_METADATA_ROCKSDB_CACHE_SIZE;
 import static 
org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_DATANODE_METADATA_ROCKSDB_CACHE_SIZE_DEFAULT;
@@ -107,7 +109,7 @@ public abstract class DatanodeDBProfile {
    * Base profile for datanode storage disks.
    */
   private static final class StorageBasedProfile {
-    private final AtomicReference<ManagedColumnFamilyOptions> cfOptions =
+    private final AtomicReference<Supplier<ManagedColumnFamilyOptions>> cfOpts 
=
         new AtomicReference<>();
     private final DBProfile baseProfile;
 
@@ -121,9 +123,10 @@ public abstract class DatanodeDBProfile {
 
     private ManagedColumnFamilyOptions getColumnFamilyOptions(
         ConfigurationSource config) {
-      cfOptions.updateAndGet(op -> op != null ? op :
-          createColumnFamilyOptions(config));
-      return cfOptions.get();
+      final MemoizedSupplier<ManagedColumnFamilyOptions> supplier =
+          MemoizedSupplier.valueOf(() -> createColumnFamilyOptions(config));
+      cfOpts.compareAndSet(null, supplier);
+      return cfOpts.get().get();
     }
 
     private ManagedColumnFamilyOptions createColumnFamilyOptions(


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

Reply via email to