diff --git a/dynamic_sql_collection/transcribe-replay-tool/src/main/java/org/opengauss/tool/replay/model/SingleThreadModel.java b/dynamic_sql_collection/transcribe-replay-tool/src/main/java/org/opengauss/tool/replay/model/SingleThreadModel.java index 54d33389bf5e6f46d2f73863b5fdc82b0550ebfd..4f471f170e2b2989fa25ab37438350d23528ba37 100644 --- a/dynamic_sql_collection/transcribe-replay-tool/src/main/java/org/opengauss/tool/replay/model/SingleThreadModel.java +++ b/dynamic_sql_collection/transcribe-replay-tool/src/main/java/org/opengauss/tool/replay/model/SingleThreadModel.java @@ -17,6 +17,7 @@ package org.opengauss.tool.replay.model; import org.opengauss.tool.replay.task.SingleReplayThread; +import java.util.Collection; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -158,7 +159,8 @@ public class SingleThreadModel { * clearAllThreads */ public synchronized void clearAllThreads() { - for (SingleReplayThread thread : threadMap.values()) { + Collection threads = threadMap.values(); + for (SingleReplayThread thread : threads) { if (thread.isAlive()) { thread.handleThreadData(thread); } diff --git a/dynamic_sql_collection/transcribe-replay-tool/src/main/java/org/opengauss/tool/replay/task/SingleReplayThread.java b/dynamic_sql_collection/transcribe-replay-tool/src/main/java/org/opengauss/tool/replay/task/SingleReplayThread.java index 0bc9431b025a38211b4d238f19d353f3b98025fc..cd25301aa67f6e17ce4cd24f2a581ba7cd49cdb5 100644 --- a/dynamic_sql_collection/transcribe-replay-tool/src/main/java/org/opengauss/tool/replay/task/SingleReplayThread.java +++ b/dynamic_sql_collection/transcribe-replay-tool/src/main/java/org/opengauss/tool/replay/task/SingleReplayThread.java @@ -94,8 +94,7 @@ public class SingleReplayThread extends ReplayThread { if (!singleThreadModel.isClose()) { LOGGER.info("the sql queue has been empty for {}s, thread name :{}, session:{}", POLL_TIMEOUT, this.getName(), this.sessionSet); - singleThreadModel.setClose(); - singleThreadModel.clearAllThreads(); + closeThread(sessionSet); } break; } @@ -109,17 +108,18 @@ public class SingleReplayThread extends ReplayThread { private void replay(SqlModel sqlModel) { Optional replayConnOptional = ReplayConnectionFactory.getInstance() .getConnection(replayConfig.getTargetDbConfig(), sqlModel.getSchema(), replayConfig.getSchemaMap()); - processModel.incrementReplayCount(); if (!replayConnOptional.isPresent()) { processModel.incrementFailCount(); String errorMessage = String.format("sql replay fail due to connection is null, please check sql.replay." + "database.schema.map of replay.properties, schema:%s", sqlModel.getSchema()); replayLogOperator.printFailSqlLog(sqlModel, errorMessage); + processModel.incrementReplayCount(); } else if ("quit".equals(sqlModel.getSql())) { processModel.incrementSuccessCount(); String session = sqlModel.getSession(); sessionSet.remove(session); closeThread(Collections.singleton(session)); + processModel.incrementReplayCount(); } else { while (true) { try { @@ -142,6 +142,7 @@ public class SingleReplayThread extends ReplayThread { LOCK.unlock(); } } + processModel.incrementReplayCount(); } if (processModel.isReadFinish() && !singleThreadModel.isClose() && processModel.getReplayCount() == processModel.getSqlCount()) { diff --git a/dynamic_sql_collection/transcribe-replay-tool/src/main/java/org/opengauss/tool/utils/FailSqlFileUtils.java b/dynamic_sql_collection/transcribe-replay-tool/src/main/java/org/opengauss/tool/utils/FailSqlFileUtils.java index bad966c93519708e836a3f3aac4c6419fa29b6e1..c520e1c0306473fb6008fdeb0a0aa94a4f73ccf1 100644 --- a/dynamic_sql_collection/transcribe-replay-tool/src/main/java/org/opengauss/tool/utils/FailSqlFileUtils.java +++ b/dynamic_sql_collection/transcribe-replay-tool/src/main/java/org/opengauss/tool/utils/FailSqlFileUtils.java @@ -64,7 +64,7 @@ public class FailSqlFileUtils { String jarPath = getJarPath(Starter.class); String failPath = jarPath + "/" + FAIL_SQL_NAME; failSqlFilePath = String.format(failPath, failSqlFileNumbers); - LOGGER.info("Generate a new failSql file."); + LOGGER.debug("Generate a new failSql file."); } }