This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git


The following commit(s) were added to refs/heads/master by this push:
     new fa27012  [Bug] Fix bug that ConcurrentModificationException thrown
fa27012 is described below

commit fa27012da2f21d7fa2f78a93e6121744d3fcec1a
Author: Mingyu Chen <[email protected]>
AuthorDate: Mon May 18 14:51:25 2020 +0800

    [Bug] Fix bug that ConcurrentModificationException thrown
    
    Fix: #3588
    When truncate the table, a ConcurrentModificationException may thrown when 
there
    are temp partitions in this table.
    
    NOTICE(#3622 ):
    This is a "revert of revert pull request".
    This pr is mainly used to synthesize the PRs whose commits were
    scattered and submitted due to the wrong merge method into a complete 
single commit.
---
 fe/src/main/java/org/apache/doris/catalog/Catalog.java        | 2 +-
 fe/src/main/java/org/apache/doris/catalog/PartitionInfo.java  | 3 +++
 fe/src/main/java/org/apache/doris/catalog/TempPartitions.java | 5 ++++-
 fe/src/main/java/org/apache/doris/cluster/Cluster.java        | 2 +-
 4 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/fe/src/main/java/org/apache/doris/catalog/Catalog.java 
b/fe/src/main/java/org/apache/doris/catalog/Catalog.java
index 75df268..19578ea 100755
--- a/fe/src/main/java/org/apache/doris/catalog/Catalog.java
+++ b/fe/src/main/java/org/apache/doris/catalog/Catalog.java
@@ -4521,7 +4521,7 @@ public class Catalog {
                     for (Partition partition : olapTable.getAllPartitions()) {
                         long partitionId = partition.getId();
                         DataProperty dataProperty = 
partitionInfo.getDataProperty(partition.getId());
-                        Preconditions.checkNotNull(dataProperty);
+                        Preconditions.checkNotNull(dataProperty, 
partition.getName() + ", pId:" + partitionId + ", db: " + dbId + ", tbl: " + 
tableId);
                         if (dataProperty.getStorageMedium() == 
TStorageMedium.SSD
                                 && dataProperty.getCooldownTimeMs() < 
currentTimeMs) {
                             // expire. change to HDD.
diff --git a/fe/src/main/java/org/apache/doris/catalog/PartitionInfo.java 
b/fe/src/main/java/org/apache/doris/catalog/PartitionInfo.java
index bde4815..1359f0c 100644
--- a/fe/src/main/java/org/apache/doris/catalog/PartitionInfo.java
+++ b/fe/src/main/java/org/apache/doris/catalog/PartitionInfo.java
@@ -76,6 +76,9 @@ public class PartitionInfo implements Writable {
     }
 
     public short getReplicationNum(long partitionId) {
+        if (!idToReplicationNum.containsKey(partitionId)) {
+            LOG.debug("failed to get replica num for partition: {}", 
partitionId);
+        }
         return idToReplicationNum.get(partitionId);
     }
 
diff --git a/fe/src/main/java/org/apache/doris/catalog/TempPartitions.java 
b/fe/src/main/java/org/apache/doris/catalog/TempPartitions.java
index a84b8d5..4a1c59d 100644
--- a/fe/src/main/java/org/apache/doris/catalog/TempPartitions.java
+++ b/fe/src/main/java/org/apache/doris/catalog/TempPartitions.java
@@ -26,6 +26,7 @@ import org.apache.doris.persist.gson.GsonUtils;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 import com.google.gson.annotations.SerializedName;
 
 import java.io.DataInput;
@@ -33,6 +34,7 @@ import java.io.DataOutput;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 // This class saved all temp partitions of a table.
 // temp partition is used to implement the overwrite load.
@@ -108,7 +110,8 @@ public class TempPartitions implements Writable, 
GsonPostProcessable {
 
     // drop all temp partitions
     public void dropAll() {
-        for (String partName : nameToPartition.keySet()) {
+        Set<String> partNames = Sets.newHashSet(nameToPartition.keySet());
+        for (String partName : partNames) {
             dropPartition(partName, true);
         }
     }
diff --git a/fe/src/main/java/org/apache/doris/cluster/Cluster.java 
b/fe/src/main/java/org/apache/doris/cluster/Cluster.java
index bc378ac..4754dc0 100644
--- a/fe/src/main/java/org/apache/doris/cluster/Cluster.java
+++ b/fe/src/main/java/org/apache/doris/cluster/Cluster.java
@@ -17,12 +17,12 @@
 
 package org.apache.doris.cluster;
 
-import com.google.common.base.Preconditions;
 import org.apache.doris.catalog.InfoSchemaDb;
 import org.apache.doris.common.io.Text;
 import org.apache.doris.common.io.Writable;
 import org.apache.doris.persist.LinkDbInfo;
 
+import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import com.google.common.collect.Lists;
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to