kerneltime commented on code in PR #7474:
URL: https://github.com/apache/ozone/pull/7474#discussion_r1949954172


##########
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java:
##########
@@ -886,6 +886,11 @@ public static HddsProtos.UUID toProtobuf(UUID uuid) {
         : null;
   }
 
+  /** @return Hex string representation of {@code value} */
+  public static String getHexString(long value) {

Review Comment:
   Not sure why this wrapper is needed. 



##########
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java:
##########
@@ -1483,21 +1483,152 @@ public void deleteContainer(Container container, 
boolean force)
   @Override
   public void reconcileContainer(DNContainerOperationClient dnClient, 
Container<?> container,
                                  Set<DatanodeDetails> peers) throws 
IOException {
-    // TODO Just a deterministic placeholder hash for testing until actual 
implementation is finished.
-    ContainerData data = container.getContainerData();
-    long id = data.getContainerID();
-    ByteBuffer byteBuffer = ByteBuffer.allocate(Long.BYTES)
-        .putLong(id)
-        .asReadOnlyBuffer();
-    byteBuffer.rewind();
-    ChecksumByteBuffer checksumImpl = ChecksumByteBufferFactory.crc32CImpl();
-    checksumImpl.update(byteBuffer);
-    long dataChecksum = checksumImpl.getValue();
-    LOG.info("Generated data checksum of container {} for testing: {}", id, 
dataChecksum);
-    data.setDataChecksum(dataChecksum);
+    KeyValueContainer kvContainer = (KeyValueContainer) container;
+    KeyValueContainerData containerData = (KeyValueContainerData) 
container.getContainerData();

Review Comment:
   Our class hierarchy and use of it in code is kind of messy, instead of 
casting it here maybe something like this? 
   ```
   diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/checksum/ContainerChecksumTreeManager.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/checksum/ContainerChecksumTreeManager.java
   index 48ce3939272..e1b7791acb5 100644
   --- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/checksum/ContainerChecksumTreeManager.java
   +++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/checksum/ContainerChecksumTreeManager.java
   @@ -147,7 +147,7 @@ public void markBlocksAsDeleted(KeyValueContainerData 
data, Collection<Long> del
        }
      }
    
   -  public ContainerDiffReport diff(KeyValueContainerData thisContainer,
   +  public ContainerDiffReport diff(ContainerData thisContainer,
                                      ContainerProtos.ContainerChecksumInfo 
peerChecksumInfo) throws
          StorageContainerException {
    
   diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
   index 2c7b9ed7a85..7b3b43253c0 100644
   --- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
   +++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
   @@ -1484,7 +1484,8 @@ public void deleteContainer(Container container, 
boolean force)
      public void reconcileContainer(DNContainerOperationClient dnClient, 
Container<?> container,
                                     Set<DatanodeDetails> peers) throws 
IOException {
        KeyValueContainer kvContainer = (KeyValueContainer) container;
   -    KeyValueContainerData containerData = (KeyValueContainerData) 
container.getContainerData();
   +    ContainerData containerData = container.getContainerData();
   +//    KeyValueContainerData containerData = (KeyValueContainerData) 
container.getContainerData();
        Optional<ContainerProtos.ContainerChecksumInfo> checksumInfo = 
checksumManager.read(containerData);
        long oldDataChecksum = 0;
    
   @@ -1538,9 +1539,10 @@ public void 
reconcileContainer(DNContainerOperationClient dnClient, Container<?>
        sendICR(container);
      }
    
   -  private long updateContainerChecksum(KeyValueContainerData containerData) 
throws IOException {
   +  private long updateContainerChecksum(ContainerData containerData) throws 
IOException {
        ContainerMerkleTreeWriter merkleTree = new ContainerMerkleTreeWriter();
   -    try (DBHandle dbHandle = BlockUtils.getDB(containerData, conf);
   +    KeyValueContainerData kvContainerData = (KeyValueContainerData) 
containerData;
   +    try (DBHandle dbHandle = BlockUtils.getDB(kvContainerData, conf);
             BlockIterator<BlockData> blockIterator = dbHandle.getStore().
                 getBlockIterator(containerData.getContainerID())) {
          while (blockIterator.hasNext()) {
   ```



##########
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java:
##########
@@ -1483,21 +1483,152 @@ public void deleteContainer(Container container, 
boolean force)
   @Override
   public void reconcileContainer(DNContainerOperationClient dnClient, 
Container<?> container,
                                  Set<DatanodeDetails> peers) throws 
IOException {
-    // TODO Just a deterministic placeholder hash for testing until actual 
implementation is finished.
-    ContainerData data = container.getContainerData();
-    long id = data.getContainerID();
-    ByteBuffer byteBuffer = ByteBuffer.allocate(Long.BYTES)
-        .putLong(id)
-        .asReadOnlyBuffer();
-    byteBuffer.rewind();
-    ChecksumByteBuffer checksumImpl = ChecksumByteBufferFactory.crc32CImpl();
-    checksumImpl.update(byteBuffer);
-    long dataChecksum = checksumImpl.getValue();
-    LOG.info("Generated data checksum of container {} for testing: {}", id, 
dataChecksum);
-    data.setDataChecksum(dataChecksum);
+    KeyValueContainer kvContainer = (KeyValueContainer) container;
+    KeyValueContainerData containerData = (KeyValueContainerData) 
container.getContainerData();

Review Comment:
   It would keep maximum usage at the interface level instead of peaking into 
the implementation from the very beginning. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to