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

adoroszlai 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 ad7caf7f3d HDDS-9882. Share ByteString-related code between 
OzonePBHelper classes (#5808)
ad7caf7f3d is described below

commit ad7caf7f3d8a9d4d43f1f4ff82bfb94c80a31a25
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Wed Dec 27 10:35:48 2023 +0100

    HDDS-9882. Share ByteString-related code between OzonePBHelper classes 
(#5808)
---
 .../hadoop/hdds/scm/protocolPB/OzonePBHelper.java  | 27 ++++---
 .../hadoop/ozone/om/helpers/OmKeyLocationInfo.java |  9 ++-
 ...OzoneManagerProtocolClientSideTranslatorPB.java |  6 +-
 .../apache/hadoop/ozone/protocolPB/OMPBHelper.java | 54 ++++++-------
 .../hadoop/ozone/protocolPB/OzonePBHelper.java     | 88 ----------------------
 .../security/OMCancelDelegationTokenRequest.java   |  4 +-
 .../security/OMGetDelegationTokenRequest.java      |  4 +-
 .../security/OMRenewDelegationTokenRequest.java    |  4 +-
 .../protocolPB/OzoneManagerRequestHandler.java     |  3 +-
 9 files changed, 60 insertions(+), 139 deletions(-)

diff --git 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/OzonePBHelper.java
 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/OzonePBHelper.java
similarity index 76%
rename from 
hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/OzonePBHelper.java
rename to 
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/OzonePBHelper.java
index faaea85abc..8bdd4eef39 100644
--- 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/OzonePBHelper.java
+++ 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/OzonePBHelper.java
@@ -23,6 +23,7 @@ import 
org.apache.hadoop.hdds.protocol.proto.HddsProtos.TokenProto;
 import org.apache.hadoop.security.token.Token;
 import org.apache.hadoop.security.token.TokenIdentifier;
 
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
@@ -44,8 +45,8 @@ public final class OzonePBHelper {
    * This map should not be accessed directly. Used the getFixedByteString
    * methods instead.
    */
-  private static final ConcurrentHashMap<Object, ByteString>
-      FIXED_BYTESTRING_CACHE = new ConcurrentHashMap<>();
+  private static final Map<Object, ByteString>
+      FIXED_BYTE_STRING_CACHE = new ConcurrentHashMap<>();
 
   /**
    * Get the ByteString for frequently used fixed and small set strings.
@@ -53,7 +54,7 @@ public final class OzonePBHelper {
    * @param key string
    */
   public static ByteString getFixedByteString(Text key) {
-    return FIXED_BYTESTRING_CACHE.computeIfAbsent(key,
+    return FIXED_BYTE_STRING_CACHE.computeIfAbsent(key,
         k -> ByteString.copyFromUtf8(k.toString()));
   }
 
@@ -62,7 +63,10 @@ public final class OzonePBHelper {
     return (bytes.length == 0) ? ByteString.EMPTY : ByteString.copyFrom(bytes);
   }
 
-  public static Token<? extends TokenIdentifier> tokenFromProto(
+  /**
+   * Convert {@link TokenProto} (used for container tokens) to {@link Token}.
+   */
+  public static <T extends TokenIdentifier> Token<T> tokenFromProto(
       TokenProto tokenProto) {
     return new Token<>(
         tokenProto.getIdentifier().toByteArray(),
@@ -71,12 +75,15 @@ public final class OzonePBHelper {
         new Text(tokenProto.getService()));
   }
 
+  /**
+   * Convert {@link Token} to {@link TokenProto} (used for container tokens).
+   */
   public static TokenProto protoFromToken(Token<?> token) {
-    TokenProto.Builder builder = TokenProto.newBuilder().
-        setIdentifier(getByteString(token.getIdentifier())).
-        setPassword(getByteString(token.getPassword())).
-        setKindBytes(getFixedByteString(token.getKind())).
-        setServiceBytes(getByteString(token.getService().getBytes()));
-    return builder.build();
+    return TokenProto.newBuilder()
+        .setIdentifier(getByteString(token.getIdentifier()))
+        .setPassword(getByteString(token.getPassword()))
+        .setKindBytes(getFixedByteString(token.getKind()))
+        .setServiceBytes(getByteString(token.getService().getBytes()))
+        .build();
   }
 }
diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyLocationInfo.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyLocationInfo.java
index 9ff1ca94ea..adaf3a5c05 100644
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyLocationInfo.java
+++ 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyLocationInfo.java
@@ -22,7 +22,7 @@ import 
org.apache.hadoop.hdds.scm.pipeline.UnknownPipelineStateException;
 import org.apache.hadoop.hdds.scm.storage.BlockLocationInfo;
 import org.apache.hadoop.hdds.security.token.OzoneBlockTokenIdentifier;
 import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyLocation;
-import org.apache.hadoop.ozone.protocolPB.OzonePBHelper;
+import org.apache.hadoop.ozone.protocolPB.OMPBHelper;
 import org.apache.hadoop.security.token.Token;
 
 /**
@@ -103,7 +103,7 @@ public final class OmKeyLocationInfo extends 
BlockLocationInfo {
       try {
         Token<OzoneBlockTokenIdentifier> token = getToken();
         if (token != null) {
-          builder.setToken(OzonePBHelper.protoFromToken(token));
+          builder.setToken(OMPBHelper.protoFromToken(token));
         }
 
         // Pipeline can be null when key create with override and
@@ -147,8 +147,9 @@ public final class OmKeyLocationInfo extends 
BlockLocationInfo {
         .setCreateVersion(keyLocation.getCreateVersion())
         .setPartNumber(keyLocation.getPartNumber());
     if (keyLocation.hasToken()) {
-      builder.setToken((Token<OzoneBlockTokenIdentifier>)
-          OzonePBHelper.tokenFromProto(keyLocation.getToken()));
+      Token<OzoneBlockTokenIdentifier> token =
+          OMPBHelper.tokenFromProto(keyLocation.getToken());
+      builder.setToken(token);
     }
     return builder.build();
   }
diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java
index 840b3244a4..c5e0a0b83c 100644
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java
+++ 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java
@@ -1892,7 +1892,7 @@ public final class 
OzoneManagerProtocolClientSideTranslatorPB
       resp =
           
handleError(submitRequest(omRequest)).getGetDelegationTokenResponse();
       return resp.getResponse().hasToken() ?
-          OMPBHelper.convertToDelegationToken(resp.getResponse().getToken())
+          OMPBHelper.tokenFromProto(resp.getResponse().getToken())
           : null;
     } catch (IOException e) {
       if (e instanceof OMException) {
@@ -1914,7 +1914,7 @@ public final class 
OzoneManagerProtocolClientSideTranslatorPB
       throws OMException {
     RenewDelegationTokenRequestProto req =
         RenewDelegationTokenRequestProto.newBuilder().
-            setToken(OMPBHelper.convertToTokenProto(token)).
+            setToken(OMPBHelper.protoFromToken(token)).
             build();
 
     OMRequest omRequest = createOMRequest(Type.RenewDelegationToken)
@@ -1945,7 +1945,7 @@ public final class 
OzoneManagerProtocolClientSideTranslatorPB
       throws OMException {
     CancelDelegationTokenRequestProto req = CancelDelegationTokenRequestProto
         .newBuilder()
-        .setToken(OMPBHelper.convertToTokenProto(token))
+        .setToken(OMPBHelper.protoFromToken(token))
         .build();
 
     OMRequest omRequest = createOMRequest(Type.CancelDelegationToken)
diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/protocolPB/OMPBHelper.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/protocolPB/OMPBHelper.java
index 9836379a59..ccb2080a87 100644
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/protocolPB/OMPBHelper.java
+++ 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/protocolPB/OMPBHelper.java
@@ -44,9 +44,9 @@ import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.FileEnc
 import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.MD5MD5Crc32FileChecksumProto;
 import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
 import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
-import org.apache.hadoop.ozone.security.OzoneTokenIdentifier;
 import org.apache.hadoop.ozone.security.proto.SecurityProtos.TokenProto;
 import org.apache.hadoop.security.token.Token;
+import org.apache.hadoop.security.token.TokenIdentifier;
 import org.apache.hadoop.ozone.client.checksum.CrcUtil;
 import org.apache.hadoop.util.DataChecksum;
 import org.slf4j.Logger;
@@ -56,6 +56,9 @@ import java.io.ByteArrayInputStream;
 import java.io.DataInputStream;
 import java.io.IOException;
 
+import static 
org.apache.hadoop.hdds.scm.protocolPB.OzonePBHelper.getByteString;
+import static 
org.apache.hadoop.hdds.scm.protocolPB.OzonePBHelper.getFixedByteString;
+
 /**
  * Utilities for converting protobuf classes.
  */
@@ -65,40 +68,37 @@ public final class OMPBHelper {
       ByteString.copyFromUtf8("<redacted>");
 
   private OMPBHelper() {
-    /** Hidden constructor */
+    // no instances
   }
 
   /**
-   * Converts Ozone delegation token to @{@link TokenProto}.
-   * @return tokenProto
+   * Convert {@link TokenProto} (used for delegation tokens and block tokens)
+   * to {@link Token}.
    */
-  public static TokenProto convertToTokenProto(Token<?> tok) {
-    if (tok == null) {
-      throw new IllegalArgumentException("Invalid argument: token is null");
-    }
-
-    return TokenProto.newBuilder().
-        setIdentifier(getByteString(tok.getIdentifier())).
-        setPassword(getByteString(tok.getPassword())).
-        setKind(tok.getKind().toString()).
-        setService(tok.getService().toString()).build();
-  }
-
-  public static ByteString getByteString(byte[] bytes) {
-    // return singleton to reduce object allocation
-    return (bytes.length == 0) ? ByteString.EMPTY : ByteString.copyFrom(bytes);
+  public static <T extends TokenIdentifier> Token<T> tokenFromProto(
+      TokenProto tokenProto) {
+    return new Token<>(
+        tokenProto.getIdentifier().toByteArray(),
+        tokenProto.getPassword().toByteArray(),
+        new Text(tokenProto.getKind()),
+        new Text(tokenProto.getService()));
   }
 
   /**
-   * Converts @{@link TokenProto} to Ozone delegation token.
-   *
-   * @return Ozone
+   * Convert {@link Token} to {@link TokenProto} (used for delegation tokens
+   * and block tokens).
    */
-  public static Token<OzoneTokenIdentifier> convertToDelegationToken(
-      TokenProto tokenProto) {
-    return new Token<>(tokenProto.getIdentifier()
-        .toByteArray(), tokenProto.getPassword().toByteArray(), new Text(
-        tokenProto.getKind()), new Text(tokenProto.getService()));
+  public static TokenProto protoFromToken(Token<?> token) {
+    if (token == null) {
+      throw new IllegalArgumentException("Invalid argument: token is null");
+    }
+
+    return TokenProto.newBuilder()
+        .setIdentifier(getByteString(token.getIdentifier()))
+        .setPassword(getByteString(token.getPassword()))
+        .setKindBytes(getFixedByteString(token.getKind()))
+        .setServiceBytes(getByteString(token.getService().getBytes()))
+        .build();
   }
 
   public static BucketEncryptionKeyInfo convert(
diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/protocolPB/OzonePBHelper.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/protocolPB/OzonePBHelper.java
deleted file mode 100644
index c9f1c3f53b..0000000000
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/protocolPB/OzonePBHelper.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.ozone.protocolPB;
-
-import com.google.protobuf.ByteString;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.ozone.security.proto.SecurityProtos.TokenProto;
-import org.apache.hadoop.security.token.Token;
-import org.apache.hadoop.security.token.TokenIdentifier;
-
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Helper class for converting protobuf objects.
- */
-public final class OzonePBHelper {
-  private OzonePBHelper() {
-    /** Hidden constructor */
-  }
-
-  // Borrowed from ProtobuHelper.java in hadoop-common involving protobuf
-  // messages to avoid breakage due to shading of protobuf in Hadoop-3.3+.
-  /**
-   * Map used to cache fixed strings to ByteStrings. Since there is no
-   * automatic expiration policy, only use this for strings from a fixed, small
-   * set.
-   * <p/>
-   * This map should not be accessed directly. Used the getFixedByteString
-   * methods instead.
-   */
-  private static final ConcurrentHashMap<Object, ByteString>
-          FIXED_BYTESTRING_CACHE = new ConcurrentHashMap<>();
-
-  /**
-   * Get the ByteString for frequently used fixed and small set strings.
-   *
-   * @param key string
-   * @return
-   */
-  public static ByteString getFixedByteString(Text key) {
-    ByteString value = FIXED_BYTESTRING_CACHE.get(key);
-    if (value == null) {
-      value = ByteString.copyFromUtf8(key.toString());
-      ByteString oldValue = FIXED_BYTESTRING_CACHE.putIfAbsent(key, value);
-      return oldValue != null ? oldValue : value;
-    }
-    return value;
-  }
-
-  public static ByteString getByteString(byte[] bytes) {
-    // return singleton to reduce object allocation
-    return (bytes.length == 0) ? ByteString.EMPTY : ByteString.copyFrom(bytes);
-  }
-
-  public static Token<? extends TokenIdentifier> tokenFromProto(
-          TokenProto tokenProto) {
-    Token<? extends TokenIdentifier> token = new Token<>(
-            tokenProto.getIdentifier().toByteArray(),
-            tokenProto.getPassword().toByteArray(),
-            new Text(tokenProto.getKind()),
-            new Text(tokenProto.getService()));
-    return token;
-  }
-
-  public static TokenProto protoFromToken(Token<?> tok) {
-    TokenProto.Builder builder = TokenProto.newBuilder().
-            setIdentifier(getByteString(tok.getIdentifier())).
-            setPassword(getByteString(tok.getPassword())).
-            setKindBytes(getFixedByteString(tok.getKind())).
-            setServiceBytes(getByteString(tok.getService().getBytes()));
-    return builder.build();
-  }
-}
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/security/OMCancelDelegationTokenRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/security/OMCancelDelegationTokenRequest.java
index b95baeefd9..aaba7b4888 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/security/OMCancelDelegationTokenRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/security/OMCancelDelegationTokenRequest.java
@@ -66,7 +66,7 @@ public class OMCancelDelegationTokenRequest extends 
OMClientRequest {
     Map<String, String> auditMap = null;
 
     try {
-      Token<OzoneTokenIdentifier> token = OMPBHelper.convertToDelegationToken(
+      Token<OzoneTokenIdentifier> token = OMPBHelper.tokenFromProto(
           request.getCancelDelegationTokenRequest().getToken());
       auditMap = buildTokenAuditMap(token);
 
@@ -139,7 +139,7 @@ public class OMCancelDelegationTokenRequest extends 
OMClientRequest {
     CancelDelegationTokenRequestProto cancelDelegationTokenRequest =
         getOmRequest().getCancelDelegationTokenRequest();
 
-    return OMPBHelper.convertToDelegationToken(
+    return OMPBHelper.tokenFromProto(
         cancelDelegationTokenRequest.getToken());
   }
 
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/security/OMGetDelegationTokenRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/security/OMGetDelegationTokenRequest.java
index 751cd7a8c4..ad9b770e00 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/security/OMGetDelegationTokenRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/security/OMGetDelegationTokenRequest.java
@@ -103,7 +103,7 @@ public class OMGetDelegationTokenRequest extends 
OMClientRequest {
                           .setResponse(
                               SecurityProtos.GetDelegationTokenResponseProto
                               .newBuilder().setToken(OMPBHelper
-                                  .convertToTokenProto(token)).build())
+                                  .protoFromToken(token)).build())
                           .build())
                   .setTokenRenewInterval(ozoneManager.getDelegationTokenMgr()
                       .getTokenRenewInterval()))
@@ -153,7 +153,7 @@ public class OMGetDelegationTokenRequest extends 
OMClientRequest {
         .getGetDelegationTokenResponse().getResponse().getToken();
 
     Token<OzoneTokenIdentifier> ozoneTokenIdentifierToken =
-        OMPBHelper.convertToDelegationToken(tokenProto);
+        OMPBHelper.tokenFromProto(tokenProto);
 
     AuditLogger auditLogger = ozoneManager.getAuditLogger();
     Map<String, String> auditMap =
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/security/OMRenewDelegationTokenRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/security/OMRenewDelegationTokenRequest.java
index e82404407e..ff04096a08 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/security/OMRenewDelegationTokenRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/security/OMRenewDelegationTokenRequest.java
@@ -71,7 +71,7 @@ public class OMRenewDelegationTokenRequest extends 
OMClientRequest {
 
     long renewTime;
     try {
-      Token<OzoneTokenIdentifier> token = OMPBHelper.convertToDelegationToken(
+      Token<OzoneTokenIdentifier> token = OMPBHelper.tokenFromProto(
           renewDelegationTokenRequest.getToken());
       auditMap = buildTokenAuditMap(token);
 
@@ -133,7 +133,7 @@ public class OMRenewDelegationTokenRequest extends 
OMClientRequest {
         getOmRequest().getUpdatedRenewDelegationTokenRequest();
 
     Token<OzoneTokenIdentifier> ozoneTokenIdentifierToken =
-        OMPBHelper.convertToDelegationToken(updateRenewDelegationTokenRequest
+        OMPBHelper.tokenFromProto(updateRenewDelegationTokenRequest
             .getRenewDelegationTokenRequest().getToken());
 
     AuditLogger auditLogger = ozoneManager.getAuditLogger();
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
index f6284393ed..072234dd80 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
@@ -37,6 +37,7 @@ import 
org.apache.hadoop.hdds.protocol.proto.HddsProtos.TransferLeadershipReques
 import 
org.apache.hadoop.hdds.protocol.proto.HddsProtos.TransferLeadershipResponseProto;
 import 
org.apache.hadoop.hdds.protocol.proto.HddsProtos.UpgradeFinalizationStatus;
 import org.apache.hadoop.hdds.client.ReplicationConfig;
+import org.apache.hadoop.hdds.scm.protocolPB.OzonePBHelper;
 import org.apache.hadoop.hdds.utils.FaultInjector;
 import org.apache.hadoop.ozone.OzoneAcl;
 import org.apache.hadoop.ozone.common.PayloadUtils;
@@ -445,7 +446,7 @@ public class OzoneManagerRequestHandler implements 
RequestHandler {
     DBUpdates dbUpdatesWrapper =
         impl.getDBUpdates(dbUpdatesRequest);
     for (int i = 0; i < dbUpdatesWrapper.getData().size(); i++) {
-      builder.addData(OMPBHelper.getByteString(
+      builder.addData(OzonePBHelper.getByteString(
           dbUpdatesWrapper.getData().get(i)));
     }
     builder.setSequenceNumber(dbUpdatesWrapper.getCurrentSequenceNumber());


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

Reply via email to