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 2022/07/25 13:47:11 UTC
[ozone] branch master updated: HDDS-7041. Avoid ConcurrentModificationException in RepeatedOmKeyInfo (#3617)
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 11cdb25fec HDDS-7041. Avoid ConcurrentModificationException in RepeatedOmKeyInfo (#3617)
11cdb25fec is described below
commit 11cdb25fecb62519462901de7f46bac5b10af701
Author: Symious <yi...@foxmail.com>
AuthorDate: Mon Jul 25 21:47:03 2022 +0800
HDDS-7041. Avoid ConcurrentModificationException in RepeatedOmKeyInfo (#3617)
---
.../java/org/apache/hadoop/ozone/om/helpers/RepeatedOmKeyInfo.java | 7 ++++++-
.../java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java | 2 +-
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/RepeatedOmKeyInfo.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/RepeatedOmKeyInfo.java
index ac58d609a9..feb12f884a 100644
--- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/RepeatedOmKeyInfo.java
+++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/RepeatedOmKeyInfo.java
@@ -52,6 +52,11 @@ public class RepeatedOmKeyInfo {
return omKeyInfoList;
}
+ // HDDS-7041. Return a new ArrayList to avoid ConcurrentModifyException
+ public List<OmKeyInfo> cloneOmKeyInfoList() {
+ return new ArrayList<>(omKeyInfoList);
+ }
+
public static RepeatedOmKeyInfo getFromProto(RepeatedKeyInfo
repeatedKeyInfo) throws IOException {
List<OmKeyInfo> list = new ArrayList<>();
@@ -68,7 +73,7 @@ public class RepeatedOmKeyInfo {
*/
public RepeatedKeyInfo getProto(boolean compact, int clientVersion) {
List<KeyInfo> list = new ArrayList<>();
- for (OmKeyInfo k : omKeyInfoList) {
+ for (OmKeyInfo k : cloneOmKeyInfoList()) {
list.add(k.getProtobuf(compact, clientVersion));
}
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 8e9ddd7c01..1db265ed58 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
@@ -1233,7 +1233,7 @@ public class OmMetadataManagerImpl implements OMMetadataManager {
KeyValue<String, RepeatedOmKeyInfo> kv = keyIter.next();
if (kv != null) {
RepeatedOmKeyInfo infoList = kv.getValue();
- for (OmKeyInfo info : infoList.getOmKeyInfoList()) {
+ for (OmKeyInfo info : infoList.cloneOmKeyInfoList()) {
// Add all blocks from all versions of the key to the deletion list
for (OmKeyLocationInfoGroup keyLocations :
info.getKeyLocationVersions()) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org