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]