This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch HDDS-10656-atomic-key-overwrite
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to
refs/heads/HDDS-10656-atomic-key-overwrite by this push:
new 99be3179a4 HDDS-10946. Test combinations of rename and rewrite (#6823)
99be3179a4 is described below
commit 99be3179a4e891a2e8b3fbb66857e9d3ba931202
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Fri Jun 21 07:27:33 2024 +0200
HDDS-10946. Test combinations of rename and rewrite (#6823)
---
.../client/rpc/TestOzoneRpcClientAbstract.java | 49 ++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java
index 94ce66dbf9..f53fad3bdc 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java
@@ -1133,6 +1133,43 @@ public abstract class TestOzoneRpcClientAbstract extends
OzoneTestBase {
assertEquals(overwriteDetails.getGeneration(),
actualKeyDetails.getGeneration());
}
+ @ParameterizedTest
+ @EnumSource
+ void rewriteAfterRename(BucketLayout layout) throws IOException {
+ OzoneBucket bucket = createBucket(layout);
+ OzoneKeyDetails keyDetails = createTestKey(bucket);
+ String newKeyName = "rewriteAfterRename-" + layout;
+
+ bucket.renameKey(keyDetails.getName(), newKeyName);
+ OzoneKeyDetails renamedKeyDetails = bucket.getKey(newKeyName);
+ OmKeyArgs keyArgs = toOmKeyArgs(renamedKeyDetails);
+ OmKeyInfo keyInfo = ozoneManager.lookupKey(keyArgs);
+
+ final byte[] rewriteContent = "rewrite".getBytes(UTF_8);
+ rewriteKey(bucket, renamedKeyDetails, rewriteContent);
+
+ OzoneKeyDetails actualKeyDetails = assertKeyContent(bucket, newKeyName,
rewriteContent);
+ assertMetadataUnchanged(keyDetails, actualKeyDetails);
+ assertMetadataAfterRewrite(keyInfo, ozoneManager.lookupKey(keyArgs));
+ }
+
+ @ParameterizedTest
+ @EnumSource
+ void renameAfterRewrite(BucketLayout layout) throws IOException {
+ OzoneBucket bucket = createBucket(layout);
+ OzoneKeyDetails keyDetails = createTestKey(bucket);
+ final byte[] rewriteContent = "rewrite".getBytes(UTF_8);
+ rewriteKey(bucket, keyDetails, rewriteContent);
+ OmKeyInfo keyInfo = ozoneManager.lookupKey(toOmKeyArgs(keyDetails));
+
+ String newKeyName = "renameAfterRewrite-" + layout;
+ bucket.renameKey(keyDetails.getName(), newKeyName);
+
+ OzoneKeyDetails actualKeyDetails = assertKeyContent(bucket, newKeyName,
rewriteContent);
+ assertMetadataUnchanged(keyDetails, actualKeyDetails);
+ assertMetadataAfterRewrite(keyInfo,
ozoneManager.lookupKey(toOmKeyArgs(actualKeyDetails)));
+ }
+
@ParameterizedTest
@EnumSource
void rewriteFailsDueToOutdatedGeneration(BucketLayout layout) throws
IOException {
@@ -1202,6 +1239,18 @@ public abstract class TestOzoneRpcClientAbstract extends
OzoneTestBase {
assertThat(e).hasMessageContaining("not found");
}
+ @ParameterizedTest
+ @EnumSource
+ void cannotRewriteRenamedKey(BucketLayout layout) throws IOException {
+ OzoneBucket bucket = createBucket(layout);
+ OzoneKeyDetails keyDetails = createTestKey(bucket);
+ bucket.renameKey(keyDetails.getName(), "newKeyName-" + layout.name());
+
+ OMException e = assertThrows(OMException.class, () -> rewriteKey(bucket,
keyDetails, "rewrite".getBytes(UTF_8)));
+ assertEquals(KEY_NOT_FOUND, e.getResult());
+ assertThat(e).hasMessageContaining("not found");
+ }
+
private static void rewriteKey(
OzoneBucket bucket, OzoneKeyDetails keyDetails, byte[] newContent
) throws IOException {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]