[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-30 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r463410723



##
File path: 
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
##
@@ -0,0 +1,279 @@
+/**
+ * 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.om.request.key;
+
+import com.google.common.base.Optional;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.hadoop.hdds.utils.db.Table;
+import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
+import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
+import org.apache.hadoop.ozone.om.ResolvedBucket;
+import org.apache.hadoop.ozone.om.helpers.OmRenameKeys;
+import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
+import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
+import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
+import org.apache.hadoop.ozone.om.response.OMClientResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeysRenameResponse;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysArgs;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysMap;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysResponse;
+import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer;
+import org.apache.hadoop.ozone.security.acl.OzoneObj;
+import org.apache.hadoop.util.Time;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import static 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status.OK;
+import static 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status.PARTIAL_RENAME;
+import static org.apache.hadoop.ozone.OzoneConsts.RENAMED_KEYS_MAP;
+import static org.apache.hadoop.ozone.OzoneConsts.UNRENAMED_KEYS_MAP;
+import static 
org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK;
+
+/**
+ * Handles rename keys request.
+ */
+public class OMKeysRenameRequest extends OMKeyRequest {
+
+  private static final Logger LOG =
+  LoggerFactory.getLogger(OMKeysRenameRequest.class);
+
+  public OMKeysRenameRequest(OMRequest omRequest) {
+super(omRequest);
+  }
+
+  @Override
+  @SuppressWarnings("methodlength")
+  public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
+  long trxnLogIndex, OzoneManagerDoubleBufferHelper omDoubleBufferHelper) {
+
+RenameKeysRequest renameKeysRequest = 
getOmRequest().getRenameKeysRequest();
+RenameKeysArgs renameKeysArgs = renameKeysRequest.getRenameKeysArgs();
+String volumeName = renameKeysArgs.getVolumeName();
+String bucketName = renameKeysArgs.getBucketName();
+OMClientResponse omClientResponse = null;
+
+List unRenamedKeys = new ArrayList<>();
+
+// fromKeyName -> toKeyName
+Map renamedKeys = new HashMap<>();
+
+Map fromKeyAndToKeyInfo = new HashMap<>();
+OMMetrics omMetrics = ozoneManager.getMetrics();
+omMetrics.incNumKeyRenames();
+
+AuditLogger auditLogger = ozoneManager.getAuditLogger();
+
+OMResponse.Builder omResponse = OmResponseUtil.getOMResponseBuilder(
+getOmRequest());
+
+OMMetadataManager omMetadataManager = ozoneManager.getMetadataManager();
+IOException exception = null;
+OmKeyInfo fromKeyValue = null;
+Result result = null;
+Map auditMap = new LinkedHashMap<>();
+String fromKeyName = null;
+String toKeyName = null;
+boolean acquired

[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-30 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r462993999



##
File path: hadoop-ozone/interface-client/src/main/resources/proto.lock
##
@@ -83,6 +83,10 @@
 "name": "DeleteKeys",
 "integer": 38
   },
+  {
+"name": "RenameKeys",
+"integer": 39
+  },

Review comment:
   Thanks for @adoroszlai 's advice. Fixed the issues mentioned above. Can 
you help take another look?





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org



[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-30 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r462993785



##
File path: 
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
##
@@ -750,6 +751,25 @@ public void renameKey(String volumeName, String bucketName,
 ozoneManagerClient.renameKey(keyArgs, toKeyName);
   }
 
+  @Override
+  public void renameKeys(String volumeName, String bucketName,
+ Map keyMap) throws IOException {
+verifyVolumeName(volumeName);
+verifyBucketName(bucketName);
+HddsClientUtils.checkNotNull(keyMap);
+Map  keyArgsMap = new HashMap<>();
+for (Map.Entry< String, String > entry : keyMap.entrySet()) {
+  OmKeyArgs keyArgs = new OmKeyArgs.Builder()
+  .setVolumeName(volumeName)
+  .setBucketName(bucketName)
+  .setKeyName(entry.getKey())
+  .build();
+  keyArgsMap.put(keyArgs, entry.getValue());
+}

Review comment:
   Thanks for @bharatviswa504 's suggestion.  Agree with your idea, I had 
already updated this PR. KeyArgs is no longer used. And set volumeName and 
bucketName only once. Can you help take another look?





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org



[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-30 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r462737452



##
File path: 
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
##
@@ -750,6 +751,25 @@ public void renameKey(String volumeName, String bucketName,
 ozoneManagerClient.renameKey(keyArgs, toKeyName);
   }
 
+  @Override
+  public void renameKeys(String volumeName, String bucketName,
+ Map keyMap) throws IOException {
+verifyVolumeName(volumeName);
+verifyBucketName(bucketName);
+HddsClientUtils.checkNotNull(keyMap);
+Map  keyArgsMap = new HashMap<>();
+for (Map.Entry< String, String > entry : keyMap.entrySet()) {
+  OmKeyArgs keyArgs = new OmKeyArgs.Builder()
+  .setVolumeName(volumeName)
+  .setBucketName(bucketName)
+  .setKeyName(entry.getKey())
+  .build();
+  keyArgsMap.put(keyArgs, entry.getValue());
+}

Review comment:
   Thanks @adoroszlai's feedback.  I had added new commit to fix the 
problem.





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org



[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-20 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r457051453



##
File path: 
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
##
@@ -750,6 +751,25 @@ public void renameKey(String volumeName, String bucketName,
 ozoneManagerClient.renameKey(keyArgs, toKeyName);
   }
 
+  @Override
+  public void renameKeys(String volumeName, String bucketName,
+ Map keyMap) throws IOException {
+verifyVolumeName(volumeName);
+verifyBucketName(bucketName);
+HddsClientUtils.checkNotNull(keyMap);
+Map  keyArgsMap = new HashMap<>();
+for (Map.Entry< String, String > entry : keyMap.entrySet()) {
+  OmKeyArgs keyArgs = new OmKeyArgs.Builder()
+  .setVolumeName(volumeName)
+  .setBucketName(bucketName)
+  .setKeyName(entry.getKey())
+  .build();
+  keyArgsMap.put(keyArgs, entry.getValue());
+}

Review comment:
   Thanks for @adoroszlai 's reply. At present, our client calls 
RpcClient#renameKeys through 
[OzoneBucket#renameKeys](https://github.com/apache/hadoop-ozone/pull/1150/files#diff-a4a0be1d5df61f0de3bdce909bb3a4a3R1273)
 to batch renameKeys.  OzoneBucket is a bucket-level API, we can only rename 
Keys in a single volume/bucket use it.
   I will remove the volume/bucket existence check in OMKeysRenameRequest, it 
had already checked here. Any other suggestions for changes?





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org



[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-20 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r457051453



##
File path: 
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
##
@@ -750,6 +751,25 @@ public void renameKey(String volumeName, String bucketName,
 ozoneManagerClient.renameKey(keyArgs, toKeyName);
   }
 
+  @Override
+  public void renameKeys(String volumeName, String bucketName,
+ Map keyMap) throws IOException {
+verifyVolumeName(volumeName);
+verifyBucketName(bucketName);
+HddsClientUtils.checkNotNull(keyMap);
+Map  keyArgsMap = new HashMap<>();
+for (Map.Entry< String, String > entry : keyMap.entrySet()) {
+  OmKeyArgs keyArgs = new OmKeyArgs.Builder()
+  .setVolumeName(volumeName)
+  .setBucketName(bucketName)
+  .setKeyName(entry.getKey())
+  .build();
+  keyArgsMap.put(keyArgs, entry.getValue());
+}

Review comment:
   Thanks for @adoroszlai 's reply. At present, our client calls 
RpcClient#renameKeys through 
[OzoneBucket#renameKeys](https://github.com/apache/hadoop-ozone/pull/1150/files#diff-a4a0be1d5df61f0de3bdce909bb3a4a3R1273)
 to batch renameKeys.  OzoneBucket is a bucket-level API, we can only rename 
Keys in a single volume/bucket use it.
   I will remove the volume/bucket existence check in OMKeysRenameRequest, 
which is redundant. Any other suggestions for changes?





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org



[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-20 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r457051453



##
File path: 
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
##
@@ -750,6 +751,25 @@ public void renameKey(String volumeName, String bucketName,
 ozoneManagerClient.renameKey(keyArgs, toKeyName);
   }
 
+  @Override
+  public void renameKeys(String volumeName, String bucketName,
+ Map keyMap) throws IOException {
+verifyVolumeName(volumeName);
+verifyBucketName(bucketName);
+HddsClientUtils.checkNotNull(keyMap);
+Map  keyArgsMap = new HashMap<>();
+for (Map.Entry< String, String > entry : keyMap.entrySet()) {
+  OmKeyArgs keyArgs = new OmKeyArgs.Builder()
+  .setVolumeName(volumeName)
+  .setBucketName(bucketName)
+  .setKeyName(entry.getKey())
+  .build();
+  keyArgsMap.put(keyArgs, entry.getValue());
+}

Review comment:
   Thanks for @adoroszlai 's reply. At present, our client calls 
RpcClient#renameKeys through 
[OzoneBucket#renameKeys](https://github.com/apache/hadoop-ozone/pull/1150/files#diff-a4a0be1d5df61f0de3bdce909bb3a4a3R1273)
 to batch renameKeys.  OzoneBucket is a bucket-level API, we can only rename 
Keys in a single volume/bucket use it.
   I will remove the volume/bucket existence check in OMKeysRenameRequest, 
which is redundant. Any other Suggestions for changes?





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org



[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-20 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r457051453



##
File path: 
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
##
@@ -750,6 +751,25 @@ public void renameKey(String volumeName, String bucketName,
 ozoneManagerClient.renameKey(keyArgs, toKeyName);
   }
 
+  @Override
+  public void renameKeys(String volumeName, String bucketName,
+ Map keyMap) throws IOException {
+verifyVolumeName(volumeName);
+verifyBucketName(bucketName);
+HddsClientUtils.checkNotNull(keyMap);
+Map  keyArgsMap = new HashMap<>();
+for (Map.Entry< String, String > entry : keyMap.entrySet()) {
+  OmKeyArgs keyArgs = new OmKeyArgs.Builder()
+  .setVolumeName(volumeName)
+  .setBucketName(bucketName)
+  .setKeyName(entry.getKey())
+  .build();
+  keyArgsMap.put(keyArgs, entry.getValue());
+}

Review comment:
   Thanks for @adoroszlai 's reply. At present, our client calls 
RpcClient#renameKeys through 
[OzoneBucket#renameKeys](https://github.com/apache/hadoop-ozone/pull/1150/files#diff-a4a0be1d5df61f0de3bdce909bb3a4a3R1273)
 to batch renameKeys.  OzoneBucket is a bucket-level API, we can only rename 
Keys in a single volume/bucket use it.
   So do we need to change the RpcClient#renameKeys? If needed change here any 
Suggestions here?





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org



[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-19 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r457051453



##
File path: 
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
##
@@ -750,6 +751,25 @@ public void renameKey(String volumeName, String bucketName,
 ozoneManagerClient.renameKey(keyArgs, toKeyName);
   }
 
+  @Override
+  public void renameKeys(String volumeName, String bucketName,
+ Map keyMap) throws IOException {
+verifyVolumeName(volumeName);
+verifyBucketName(bucketName);
+HddsClientUtils.checkNotNull(keyMap);
+Map  keyArgsMap = new HashMap<>();
+for (Map.Entry< String, String > entry : keyMap.entrySet()) {
+  OmKeyArgs keyArgs = new OmKeyArgs.Builder()
+  .setVolumeName(volumeName)
+  .setBucketName(bucketName)
+  .setKeyName(entry.getKey())
+  .build();
+  keyArgsMap.put(keyArgs, entry.getValue());
+}

Review comment:
   Thanks for @adoroszlai 's reply. At present, our client calls 
RpcClient#renameKeys through 
[OzoneBucket#renameKeys](https://github.com/apache/hadoop-ozone/pull/1150/files#diff-a4a0be1d5df61f0de3bdce909bb3a4a3R1273)
 to batch renameKeys.  OzoneBucket is a bucket-level API, we can only rename 
Keys in a single volume/bucket use it.
   So do we need to change the RpcClient#renameKeys? If need change here any 
Suggestions here?





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org



[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-19 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r457051453



##
File path: 
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
##
@@ -750,6 +751,25 @@ public void renameKey(String volumeName, String bucketName,
 ozoneManagerClient.renameKey(keyArgs, toKeyName);
   }
 
+  @Override
+  public void renameKeys(String volumeName, String bucketName,
+ Map keyMap) throws IOException {
+verifyVolumeName(volumeName);
+verifyBucketName(bucketName);
+HddsClientUtils.checkNotNull(keyMap);
+Map  keyArgsMap = new HashMap<>();
+for (Map.Entry< String, String > entry : keyMap.entrySet()) {
+  OmKeyArgs keyArgs = new OmKeyArgs.Builder()
+  .setVolumeName(volumeName)
+  .setBucketName(bucketName)
+  .setKeyName(entry.getKey())
+  .build();
+  keyArgsMap.put(keyArgs, entry.getValue());
+}

Review comment:
   Thanks for @adoroszlai 's reply. At present, our client calls 
RpcClient#renameKeys through 
[OzoneBucket#renameKeys](https://github.com/apache/hadoop-ozone/pull/1150/files#diff-a4a0be1d5df61f0de3bdce909bb3a4a3R1273)
 to batch renameKeys.  OzoneBucket is a bucket-level API, we can only rename 
Keys in a single volume/bucket use it.
   Do we need to change the RpcClient#renameKeys? If need change here any 
Suggestions here?





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org



[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-19 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r457011101



##
File path: 
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
##
@@ -750,6 +751,25 @@ public void renameKey(String volumeName, String bucketName,
 ozoneManagerClient.renameKey(keyArgs, toKeyName);
   }
 
+  @Override
+  public void renameKeys(String volumeName, String bucketName,
+ Map keyMap) throws IOException {
+verifyVolumeName(volumeName);
+verifyBucketName(bucketName);
+HddsClientUtils.checkNotNull(keyMap);
+Map  keyArgsMap = new HashMap<>();
+for (Map.Entry< String, String > entry : keyMap.entrySet()) {
+  OmKeyArgs keyArgs = new OmKeyArgs.Builder()
+  .setVolumeName(volumeName)
+  .setBucketName(bucketName)
+  .setKeyName(entry.getKey())
+  .build();
+  keyArgsMap.put(keyArgs, entry.getValue());
+}

Review comment:
   Here I'll modify RPCClient to use Map  keyArgsMap 
directly. 





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org



[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-14 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r454315354



##
File path: 
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
##
@@ -750,6 +751,25 @@ public void renameKey(String volumeName, String bucketName,
 ozoneManagerClient.renameKey(keyArgs, toKeyName);
   }
 
+  @Override
+  public void renameKeys(String volumeName, String bucketName,
+ Map keyMap) throws IOException {
+verifyVolumeName(volumeName);
+verifyBucketName(bucketName);
+HddsClientUtils.checkNotNull(keyMap);
+Map  keyArgsMap = new HashMap<>();
+for (Map.Entry< String, String > entry : keyMap.entrySet()) {
+  OmKeyArgs keyArgs = new OmKeyArgs.Builder()
+  .setVolumeName(volumeName)
+  .setBucketName(bucketName)
+  .setKeyName(entry.getKey())
+  .build();
+  keyArgsMap.put(keyArgs, entry.getValue());
+}

Review comment:
   The main purpose here is to keep up with the [renameKey 
implementation](https://github.com/apache/hadoop-ozone/pull/1150/files#diff-ddfee0637dda7038422139fc5a3cbfdeR751)
 and help make the code implementation clearer.





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org



[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-12 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r449497896



##
File path: 
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
##
@@ -0,0 +1,298 @@
+/**
+ * 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.om.request.key;
+
+import com.google.common.base.Preconditions;
+import org.apache.hadoop.ozone.OzoneConsts;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
+import org.apache.hadoop.ozone.om.OmRenameKeyInfo;
+import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.exceptions.OMException;
+import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
+import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
+import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
+import org.apache.hadoop.ozone.om.response.OMClientResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeyDeleteResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeysRenameResponse;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeyRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysResponse;
+import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer;
+import org.apache.hadoop.ozone.security.acl.OzoneObj;
+import org.apache.hadoop.util.Time;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_NOT_FOUND;
+
+/**
+ * Handles rename keys request.
+ */
+public class OMKeysRenameRequest extends OMKeyRequest {
+
+  private static final Logger LOG =
+  LoggerFactory.getLogger(OMKeysRenameRequest.class);
+
+  public OMKeysRenameRequest(OMRequest omRequest) {
+super(omRequest);
+  }
+
+  /**
+   * Stores the result of request execution for Rename Requests.
+   */
+  private enum Result {
+SUCCESS,
+DELETE_FROM_KEY_ONLY,
+REPLAY,
+FAILURE,
+  }
+
+  @Override
+  public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
+
+RenameKeysRequest renameKeys = getOmRequest().getRenameKeysRequest();
+Preconditions.checkNotNull(renameKeys);
+
+List renameKeyList = new ArrayList<>();
+for (RenameKeyRequest renameKey : renameKeys.getRenameKeyRequestList()) {
+  // Set modification time.
+  KeyArgs.Builder newKeyArgs = renameKey.getKeyArgs().toBuilder()
+  .setModificationTime(Time.now());
+  renameKey.toBuilder().setKeyArgs(newKeyArgs);
+  renameKeyList.add(renameKey);
+}
+RenameKeysRequest renameKeysRequest = RenameKeysRequest
+.newBuilder().addAllRenameKeyRequest(renameKeyList).build();
+return getOmRequest().toBuilder().setRenameKeysRequest(renameKeysRequest)
+.setUserInfo(getUserInfo()).build();
+  }
+
+  @Override
+  @SuppressWarnings("methodlength")
+  public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
+  long trxnLogIndex, OzoneManagerDoubleBufferHelper omDoubleBufferHelper) {
+
+RenameKeysRequest renameKeysRequest = 
getOmRequest().getRenameKeysRequest();
+OMClientResponse omClientResponse = null;
+Set unRenamedKeys = new HashSet<>();
+List renameKeyInfoList = new ArrayList<>();
+
+OMMetrics omMetrics = ozoneManager.getMetrics();
+omMetrics.incNumKeyRenames();
+
+AuditLogger auditLogger = ozoneManager.getAuditLogger();
+

[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-09 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r452634999



##
File path: 
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/OMKeysRenameResponse.java
##
@@ -0,0 +1,135 @@
+/**
+ * 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.om.response.key;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Optional;
+import org.apache.hadoop.hdds.utils.db.BatchOperation;
+import org.apache.hadoop.hdds.utils.db.Table;
+import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
+import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OmRenameKeyInfo;
+import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
+import org.apache.hadoop.ozone.om.response.CleanupTableInfo;
+import org.apache.hadoop.ozone.om.response.OMClientResponse;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
+
+import javax.annotation.Nonnull;
+import java.io.IOException;
+import java.util.List;
+
+import static org.apache.hadoop.ozone.om.OmMetadataManagerImpl.KEY_TABLE;
+import static 
org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK;
+
+/**
+ * Response for RenameKeys request.
+ */
+@CleanupTableInfo(cleanupTables = {KEY_TABLE})
+public class OMKeysRenameResponse extends OMClientResponse {
+
+  private List renameKeyInfoList;
+  private long trxnLogIndex;
+  private String fromKeyName = null;
+  private String toKeyName = null;
+
+  public OMKeysRenameResponse(@Nonnull OMResponse omResponse,
+  List renameKeyInfoList,
+  long trxnLogIndex) {
+super(omResponse);
+this.renameKeyInfoList = renameKeyInfoList;
+this.trxnLogIndex = trxnLogIndex;
+  }
+
+
+  /**
+   * For when the request is not successful or it is a replay transaction.
+   * For a successful request, the other constructor should be used.
+   */
+  public OMKeysRenameResponse(@Nonnull OMResponse omResponse) {
+super(omResponse);
+checkStatusNotOK();
+  }
+
+  @Override
+  public void addToDBBatch(OMMetadataManager omMetadataManager,
+   BatchOperation batchOperation) throws IOException {
+boolean acquiredLock = false;
+for (OmRenameKeyInfo omRenameKeyInfo : renameKeyInfoList) {
+  String volumeName = omRenameKeyInfo.getNewKeyInfo().getVolumeName();
+  String bucketName = omRenameKeyInfo.getNewKeyInfo().getBucketName();
+  fromKeyName = omRenameKeyInfo.getFromKeyName();
+  OmKeyInfo newKeyInfo = omRenameKeyInfo.getNewKeyInfo();
+  toKeyName = newKeyInfo.getKeyName();
+  Table keyTable = omMetadataManager
+  .getKeyTable();
+  try {
+acquiredLock =
+omMetadataManager.getLock().acquireWriteLock(BUCKET_LOCK,
+volumeName, bucketName);
+// If toKeyName is null, then we need to only delete the fromKeyName
+// from KeyTable. This is the case of replay where toKey exists but
+// fromKey has not been deleted.
+if (deleteFromKeyOnly()) {

Review comment:
   Thanks Bharat for the suggestion, I have taken a close look at the 
implementation of #1169 with some very nice changes. In this PR I will 
synchronize the #1169 changes here to make sure they are implemented the same.





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org



[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-03 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r449497896



##
File path: 
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
##
@@ -0,0 +1,298 @@
+/**
+ * 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.om.request.key;
+
+import com.google.common.base.Preconditions;
+import org.apache.hadoop.ozone.OzoneConsts;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
+import org.apache.hadoop.ozone.om.OmRenameKeyInfo;
+import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.exceptions.OMException;
+import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
+import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
+import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
+import org.apache.hadoop.ozone.om.response.OMClientResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeyDeleteResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeysRenameResponse;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeyRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysResponse;
+import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer;
+import org.apache.hadoop.ozone.security.acl.OzoneObj;
+import org.apache.hadoop.util.Time;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_NOT_FOUND;
+
+/**
+ * Handles rename keys request.
+ */
+public class OMKeysRenameRequest extends OMKeyRequest {
+
+  private static final Logger LOG =
+  LoggerFactory.getLogger(OMKeysRenameRequest.class);
+
+  public OMKeysRenameRequest(OMRequest omRequest) {
+super(omRequest);
+  }
+
+  /**
+   * Stores the result of request execution for Rename Requests.
+   */
+  private enum Result {
+SUCCESS,
+DELETE_FROM_KEY_ONLY,
+REPLAY,
+FAILURE,
+  }
+
+  @Override
+  public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
+
+RenameKeysRequest renameKeys = getOmRequest().getRenameKeysRequest();
+Preconditions.checkNotNull(renameKeys);
+
+List renameKeyList = new ArrayList<>();
+for (RenameKeyRequest renameKey : renameKeys.getRenameKeyRequestList()) {
+  // Set modification time.
+  KeyArgs.Builder newKeyArgs = renameKey.getKeyArgs().toBuilder()
+  .setModificationTime(Time.now());
+  renameKey.toBuilder().setKeyArgs(newKeyArgs);
+  renameKeyList.add(renameKey);
+}
+RenameKeysRequest renameKeysRequest = RenameKeysRequest
+.newBuilder().addAllRenameKeyRequest(renameKeyList).build();
+return getOmRequest().toBuilder().setRenameKeysRequest(renameKeysRequest)
+.setUserInfo(getUserInfo()).build();
+  }
+
+  @Override
+  @SuppressWarnings("methodlength")
+  public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
+  long trxnLogIndex, OzoneManagerDoubleBufferHelper omDoubleBufferHelper) {
+
+RenameKeysRequest renameKeysRequest = 
getOmRequest().getRenameKeysRequest();
+OMClientResponse omClientResponse = null;
+Set unRenamedKeys = new HashSet<>();
+List renameKeyInfoList = new ArrayList<>();
+
+OMMetrics omMetrics = ozoneManager.getMetrics();
+omMetrics.incNumKeyRenames();
+
+AuditLogger auditLogger = ozoneManager.getAuditLogger();
+

[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-03 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r449497896



##
File path: 
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
##
@@ -0,0 +1,298 @@
+/**
+ * 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.om.request.key;
+
+import com.google.common.base.Preconditions;
+import org.apache.hadoop.ozone.OzoneConsts;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
+import org.apache.hadoop.ozone.om.OmRenameKeyInfo;
+import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.exceptions.OMException;
+import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
+import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
+import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
+import org.apache.hadoop.ozone.om.response.OMClientResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeyDeleteResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeysRenameResponse;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeyRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysResponse;
+import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer;
+import org.apache.hadoop.ozone.security.acl.OzoneObj;
+import org.apache.hadoop.util.Time;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_NOT_FOUND;
+
+/**
+ * Handles rename keys request.
+ */
+public class OMKeysRenameRequest extends OMKeyRequest {
+
+  private static final Logger LOG =
+  LoggerFactory.getLogger(OMKeysRenameRequest.class);
+
+  public OMKeysRenameRequest(OMRequest omRequest) {
+super(omRequest);
+  }
+
+  /**
+   * Stores the result of request execution for Rename Requests.
+   */
+  private enum Result {
+SUCCESS,
+DELETE_FROM_KEY_ONLY,
+REPLAY,
+FAILURE,
+  }
+
+  @Override
+  public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
+
+RenameKeysRequest renameKeys = getOmRequest().getRenameKeysRequest();
+Preconditions.checkNotNull(renameKeys);
+
+List renameKeyList = new ArrayList<>();
+for (RenameKeyRequest renameKey : renameKeys.getRenameKeyRequestList()) {
+  // Set modification time.
+  KeyArgs.Builder newKeyArgs = renameKey.getKeyArgs().toBuilder()
+  .setModificationTime(Time.now());
+  renameKey.toBuilder().setKeyArgs(newKeyArgs);
+  renameKeyList.add(renameKey);
+}
+RenameKeysRequest renameKeysRequest = RenameKeysRequest
+.newBuilder().addAllRenameKeyRequest(renameKeyList).build();
+return getOmRequest().toBuilder().setRenameKeysRequest(renameKeysRequest)
+.setUserInfo(getUserInfo()).build();
+  }
+
+  @Override
+  @SuppressWarnings("methodlength")
+  public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
+  long trxnLogIndex, OzoneManagerDoubleBufferHelper omDoubleBufferHelper) {
+
+RenameKeysRequest renameKeysRequest = 
getOmRequest().getRenameKeysRequest();
+OMClientResponse omClientResponse = null;
+Set unRenamedKeys = new HashSet<>();
+List renameKeyInfoList = new ArrayList<>();
+
+OMMetrics omMetrics = ozoneManager.getMetrics();
+omMetrics.incNumKeyRenames();
+
+AuditLogger auditLogger = ozoneManager.getAuditLogger();
+

[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-03 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r449497896



##
File path: 
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
##
@@ -0,0 +1,298 @@
+/**
+ * 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.om.request.key;
+
+import com.google.common.base.Preconditions;
+import org.apache.hadoop.ozone.OzoneConsts;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
+import org.apache.hadoop.ozone.om.OmRenameKeyInfo;
+import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.exceptions.OMException;
+import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
+import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
+import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
+import org.apache.hadoop.ozone.om.response.OMClientResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeyDeleteResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeysRenameResponse;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeyRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysResponse;
+import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer;
+import org.apache.hadoop.ozone.security.acl.OzoneObj;
+import org.apache.hadoop.util.Time;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_NOT_FOUND;
+
+/**
+ * Handles rename keys request.
+ */
+public class OMKeysRenameRequest extends OMKeyRequest {
+
+  private static final Logger LOG =
+  LoggerFactory.getLogger(OMKeysRenameRequest.class);
+
+  public OMKeysRenameRequest(OMRequest omRequest) {
+super(omRequest);
+  }
+
+  /**
+   * Stores the result of request execution for Rename Requests.
+   */
+  private enum Result {
+SUCCESS,
+DELETE_FROM_KEY_ONLY,
+REPLAY,
+FAILURE,
+  }
+
+  @Override
+  public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
+
+RenameKeysRequest renameKeys = getOmRequest().getRenameKeysRequest();
+Preconditions.checkNotNull(renameKeys);
+
+List renameKeyList = new ArrayList<>();
+for (RenameKeyRequest renameKey : renameKeys.getRenameKeyRequestList()) {
+  // Set modification time.
+  KeyArgs.Builder newKeyArgs = renameKey.getKeyArgs().toBuilder()
+  .setModificationTime(Time.now());
+  renameKey.toBuilder().setKeyArgs(newKeyArgs);
+  renameKeyList.add(renameKey);
+}
+RenameKeysRequest renameKeysRequest = RenameKeysRequest
+.newBuilder().addAllRenameKeyRequest(renameKeyList).build();
+return getOmRequest().toBuilder().setRenameKeysRequest(renameKeysRequest)
+.setUserInfo(getUserInfo()).build();
+  }
+
+  @Override
+  @SuppressWarnings("methodlength")
+  public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
+  long trxnLogIndex, OzoneManagerDoubleBufferHelper omDoubleBufferHelper) {
+
+RenameKeysRequest renameKeysRequest = 
getOmRequest().getRenameKeysRequest();
+OMClientResponse omClientResponse = null;
+Set unRenamedKeys = new HashSet<>();
+List renameKeyInfoList = new ArrayList<>();
+
+OMMetrics omMetrics = ozoneManager.getMetrics();
+omMetrics.incNumKeyRenames();
+
+AuditLogger auditLogger = ozoneManager.getAuditLogger();
+

[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-03 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r449497896



##
File path: 
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
##
@@ -0,0 +1,298 @@
+/**
+ * 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.om.request.key;
+
+import com.google.common.base.Preconditions;
+import org.apache.hadoop.ozone.OzoneConsts;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
+import org.apache.hadoop.ozone.om.OmRenameKeyInfo;
+import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.exceptions.OMException;
+import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
+import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
+import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
+import org.apache.hadoop.ozone.om.response.OMClientResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeyDeleteResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeysRenameResponse;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeyRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysResponse;
+import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer;
+import org.apache.hadoop.ozone.security.acl.OzoneObj;
+import org.apache.hadoop.util.Time;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_NOT_FOUND;
+
+/**
+ * Handles rename keys request.
+ */
+public class OMKeysRenameRequest extends OMKeyRequest {
+
+  private static final Logger LOG =
+  LoggerFactory.getLogger(OMKeysRenameRequest.class);
+
+  public OMKeysRenameRequest(OMRequest omRequest) {
+super(omRequest);
+  }
+
+  /**
+   * Stores the result of request execution for Rename Requests.
+   */
+  private enum Result {
+SUCCESS,
+DELETE_FROM_KEY_ONLY,
+REPLAY,
+FAILURE,
+  }
+
+  @Override
+  public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
+
+RenameKeysRequest renameKeys = getOmRequest().getRenameKeysRequest();
+Preconditions.checkNotNull(renameKeys);
+
+List renameKeyList = new ArrayList<>();
+for (RenameKeyRequest renameKey : renameKeys.getRenameKeyRequestList()) {
+  // Set modification time.
+  KeyArgs.Builder newKeyArgs = renameKey.getKeyArgs().toBuilder()
+  .setModificationTime(Time.now());
+  renameKey.toBuilder().setKeyArgs(newKeyArgs);
+  renameKeyList.add(renameKey);
+}
+RenameKeysRequest renameKeysRequest = RenameKeysRequest
+.newBuilder().addAllRenameKeyRequest(renameKeyList).build();
+return getOmRequest().toBuilder().setRenameKeysRequest(renameKeysRequest)
+.setUserInfo(getUserInfo()).build();
+  }
+
+  @Override
+  @SuppressWarnings("methodlength")
+  public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
+  long trxnLogIndex, OzoneManagerDoubleBufferHelper omDoubleBufferHelper) {
+
+RenameKeysRequest renameKeysRequest = 
getOmRequest().getRenameKeysRequest();
+OMClientResponse omClientResponse = null;
+Set unRenamedKeys = new HashSet<>();
+List renameKeyInfoList = new ArrayList<>();
+
+OMMetrics omMetrics = ozoneManager.getMetrics();
+omMetrics.incNumKeyRenames();
+
+AuditLogger auditLogger = ozoneManager.getAuditLogger();
+

[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-03 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r449497896



##
File path: 
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
##
@@ -0,0 +1,298 @@
+/**
+ * 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.om.request.key;
+
+import com.google.common.base.Preconditions;
+import org.apache.hadoop.ozone.OzoneConsts;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
+import org.apache.hadoop.ozone.om.OmRenameKeyInfo;
+import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.exceptions.OMException;
+import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
+import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
+import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
+import org.apache.hadoop.ozone.om.response.OMClientResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeyDeleteResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeysRenameResponse;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeyRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysResponse;
+import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer;
+import org.apache.hadoop.ozone.security.acl.OzoneObj;
+import org.apache.hadoop.util.Time;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_NOT_FOUND;
+
+/**
+ * Handles rename keys request.
+ */
+public class OMKeysRenameRequest extends OMKeyRequest {
+
+  private static final Logger LOG =
+  LoggerFactory.getLogger(OMKeysRenameRequest.class);
+
+  public OMKeysRenameRequest(OMRequest omRequest) {
+super(omRequest);
+  }
+
+  /**
+   * Stores the result of request execution for Rename Requests.
+   */
+  private enum Result {
+SUCCESS,
+DELETE_FROM_KEY_ONLY,
+REPLAY,
+FAILURE,
+  }
+
+  @Override
+  public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
+
+RenameKeysRequest renameKeys = getOmRequest().getRenameKeysRequest();
+Preconditions.checkNotNull(renameKeys);
+
+List renameKeyList = new ArrayList<>();
+for (RenameKeyRequest renameKey : renameKeys.getRenameKeyRequestList()) {
+  // Set modification time.
+  KeyArgs.Builder newKeyArgs = renameKey.getKeyArgs().toBuilder()
+  .setModificationTime(Time.now());
+  renameKey.toBuilder().setKeyArgs(newKeyArgs);
+  renameKeyList.add(renameKey);
+}
+RenameKeysRequest renameKeysRequest = RenameKeysRequest
+.newBuilder().addAllRenameKeyRequest(renameKeyList).build();
+return getOmRequest().toBuilder().setRenameKeysRequest(renameKeysRequest)
+.setUserInfo(getUserInfo()).build();
+  }
+
+  @Override
+  @SuppressWarnings("methodlength")
+  public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
+  long trxnLogIndex, OzoneManagerDoubleBufferHelper omDoubleBufferHelper) {
+
+RenameKeysRequest renameKeysRequest = 
getOmRequest().getRenameKeysRequest();
+OMClientResponse omClientResponse = null;
+Set unRenamedKeys = new HashSet<>();
+List renameKeyInfoList = new ArrayList<>();
+
+OMMetrics omMetrics = ozoneManager.getMetrics();
+omMetrics.incNumKeyRenames();
+
+AuditLogger auditLogger = ozoneManager.getAuditLogger();
+

[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-02 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r449052061



##
File path: 
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
##
@@ -0,0 +1,298 @@
+/**
+ * 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.om.request.key;
+
+import com.google.common.base.Preconditions;
+import org.apache.hadoop.ozone.OzoneConsts;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
+import org.apache.hadoop.ozone.om.OmRenameKeyInfo;
+import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.exceptions.OMException;
+import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
+import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
+import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
+import org.apache.hadoop.ozone.om.response.OMClientResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeyDeleteResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeysRenameResponse;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeyRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysResponse;
+import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer;
+import org.apache.hadoop.ozone.security.acl.OzoneObj;
+import org.apache.hadoop.util.Time;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_NOT_FOUND;
+
+/**
+ * Handles rename keys request.
+ */
+public class OMKeysRenameRequest extends OMKeyRequest {
+
+  private static final Logger LOG =
+  LoggerFactory.getLogger(OMKeysRenameRequest.class);
+
+  public OMKeysRenameRequest(OMRequest omRequest) {
+super(omRequest);
+  }
+
+  /**
+   * Stores the result of request execution for Rename Requests.
+   */
+  private enum Result {
+SUCCESS,
+DELETE_FROM_KEY_ONLY,
+REPLAY,
+FAILURE,
+  }
+
+  @Override
+  public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
+
+RenameKeysRequest renameKeys = getOmRequest().getRenameKeysRequest();
+Preconditions.checkNotNull(renameKeys);
+
+List renameKeyList = new ArrayList<>();
+for (RenameKeyRequest renameKey : renameKeys.getRenameKeyRequestList()) {
+  // Set modification time.
+  KeyArgs.Builder newKeyArgs = renameKey.getKeyArgs().toBuilder()
+  .setModificationTime(Time.now());
+  renameKey.toBuilder().setKeyArgs(newKeyArgs);
+  renameKeyList.add(renameKey);
+}
+RenameKeysRequest renameKeysRequest = RenameKeysRequest
+.newBuilder().addAllRenameKeyRequest(renameKeyList).build();
+return getOmRequest().toBuilder().setRenameKeysRequest(renameKeysRequest)
+.setUserInfo(getUserInfo()).build();
+  }
+
+  @Override
+  @SuppressWarnings("methodlength")
+  public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
+  long trxnLogIndex, OzoneManagerDoubleBufferHelper omDoubleBufferHelper) {
+
+RenameKeysRequest renameKeysRequest = 
getOmRequest().getRenameKeysRequest();
+OMClientResponse omClientResponse = null;
+Set unRenamedKeys = new HashSet<>();
+List renameKeyInfoList = new ArrayList<>();
+
+OMMetrics omMetrics = ozoneManager.getMetrics();
+omMetrics.incNumKeyRenames();
+
+AuditLogger auditLogger = ozoneManager.getAuditLogger();
+

[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-02 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r448730306



##
File path: 
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
##
@@ -0,0 +1,289 @@
+/**
+ * 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.om.request.key;
+
+import com.google.common.base.Preconditions;
+import org.apache.hadoop.ozone.OzoneConsts;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
+import org.apache.hadoop.ozone.om.OmRenameKeyInfo;
+import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.exceptions.OMException;
+import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
+import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
+import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
+import org.apache.hadoop.ozone.om.response.OMClientResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeyDeleteResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeysRenameResponse;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeyRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysResponse;
+import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer;
+import org.apache.hadoop.ozone.security.acl.OzoneObj;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_NOT_FOUND;
+
+/**
+ * Handles rename keys request.
+ */
+public class OMKeysRenameRequest extends OMKeyRequest {
+
+  private static final Logger LOG =
+  LoggerFactory.getLogger(OMKeysRenameRequest.class);
+
+  public OMKeysRenameRequest(OMRequest omRequest) {
+super(omRequest);
+  }
+
+  /**
+   * Stores the result of request execution for Rename Requests.
+   */
+  private enum Result {
+SUCCESS,
+DELETE_FROM_KEY_ONLY,
+REPLAY,
+FAILURE,
+  }
+
+  @Override
+  public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
+
+RenameKeysRequest renameKeysRequest = 
getOmRequest().getRenameKeysRequest();
+Preconditions.checkNotNull(renameKeysRequest);
+
+return getOmRequest().toBuilder()
+.setRenameKeysRequest(renameKeysRequest.toBuilder())
+.setUserInfo(getUserInfo()).build();
+
+  }
+
+  @Override
+  @SuppressWarnings("methodlength")
+  public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
+  long trxnLogIndex, OzoneManagerDoubleBufferHelper omDoubleBufferHelper) {
+
+RenameKeysRequest renameKeysRequest = 
getOmRequest().getRenameKeysRequest();
+OMClientResponse omClientResponse = null;
+Set unRenamedKeys = new HashSet<>();
+List renameKeyInfoList = new ArrayList<>();
+
+OMMetrics omMetrics = ozoneManager.getMetrics();
+omMetrics.incNumKeyRenames();
+
+AuditLogger auditLogger = ozoneManager.getAuditLogger();
+
+
+OMResponse.Builder omResponse = OmResponseUtil.getOMResponseBuilder(
+getOmRequest());
+
+OMMetadataManager omMetadataManager = ozoneManager.getMetadataManager();
+IOException exception = null;
+OmKeyInfo fromKeyValue = null;
+
+Result result = null;
+Map auditMap = null;
+RenameKeyRequest renameRequest = null;
+String toKey = null;
+String fromKey = null;
+String volumeName = null;
+String bucketName = null;
+String fromKeyName = null

[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-01 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r448730306



##
File path: 
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
##
@@ -0,0 +1,289 @@
+/**
+ * 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.om.request.key;
+
+import com.google.common.base.Preconditions;
+import org.apache.hadoop.ozone.OzoneConsts;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
+import org.apache.hadoop.ozone.om.OmRenameKeyInfo;
+import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.exceptions.OMException;
+import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
+import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
+import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
+import org.apache.hadoop.ozone.om.response.OMClientResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeyDeleteResponse;
+import org.apache.hadoop.ozone.om.response.key.OMKeysRenameResponse;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeyRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysRequest;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysResponse;
+import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer;
+import org.apache.hadoop.ozone.security.acl.OzoneObj;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_NOT_FOUND;
+
+/**
+ * Handles rename keys request.
+ */
+public class OMKeysRenameRequest extends OMKeyRequest {
+
+  private static final Logger LOG =
+  LoggerFactory.getLogger(OMKeysRenameRequest.class);
+
+  public OMKeysRenameRequest(OMRequest omRequest) {
+super(omRequest);
+  }
+
+  /**
+   * Stores the result of request execution for Rename Requests.
+   */
+  private enum Result {
+SUCCESS,
+DELETE_FROM_KEY_ONLY,
+REPLAY,
+FAILURE,
+  }
+
+  @Override
+  public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
+
+RenameKeysRequest renameKeysRequest = 
getOmRequest().getRenameKeysRequest();
+Preconditions.checkNotNull(renameKeysRequest);
+
+return getOmRequest().toBuilder()
+.setRenameKeysRequest(renameKeysRequest.toBuilder())
+.setUserInfo(getUserInfo()).build();
+
+  }
+
+  @Override
+  @SuppressWarnings("methodlength")
+  public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
+  long trxnLogIndex, OzoneManagerDoubleBufferHelper omDoubleBufferHelper) {
+
+RenameKeysRequest renameKeysRequest = 
getOmRequest().getRenameKeysRequest();
+OMClientResponse omClientResponse = null;
+Set unRenamedKeys = new HashSet<>();
+List renameKeyInfoList = new ArrayList<>();
+
+OMMetrics omMetrics = ozoneManager.getMetrics();
+omMetrics.incNumKeyRenames();
+
+AuditLogger auditLogger = ozoneManager.getAuditLogger();
+
+
+OMResponse.Builder omResponse = OmResponseUtil.getOMResponseBuilder(
+getOmRequest());
+
+OMMetadataManager omMetadataManager = ozoneManager.getMetadataManager();
+IOException exception = null;
+OmKeyInfo fromKeyValue = null;
+
+Result result = null;
+Map auditMap = null;
+RenameKeyRequest renameRequest = null;
+String toKey = null;
+String fromKey = null;
+String volumeName = null;
+String bucketName = null;
+String fromKeyName = null

[GitHub] [hadoop-ozone] captainzmc commented on a change in pull request #1150: HDDS-3903. OzoneRpcClient support batch rename keys.

2020-07-01 Thread GitBox


captainzmc commented on a change in pull request #1150:
URL: https://github.com/apache/hadoop-ozone/pull/1150#discussion_r448717484



##
File path: 
hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocol/OzoneManagerProtocol.java
##
@@ -216,6 +217,13 @@ OmKeyLocationInfo allocateBlock(OmKeyArgs args, long 
clientID,
*/
   void renameKey(OmKeyArgs args, String toKeyName) throws IOException;
 
+  /**
+   * Rename existing keys within a bucket.
+   * @param keyMap The key is new key name nad value is original key OmKeyArgs.
+   * @throws IOException
+   */
+  void renameKeys(Map keyMap) throws IOException;

Review comment:
   I'll make this to Map to consistent with the 
renameKey() API.
   
   In addition, the API was added to OzoneBucket and currently only supports 
renaming keys under the same bucket. 
   `OzoneBucket bucket = volume.getBucket(bucketName);`
   `Map keyMap = new HashMap();`
   `keyMap.put(keyName1, newKeyName1);`
   `bucket.renameKeys(keyMap);`





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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



-
To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org