You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by ad...@apache.org on 2023/04/19 12:20:32 UTC
[ozone] branch master updated: HDDS-8440. Ozone Manager crashed with ClassCastException when deleting FSO bucket. (#4582)
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 f62476139c HDDS-8440. Ozone Manager crashed with ClassCastException when deleting FSO bucket. (#4582)
f62476139c is described below
commit f62476139ccc44d246d98521355bd85e8fe523e2
Author: ashishkumar50 <11...@users.noreply.github.com>
AuthorDate: Wed Apr 19 17:50:26 2023 +0530
HDDS-8440. Ozone Manager crashed with ClassCastException when deleting FSO bucket. (#4582)
Co-authored-by: Doroszlai, Attila <ad...@apache.org>
---
.../hadoop/ozone/om/OmMetadataManagerImpl.java | 33 +++++++++++-----------
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java
index 2fea3c8312..8e748db3ef 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java
@@ -258,15 +258,15 @@ public class OmMetadataManagerImpl implements OMMetadataManager,
private Table userTable;
private Table volumeTable;
private Table bucketTable;
- private Table keyTable;
+ private Table<String, OmKeyInfo> keyTable;
private Table deletedTable;
private Table openKeyTable;
private Table<String, OmMultipartKeyInfo> multipartInfoTable;
private Table<String, S3SecretValue> s3SecretTable;
private Table dTokenTable;
private Table prefixTable;
- private Table dirTable;
- private Table fileTable;
+ private Table<String, OmDirectoryInfo> dirTable;
+ private Table<String, OmKeyInfo> fileTable;
private Table openFileTable;
private Table transactionInfoTable;
private Table metaTable;
@@ -968,7 +968,6 @@ public class OmMetadataManagerImpl implements OMMetadataManager,
return true;
}
-
/**
* Checks if a key starting with a given keyPrefix exists in the table cache.
*
@@ -976,22 +975,24 @@ public class OmMetadataManagerImpl implements OMMetadataManager,
* @param table - table to be searched.
* @return true if the key is present in the cache.
*/
- private boolean isKeyPresentInTableCache(String keyPrefix,
- Table table) {
- Iterator<Map.Entry<CacheKey<String>, CacheValue<OmKeyInfo>>> iterator =
+ private <T> boolean isKeyPresentInTableCache(String keyPrefix,
+ Table<String, T> table) {
+ Iterator<Map.Entry<CacheKey<String>, CacheValue<T>>> iterator =
table.cacheIterator();
while (iterator.hasNext()) {
- Map.Entry<CacheKey<String>, CacheValue<OmKeyInfo>> entry =
+ Map.Entry<CacheKey<String>, CacheValue<T>> entry =
iterator.next();
String key = entry.getKey().getCacheKey();
- OmKeyInfo omKeyInfo = entry.getValue().getCacheValue();
+ Object value = entry.getValue().getCacheValue();
+
// Making sure that entry is not for delete key request.
- if (key.startsWith(keyPrefix) && omKeyInfo != null) {
+ if (key.startsWith(keyPrefix) && value != null) {
return true;
}
}
return false;
}
+
/**
* Checks if a key starts with the given prefix is present in the table.
*
@@ -1000,20 +1001,20 @@ public class OmMetadataManagerImpl implements OMMetadataManager,
* @return true if the key is present in the table
* @throws IOException
*/
- private boolean isKeyPresentInTable(String keyPrefix,
- Table<String, OmKeyInfo> table)
+ private <T> boolean isKeyPresentInTable(String keyPrefix,
+ Table<String, T> table)
throws IOException {
- try (TableIterator<String, ? extends KeyValue<String, OmKeyInfo>>
+ try (TableIterator<String, ? extends KeyValue<String, T>>
keyIter = table.iterator()) {
- KeyValue<String, OmKeyInfo> kv = keyIter.seek(keyPrefix);
+ KeyValue<String, T> kv = keyIter.seek(keyPrefix);
// Iterate through all the entries in the table which start with
// the current bucket's prefix.
while (kv != null && kv.getKey().startsWith(keyPrefix)) {
// Check the entry in db is not marked for delete. This can happen
// while entry is marked for delete, but it is not flushed to DB.
- CacheValue<OmKeyInfo> cacheValue =
- table.getCacheValue(new CacheKey(kv.getKey()));
+ CacheValue<T> cacheValue =
+ table.getCacheValue(new CacheKey<>(kv.getKey()));
// Case 1: We found an entry, but no cache entry.
if (cacheValue == null) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org