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 5a1aa3e [Bug][Dynamic partition] Forward show dynamic partition tables stmt to Master (#6190) 5a1aa3e is described below commit 5a1aa3ec35520814df9e6415916edf63d19b5d7b Author: Mingyu Chen <morningman....@gmail.com> AuthorDate: Sat Jul 10 10:14:04 2021 +0800 [Bug][Dynamic partition] Forward show dynamic partition tables stmt to Master (#6190) 1. Only Master FE has these info. Also catch more exception of dynamic partition scheduler. 2. Forward admin show frontend config stmt to Master if set forward_to_master=true --- .../java/org/apache/doris/analysis/AdminShowConfigStmt.java | 9 +++++++++ .../doris/analysis/RoutineLoadDataSourceProperties.java | 7 ++++++- .../org/apache/doris/analysis/ShowDynamicPartitionStmt.java | 5 +++++ .../org/apache/doris/clone/DynamicPartitionScheduler.java | 13 ++++++++----- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminShowConfigStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminShowConfigStmt.java index 069c7a6..5f38716 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminShowConfigStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminShowConfigStmt.java @@ -75,4 +75,13 @@ public class AdminShowConfigStmt extends ShowStmt { } return builder.build(); } + + @Override + public RedirectStatus getRedirectStatus() { + if (ConnectContext.get().getSessionVariable().getForwardToMaster()) { + return RedirectStatus.FORWARD_NO_SYNC; + } else { + return RedirectStatus.NO_FORWARD; + } + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/RoutineLoadDataSourceProperties.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/RoutineLoadDataSourceProperties.java index ca6f800..1a10d66 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RoutineLoadDataSourceProperties.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RoutineLoadDataSourceProperties.java @@ -88,7 +88,12 @@ public class RoutineLoadDataSourceProperties { public void analyze() throws UserException { if (properties.isEmpty()) { - throw new AnalysisException("No properties"); + if (!isAlter) { + throw new AnalysisException("No data source properties"); + } else { + // for alter routine load stmt, the datasource property can by null + return; + } } Preconditions.checkState(!Strings.isNullOrEmpty(timezone), "timezone must be set before analyzing"); checkDataSourceProperties(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowDynamicPartitionStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowDynamicPartitionStmt.java index 529da1d..cecf94c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowDynamicPartitionStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowDynamicPartitionStmt.java @@ -89,4 +89,9 @@ public class ShowDynamicPartitionStmt extends ShowStmt { public ShowResultSetMetaData getMetaData() { return SHOW_DYNAMIC_PARTITION_META_DATA; } + + @Override + public RedirectStatus getRedirectStatus() { + return RedirectStatus.FORWARD_NO_SYNC; + } } \ No newline at end of file diff --git a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java index a860c1f..9d10469 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java @@ -46,12 +46,15 @@ import org.apache.doris.common.util.PropertyAnalyzer; import org.apache.doris.common.util.RangeUtils; import org.apache.doris.common.util.TimeUtils; import org.apache.doris.thrift.TStorageMedium; + import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Range; import com.google.common.collect.Sets; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; + import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Collection; @@ -181,9 +184,10 @@ public class DynamicPartitionScheduler extends MasterDaemon { // only support single column partition now try { RangeUtils.checkRangeIntersect(partitionItem.getItems(), addPartitionKeyRange); - } catch (DdlException e) { + } catch (Exception e) { isPartitionExists = true; if (addPartitionKeyRange.equals(partitionItem.getItems())) { + LOG.info("partition range {} exist in table {}, clear fail msg", addPartitionKeyRange, olapTable.getName()); clearCreatePartitionFailedMsg(olapTable.getId()); } else { recordCreatePartitionFailedMsg(db.getFullName(), olapTable.getName(), e.getMessage(), olapTable.getId()); @@ -209,7 +213,6 @@ public class DynamicPartitionScheduler extends MasterDaemon { setStorageMediumProperty(partitionProperties, dynamicPartitionProperty, now, hotPartitionNum, idx); } - String partitionName = dynamicPartitionProperty.getPrefix() + DynamicPartitionUtil.getFormattedPartitionName( dynamicPartitionProperty.getTimeZone(), prevBorder, dynamicPartitionProperty.getTimeUnit()); SinglePartitionDesc rangePartitionDesc = new SinglePartitionDesc(true, partitionName, @@ -341,7 +344,7 @@ public class DynamicPartitionScheduler extends MasterDaemon { String partitionFormat; try { partitionFormat = DynamicPartitionUtil.getPartitionFormat(partitionColumn); - } catch (DdlException e) { + } catch (Exception e) { recordCreatePartitionFailedMsg(db.getFullName(), olapTable.getName(), e.getMessage(), olapTable.getId()); continue; } @@ -360,7 +363,7 @@ public class DynamicPartitionScheduler extends MasterDaemon { try { Catalog.getCurrentCatalog().dropPartition(db, olapTable, dropPartitionClause); clearDropPartitionFailedMsg(olapTable.getId()); - } catch (DdlException e) { + } catch (Exception e) { recordDropPartitionFailedMsg(db.getFullName(), tableName, e.getMessage(), olapTable.getId()); } finally { olapTable.writeUnlock(); @@ -372,7 +375,7 @@ public class DynamicPartitionScheduler extends MasterDaemon { try { Catalog.getCurrentCatalog().addPartition(db, tableName, addPartitionClause); clearCreatePartitionFailedMsg(olapTable.getId()); - } catch (DdlException e) { + } catch (Exception e) { recordCreatePartitionFailedMsg(db.getFullName(), tableName, e.getMessage(), olapTable.getId()); } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org