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 c119557241 HDDS-7588. Intermittent failure in
TestObjectStoreWithLegacyFS#testFlatKeyStructureWithOBS (#4040)
c119557241 is described below
commit c119557241967679b1f8754e65cbe54a5d71fb6f
Author: Kaijie Chen <[email protected]>
AuthorDate: Tue Jan 3 22:59:20 2023 +0800
HDDS-7588. Intermittent failure in
TestObjectStoreWithLegacyFS#testFlatKeyStructureWithOBS (#4040)
---
.../ozone/om/TestObjectStoreWithLegacyFS.java | 52 +++++++++-------------
1 file changed, 21 insertions(+), 31 deletions(-)
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestObjectStoreWithLegacyFS.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestObjectStoreWithLegacyFS.java
index fb10a346e9..05570549a6 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestObjectStoreWithLegacyFS.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestObjectStoreWithLegacyFS.java
@@ -127,46 +127,36 @@ public class TestObjectStoreWithLegacyFS {
cluster.getOzoneManager().getMetadataManager()
.getKeyTable(BucketLayout.OBJECT_STORE);
- String seekKey = "dir";
- String dbKey = cluster.getOzoneManager().getMetadataManager()
- .getOzoneKey(volumeName, bucketName, seekKey);
-
- GenericTestUtils
- .waitFor(() -> assertKeyCount(keyTable, dbKey, 1, keyName), 500,
- 60000);
+ GenericTestUtils.waitFor(() -> isKeyExist(keyTable, keyName),
+ 500, 60000);
ozoneBucket.renameKey(keyName, "dir1/NewKey-1");
- GenericTestUtils
- .waitFor(() -> assertKeyCount(keyTable, dbKey, 1, "dir1/NewKey-1"),
500,
- 60000);
+ // RenameKey changes keyTable cache, so we need to
+ // wait for the transaction to be flushed to db
+ GenericTestUtils.waitFor(() -> !isKeyExist(keyTable, keyName),
+ 500, 60000);
+ // When the old key is removed, new key should exist
+ Assert.assertTrue(isKeyExist(keyTable, "dir1/NewKey-1"));
}
- private boolean assertKeyCount(
- Table<String, OmKeyInfo> keyTable,
- String dbKey, int expectedCnt, String keyName) {
- int countKeys = 0;
- try {
- TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>>
- itr = keyTable.iterator();
- itr.seek(dbKey);
- while (itr.hasNext()) {
-
- Table.KeyValue<String, OmKeyInfo> keyValue = itr.next();
- if (!keyValue.getKey().startsWith(dbKey)) {
- break;
+ private boolean isKeyExist(Table<String, OmKeyInfo> keyTable,
+ String keyName) {
+ String dbKey = cluster.getOzoneManager().getMetadataManager()
+ .getOzoneKey(volumeName, bucketName, keyName);
+ try (TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>>
+ iterator = keyTable.iterator()) {
+ iterator.seek(dbKey);
+ if (iterator.hasNext()) {
+ Table.KeyValue<String, OmKeyInfo> kv = iterator.next();
+ if (kv.getKey().equals(dbKey)) {
+ return true;
}
- countKeys++;
- Assert.assertTrue(keyValue.getKey().endsWith(keyName));
}
} catch (IOException ex) {
- LOG.info("Test failed with: " + ex.getMessage(), ex);
- Assert.fail("Test failed with: " + ex.getMessage());
- }
- if (countKeys != expectedCnt) {
- LOG.info("Couldn't find KeyName:{} in KeyTable, retrying...", keyName);
+ LOG.error("Error while iterating key table", ex);
}
- return countKeys == expectedCnt;
+ return false;
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]