This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch branch-3.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push: new b251837f632 branch-3.0: [opt](cloud) load data no call partition.getVisibleVersion in cloud mode #51111 (#51150) b251837f632 is described below commit b251837f632d51f1fbc4718a23f78566ee0406e3 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> AuthorDate: Sat May 24 10:50:38 2025 +0800 branch-3.0: [opt](cloud) load data no call partition.getVisibleVersion in cloud mode #51111 (#51150) Cherry-picked from #51111 Co-authored-by: yujun <yu...@selectdb.com> --- .../org/apache/doris/planner/OlapTableSink.java | 44 +++++++++++----------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java index 31c15d8a2c1..0f4f1f9f17d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java @@ -46,6 +46,7 @@ import org.apache.doris.catalog.Replica; import org.apache.doris.catalog.Tablet; import org.apache.doris.cloud.qe.ComputeGroupException; import org.apache.doris.common.AnalysisException; +import org.apache.doris.common.Config; import org.apache.doris.common.DdlException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -55,7 +56,6 @@ import org.apache.doris.common.UserException; import org.apache.doris.common.util.DebugPointUtil; import org.apache.doris.common.util.DebugPointUtil.DebugPoint; import org.apache.doris.qe.ConnectContext; -import org.apache.doris.rpc.RpcException; import org.apache.doris.system.Backend; import org.apache.doris.system.SystemInfoService; import org.apache.doris.thrift.TColumn; @@ -649,31 +649,30 @@ public class OlapTableSink extends DataSink { TOlapTableLocationParam slaveLocationParam = new TOlapTableLocationParam(); // BE id -> path hash Multimap<Long, Long> allBePathsMap = HashMultimap.create(); - List<Partition> partitions = partitionIds.stream().map(partitionId -> table.getPartition(partitionId)) - .collect(Collectors.toList()); - List<Long> visibleVersions = null; - try { - visibleVersions = Partition.getVisibleVersions(partitions); - } catch (RpcException e) { - throw new UserException("OlapTableSink get partition visible version failed", e); - } - for (int i = 0; i < partitions.size(); i++) { - Partition partition = partitions.get(i); - long visibleVersion = visibleVersions.get(i); + for (long partitionId : partitionIds) { + Partition partition = table.getPartition(partitionId); int loadRequiredReplicaNum = table.getLoadRequiredReplicaNum(partition.getId()); for (MaterializedIndex index : partition.getMaterializedIndices(IndexExtState.ALL)) { // we should ensure the replica backend is alive // otherwise, there will be a 'unknown node id, id=xxx' error for stream load for (Tablet tablet : index.getTablets()) { - String errMsg = ""; + StringBuilder errMsgBuilder = new StringBuilder(); Multimap<Long, Long> bePathsMap = HashMultimap.create(); try { bePathsMap = tablet.getNormalReplicaBackendPathMap(); if (bePathsMap.keySet().size() < loadRequiredReplicaNum) { - errMsg = "tablet " + tablet.getId() + " alive replica num " + bePathsMap.keySet().size() - + " < load required replica num " + loadRequiredReplicaNum - + ", alive backends: [" + StringUtils.join(bePathsMap.keySet(), ",") + "]" - + ", detail: " + tablet.getDetailsStatusForQuery(visibleVersion); + errMsgBuilder.append("tablet ").append(tablet.getId()) + .append(" alive replica num ").append(bePathsMap.keySet().size()) + .append(" < load required replica num ").append(loadRequiredReplicaNum) + .append(", alive backends: [") + .append(StringUtils.join(bePathsMap.keySet(), ",")) + .append("]"); + if (!Config.isCloudMode()) { + // in cloud mode, partition get visible version is a rpc, + // and each cluster has only one replica, no need to detail the replicas in cloud mode. + errMsgBuilder.append(", detail: ") + .append(tablet.getDetailsStatusForQuery(partition.getVisibleVersion())); + } long now = System.currentTimeMillis(); long lastLoadFailedTime = tablet.getLastLoadFailedTime(); tablet.setLastLoadFailedTime(now); @@ -681,15 +680,16 @@ public class OlapTableSink extends DataSink { Env.getCurrentEnv().getTabletScheduler().tryAddRepairTablet( tablet, dbId, table, partition, index, 0); } - throw new UserException(InternalErrorCode.REPLICA_FEW_ERR, errMsg); + throw new UserException(InternalErrorCode.REPLICA_FEW_ERR, errMsgBuilder.toString()); } } catch (ComputeGroupException e) { LOG.warn("failed to get replica backend path for tablet " + tablet.getId(), e); - errMsg += e.toString(); - throw new UserException(InternalErrorCode.INTERNAL_ERR, errMsg); + errMsgBuilder.append(", ").append(e.toString()); + throw new UserException(InternalErrorCode.INTERNAL_ERR, errMsgBuilder.toString()); + } + if (!Config.isCloudMode()) { + debugWriteRandomChooseSink(tablet, partition.getVisibleVersion(), bePathsMap); } - - debugWriteRandomChooseSink(tablet, visibleVersion, bePathsMap); if (bePathsMap.keySet().isEmpty()) { throw new UserException(InternalErrorCode.REPLICA_FEW_ERR, "tablet " + tablet.getId() + " no available replica"); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org