Skip to content

Commit 0a60f24

Browse files
committed
Fix issues related to review comments
1 parent 2aa5755 commit 0a60f24

10 files changed

Lines changed: 244 additions & 102 deletions

File tree

integration-test/src/test/java/org/apache/iotdb/confignode/it/partition/DataPartitionTableIntegrityCheckProcedureIT.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
package org.apache.iotdb.confignode.it.partition;
2121

22+
import org.apache.iotdb.commons.enums.RepairDataPartitionTableProgressState;
2223
import org.apache.iotdb.it.env.EnvFactory;
2324
import org.apache.iotdb.it.framework.IoTDBTestRunner;
2425
import org.apache.iotdb.itbase.category.ClusterIT;
@@ -34,6 +35,7 @@
3435
import org.slf4j.LoggerFactory;
3536

3637
import java.sql.Connection;
38+
import java.sql.ResultSet;
3739
import java.sql.SQLException;
3840
import java.sql.Statement;
3941
import java.util.ArrayList;
@@ -128,4 +130,38 @@ public void testConcurrentSubmitDataPartitionTableIntegrityCheckProcedure()
128130
Assert.assertEquals(
129131
"The other concurrent submissions should be rejected", threadCount - 1, failCount.get());
130132
}
133+
134+
@Test
135+
public void testShowRepairDataPartitionTableProgress() throws Exception {
136+
try (final Connection connection = EnvFactory.getEnv().getConnection();
137+
final Statement statement = connection.createStatement()) {
138+
assertRepairProgress(statement, RepairDataPartitionTableProgressState.IDLE.name(), 0.0, 0.0);
139+
140+
statement.execute("REPAIR DATA PARTITION TABLE");
141+
assertRepairProgress(statement, null, 0.0, 100.0);
142+
}
143+
}
144+
145+
private static void assertRepairProgress(
146+
final Statement statement,
147+
final String expectedStatus,
148+
final double minProgress,
149+
final double maxProgress)
150+
throws SQLException {
151+
try (final ResultSet resultSet =
152+
statement.executeQuery("SHOW REPAIR DATA PARTITION TABLE PROGRESS")) {
153+
Assert.assertTrue(resultSet.next());
154+
if (expectedStatus != null) {
155+
Assert.assertEquals(expectedStatus, resultSet.getString("Status"));
156+
} else {
157+
Assert.assertNotEquals(
158+
RepairDataPartitionTableProgressState.UNKNOWN.name(), resultSet.getString("Status"));
159+
}
160+
final double progress = resultSet.getDouble("Progress(%)");
161+
Assert.assertTrue(progress >= minProgress);
162+
Assert.assertTrue(progress <= maxProgress);
163+
Assert.assertNotNull(resultSet.getString("Message"));
164+
Assert.assertFalse(resultSet.next());
165+
}
166+
}
131167
}

iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ keyWords
189189
| PRIVILEGES
190190
| PRIVILEGE_VALUE
191191
| PROCESSLIST
192+
| PROGRESS
192193
| PROCESSOR
193194
| PROPERTY
194195
| PRUNE
@@ -298,4 +299,4 @@ keyWords
298299
| OPTION
299300
| INF
300301
| CURRENT_TIMESTAMP
301-
;
302+
;

iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.apache.iotdb.commons.conf.ConfigurationFileUtils;
4848
import org.apache.iotdb.commons.conf.IoTDBConstant;
4949
import org.apache.iotdb.commons.conf.TrimProperties;
50+
import org.apache.iotdb.commons.enums.RepairDataPartitionTableProgressState;
5051
import org.apache.iotdb.commons.exception.IllegalPathException;
5152
import org.apache.iotdb.commons.exception.MetadataException;
5253
import org.apache.iotdb.commons.path.MeasurementPath;
@@ -1185,7 +1186,8 @@ public TSStatus dataPartitionTableIntegrityCheck() {
11851186
public TShowRepairDataPartitionTableProgressResp showRepairDataPartitionTableProgress() {
11861187
TSStatus status = confirmLeader();
11871188
if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
1188-
return new TShowRepairDataPartitionTableProgressResp(status, "UNKNOWN", 0.0)
1189+
return new TShowRepairDataPartitionTableProgressResp(
1190+
status, RepairDataPartitionTableProgressState.UNKNOWN.name(), 0.0)
11891191
.setMessage(status.getMessage());
11901192
}
11911193

iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.apache.iotdb.commons.concurrent.threadpool.ScheduledExecutorUtil;
3333
import org.apache.iotdb.commons.conf.CommonConfig;
3434
import org.apache.iotdb.commons.conf.CommonDescriptor;
35+
import org.apache.iotdb.commons.enums.RepairDataPartitionTableProgressState;
3536
import org.apache.iotdb.commons.partition.DataPartitionTable;
3637
import org.apache.iotdb.commons.partition.SchemaPartitionTable;
3738
import org.apache.iotdb.commons.partition.executor.SeriesPartitionExecutor;
@@ -548,11 +549,13 @@ public TShowRepairDataPartitionTableProgressResp showRepairDataPartitionTablePro
548549
return configManager
549550
.getProcedureManager()
550551
.getUnfinishedDataPartitionTableIntegrityCheckProcedure()
551-
.map(procedure -> procedure.getProgress(configManager.getProcedureManager().getEnv()))
552+
.map(DataPartitionTableIntegrityCheckProcedure::getProgress)
552553
.orElseGet(
553554
() ->
554555
new TShowRepairDataPartitionTableProgressResp(
555-
RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS), "IDLE", 100.0)
556+
RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS),
557+
RepairDataPartitionTableProgressState.IDLE.name(),
558+
0.0)
556559
.setMessage("No running DataPartitionTable integrity check procedure"));
557560
}
558561

0 commit comments

Comments
 (0)