Kikyou1997 commented on code in PR #18801: URL: https://github.com/apache/doris/pull/18801#discussion_r1171005344
########## fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java: ########## @@ -111,42 +147,37 @@ public void createAnalysisJob(AnalyzeStmt analyzeStmt) throws DdlException { analysisTaskInfos.values().forEach(taskScheduler::schedule); } - private void persistAnalysisJob(String catalogName, String db, TableName tbl, - long jobId) throws DdlException { + private void persistAnalysisJob(AnalysisTaskInfoBuilder taskInfoBuilder) throws DdlException { try { - AnalysisTaskInfo analysisTaskInfo = new AnalysisTaskInfoBuilder().setJobId( - jobId).setTaskId(-1) - .setCatalogName(catalogName).setDbName(db) - .setTblName(tbl.getTbl()) - .setJobType(JobType.MANUAL) - .setAnalysisMethod(AnalysisMethod.FULL).setAnalysisType(AnalysisType.INDEX) - .setScheduleType(ScheduleType.ONCE).build(); + AnalysisTaskInfoBuilder jobInfoBuilder = taskInfoBuilder.deepCopy(); + AnalysisTaskInfo analysisTaskInfo = jobInfoBuilder.setTaskId(-1).build(); StatisticsRepository.persistAnalysisTask(analysisTaskInfo); } catch (Throwable t) { throw new DdlException(t.getMessage(), t); } } - private void createTaskForMVIdx(AnalyzeStmt analyzeStmt, String catalogName, String db, TableName tbl, - Map<Long, AnalysisTaskInfo> analysisTaskInfos, long jobId) throws DdlException { - if (!(analyzeStmt.isWholeTbl && analyzeStmt.getTable().getType().equals(TableType.OLAP))) { - return; + private void createTaskForMVIdx(TableIf table, AnalysisTaskInfoBuilder taskInfoBuilder, + Map<Long, AnalysisTaskInfo> analysisTaskInfos, AnalysisType analysisType) throws DdlException { + TableType type = table.getType(); + if (analysisType != AnalysisType.INDEX || !type.equals(TableType.OLAP)) { + return; // not need to collect statistics for materialized view } - OlapTable olapTable = (OlapTable) analyzeStmt.getTable(); + + taskInfoBuilder.setAnalysisType(analysisType); + OlapTable olapTable = (OlapTable) table; + try { - olapTable.readLock(); + table.readLock(); Review Comment: Thought `table` and `olapTable` natively points to same object, but it still looks quite wired to lock on `table` and release lock on `olapTable` ########## fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java: ########## @@ -111,42 +147,37 @@ public void createAnalysisJob(AnalyzeStmt analyzeStmt) throws DdlException { analysisTaskInfos.values().forEach(taskScheduler::schedule); } - private void persistAnalysisJob(String catalogName, String db, TableName tbl, - long jobId) throws DdlException { + private void persistAnalysisJob(AnalysisTaskInfoBuilder taskInfoBuilder) throws DdlException { try { - AnalysisTaskInfo analysisTaskInfo = new AnalysisTaskInfoBuilder().setJobId( - jobId).setTaskId(-1) - .setCatalogName(catalogName).setDbName(db) - .setTblName(tbl.getTbl()) - .setJobType(JobType.MANUAL) - .setAnalysisMethod(AnalysisMethod.FULL).setAnalysisType(AnalysisType.INDEX) - .setScheduleType(ScheduleType.ONCE).build(); + AnalysisTaskInfoBuilder jobInfoBuilder = taskInfoBuilder.deepCopy(); + AnalysisTaskInfo analysisTaskInfo = jobInfoBuilder.setTaskId(-1).build(); StatisticsRepository.persistAnalysisTask(analysisTaskInfo); } catch (Throwable t) { throw new DdlException(t.getMessage(), t); } } - private void createTaskForMVIdx(AnalyzeStmt analyzeStmt, String catalogName, String db, TableName tbl, - Map<Long, AnalysisTaskInfo> analysisTaskInfos, long jobId) throws DdlException { - if (!(analyzeStmt.isWholeTbl && analyzeStmt.getTable().getType().equals(TableType.OLAP))) { - return; + private void createTaskForMVIdx(TableIf table, AnalysisTaskInfoBuilder taskInfoBuilder, + Map<Long, AnalysisTaskInfo> analysisTaskInfos, AnalysisType analysisType) throws DdlException { + TableType type = table.getType(); + if (analysisType != AnalysisType.INDEX || !type.equals(TableType.OLAP)) { + return; // not need to collect statistics for materialized view } - OlapTable olapTable = (OlapTable) analyzeStmt.getTable(); + + taskInfoBuilder.setAnalysisType(analysisType); + OlapTable olapTable = (OlapTable) table; + try { - olapTable.readLock(); + table.readLock(); Review Comment: Though `table` and `olapTable` natively points to same object, but it still looks quite wired to lock on `table` and release lock on `olapTable` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org