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

sammichen pushed a commit to branch HDDS-7593
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/HDDS-7593 by this push:
     new f244a67037 HDDS-10252. [hsync] Revisit configuration keys for 
incremental chunk list after HDDS-9884 (#6289)
f244a67037 is described below

commit f244a67037ccee76f759bd5ff7871f192312d64f
Author: Wei-Chiu Chuang <[email protected]>
AuthorDate: Sun Mar 3 19:51:46 2024 -0800

    HDDS-10252. [hsync] Revisit configuration keys for incremental chunk list 
after HDDS-9884 (#6289)
---
 .../apache/hadoop/hdds/scm/OzoneClientConfig.java  |  2 +-
 .../org/apache/hadoop/hdds/scm/ScmConfigKeys.java  |  4 ++--
 .../org/apache/hadoop/ozone/OzoneConfigKeys.java   |  2 +-
 .../common/src/main/resources/ozone-default.xml    |  6 ++---
 .../container/keyvalue/impl/BlockManagerImpl.java  | 28 ++++++++++------------
 .../containergenerator/GeneratorDatanode.java      |  6 ++---
 6 files changed, 23 insertions(+), 25 deletions(-)

diff --git 
a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/OzoneClientConfig.java
 
b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/OzoneClientConfig.java
index d1dcc654b1..0b7c8652d7 100644
--- 
a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/OzoneClientConfig.java
+++ 
b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/OzoneClientConfig.java
@@ -230,7 +230,7 @@ public class OzoneClientConfig {
           "list rather than full chunk list to optimize performance. " +
           "Critical to HBase.",
       tags = ConfigTag.CLIENT)
-  private boolean incrementalChunkList = false;
+  private boolean incrementalChunkList = true;
 
   @PostConstruct
   private void validate() {
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ScmConfigKeys.java
 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ScmConfigKeys.java
index 42a74dd12c..c0a48efead 100644
--- 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ScmConfigKeys.java
+++ 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ScmConfigKeys.java
@@ -146,8 +146,8 @@ public final class ScmConfigKeys {
       "32KB";
 
   public static final String OZONE_CHUNK_LIST_INCREMENTAL =
-      "ozone.chunk.list.incremental";
-  public static final boolean OZONE_CHUNK_LIST_INCREMENTAL_DEFAULT = false;
+      "ozone.incremental.chunk.list";
+  public static final boolean OZONE_CHUNK_LIST_INCREMENTAL_DEFAULT = true;
 
   public static final String OZONE_SCM_CONTAINER_LAYOUT_KEY =
       "ozone.scm.container.layout";
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java
index a0d4b59db1..555b180625 100644
--- 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java
+++ 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java
@@ -126,7 +126,7 @@ public final class OzoneConfigKeys {
   public static final String OZONE_FS_HSYNC_ENABLED
       = "ozone.fs.hsync.enabled";
   public static final boolean OZONE_FS_HSYNC_ENABLED_DEFAULT
-      = false;
+      = true;
 
   /**
    * hsync lease soft limit.
diff --git a/hadoop-hdds/common/src/main/resources/ozone-default.xml 
b/hadoop-hdds/common/src/main/resources/ozone-default.xml
index 47067de5fe..d9a39d3772 100644
--- a/hadoop-hdds/common/src/main/resources/ozone-default.xml
+++ b/hadoop-hdds/common/src/main/resources/ozone-default.xml
@@ -856,8 +856,8 @@
     </description>
   </property>
   <property>
-    <name>ozone.chunk.list.incremental</name>
-    <value>false</value>
+    <name>ozone.incremental.chunk.list</name>
+    <value>true</value>
     <tag>OZONE, CLIENT, DATANODE, PERFORMANCE</tag>
     <description>
       By default, a writer client sends full chunk list of a block when it
@@ -4116,7 +4116,7 @@
 
   <property>
     <name>ozone.fs.hsync.enabled</name>
-    <value>false</value>
+    <value>true</value>
     <tag>OZONE, CLIENT</tag>
     <description>
       Enable hsync/hflush. By default they are disabled.
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/impl/BlockManagerImpl.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/impl/BlockManagerImpl.java
index e40434f508..4690565b0b 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/impl/BlockManagerImpl.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/impl/BlockManagerImpl.java
@@ -42,7 +42,6 @@ import com.google.common.base.Preconditions;
 
 import static 
org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.Result.BCSID_MISMATCH;
 import static 
org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.Result.UNKNOWN_BCSID;
-import static 
org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.Result.UNSUPPORTED_REQUEST;
 import static 
org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_CHUNK_LIST_INCREMENTAL;
 import static 
org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_CHUNK_LIST_INCREMENTAL_DEFAULT;
 
@@ -66,6 +65,7 @@ public class BlockManagerImpl implements BlockManager {
   // Default Read Buffer capacity when Checksum is not present
   private final int defaultReadBufferCapacity;
   private final int readMappedBufferThreshold;
+  private boolean incrementalEnabled;
 
   /**
    * Constructs a Block Manager.
@@ -81,6 +81,15 @@ public class BlockManagerImpl implements BlockManager {
     this.readMappedBufferThreshold = config.getBufferSize(
         ScmConfigKeys.OZONE_CHUNK_READ_MAPPED_BUFFER_THRESHOLD_KEY,
         ScmConfigKeys.OZONE_CHUNK_READ_MAPPED_BUFFER_THRESHOLD_DEFAULT);
+    incrementalEnabled =
+        config.getBoolean(OZONE_CHUNK_LIST_INCREMENTAL,
+            OZONE_CHUNK_LIST_INCREMENTAL_DEFAULT);
+    if (incrementalEnabled && !VersionedDatanodeFeatures.isFinalized(
+        HDDSLayoutFeature.HBASE_SUPPORT)) {
+      LOG.warn("DataNode has not finalized upgrading to a version that " +
+          "supports incremental chunk list. Fallback to full chunk list");
+      incrementalEnabled = false;
+    }
   }
 
   @Override
@@ -93,23 +102,12 @@ public class BlockManagerImpl implements BlockManager {
       boolean endOfBlock) throws IOException {
     return persistPutBlock(
         (KeyValueContainer) container,
-        data,
-        config,
-        endOfBlock);
+        data, endOfBlock);
   }
 
-  public static long persistPutBlock(KeyValueContainer container,
-      BlockData data, ConfigurationSource config, boolean endOfBlock)
+  public long persistPutBlock(KeyValueContainer container,
+      BlockData data, boolean endOfBlock)
       throws IOException {
-    boolean incrementalEnabled =
-            config.getBoolean(OZONE_CHUNK_LIST_INCREMENTAL,
-                    OZONE_CHUNK_LIST_INCREMENTAL_DEFAULT);
-    if (incrementalEnabled && !VersionedDatanodeFeatures.isFinalized(
-            HDDSLayoutFeature.HBASE_SUPPORT)) {
-      throw new StorageContainerException("DataNode has not finalized " +
-        "upgrading to a version that supports incremental chunk list.",
-        UNSUPPORTED_REQUEST);
-    }
     Preconditions.checkNotNull(data, "BlockData cannot be null for put " +
         "operation.");
     Preconditions.checkState(data.getContainerID() >= 0, "Container Id " +
diff --git 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java
 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java
index 3a43ddd8ab..dbca12c8b2 100644
--- 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java
+++ 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java
@@ -60,7 +60,6 @@ import 
org.apache.hadoop.ozone.container.keyvalue.KeyValueContainer;
 import org.apache.hadoop.ozone.container.keyvalue.KeyValueContainerData;
 import org.apache.hadoop.ozone.container.keyvalue.impl.BlockManagerImpl;
 import org.apache.hadoop.ozone.container.keyvalue.impl.ChunkManagerFactory;
-import org.apache.hadoop.ozone.container.keyvalue.interfaces.BlockManager;
 import org.apache.hadoop.ozone.container.keyvalue.interfaces.ChunkManager;
 
 import com.codahale.metrics.Timer;
@@ -111,6 +110,7 @@ public class GeneratorDatanode extends BaseGenerator {
   private int overlap;
 
   private ChunkManager chunkManager;
+  private BlockManagerImpl blockManager;
 
   private RoundRobinVolumeChoosingPolicy volumeChoosingPolicy;
 
@@ -133,7 +133,7 @@ public class GeneratorDatanode extends BaseGenerator {
 
     config = createOzoneConfiguration();
 
-    BlockManager blockManager = new BlockManagerImpl(config);
+    blockManager = new BlockManagerImpl(config);
     chunkManager = ChunkManagerFactory
         .createChunkManager(config, blockManager, null);
 
@@ -286,7 +286,7 @@ public class GeneratorDatanode extends BaseGenerator {
           writtenBytes += currentChunkSize;
         }
 
-        BlockManagerImpl.persistPutBlock(container, blockData, config, true);
+        blockManager.persistPutBlock(container, blockData, true);
 
       }
 


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

Reply via email to