You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/05/30 07:21:22 UTC
[shardingsphere] branch master updated: Fix scaling get progress
error (#10548)
This is an automated email from the ASF dual-hosted git repository.
panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new b0c25df Fix scaling get progress error (#10548)
b0c25df is described below
commit b0c25dff90f76a0c9c74e5606470e8a6aa4b71bb
Author: avalon5666 <64...@users.noreply.github.com>
AuthorDate: Sun May 30 15:20:46 2021 +0800
Fix scaling get progress error (#10548)
---
.../job/preparer/splitter/InventoryTaskSplitter.java | 4 ++++
.../preparer/splitter/InventoryTaskSplitterTest.java | 20 ++++++++++++++++++++
2 files changed, 24 insertions(+)
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/splitter/InventoryTaskSplitter.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/splitter/InventoryTaskSplitter.java
index e5d2df6..87561b1 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/splitter/InventoryTaskSplitter.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/splitter/InventoryTaskSplitter.java
@@ -165,6 +165,10 @@ public final class InventoryTaskSplitter {
beginId = endId + 1;
}
}
+ // fix empty table missing inventory task
+ if (0 == result.size()) {
+ result.add(new PrimaryKeyPosition(0, 0));
+ }
} catch (final SQLException ex) {
throw new PrepareFailedException(String.format("Split task for table %s by primary key %s error", dumperConfig.getTableName(), dumperConfig.getPrimaryKey()), ex);
}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/preparer/splitter/InventoryTaskSplitterTest.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/preparer/splitter/InventoryTaskSplitterTest.java
index 518e7b7..52586ab 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/preparer/splitter/InventoryTaskSplitterTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/preparer/splitter/InventoryTaskSplitterTest.java
@@ -56,6 +56,17 @@ public final class InventoryTaskSplitterTest {
}
@Test
+ public void assertSplitInventoryDataWithEmptyTable() throws SQLException {
+ taskConfig.getHandleConfig().setShardingSize(10);
+ initEmptyTablePrimaryEnvironment(taskConfig.getDumperConfig());
+ List<InventoryTask> actual = inventoryTaskSplitter.splitInventoryData(jobContext, taskConfig, dataSourceManager);
+ assertNotNull(actual);
+ assertThat(actual.size(), is(1));
+ assertThat(((PrimaryKeyPosition) actual.get(0).getProgress().getPosition()).getBeginValue(), is(0L));
+ assertThat(((PrimaryKeyPosition) actual.get(0).getProgress().getPosition()).getEndValue(), is(0L));
+ }
+
+ @Test
public void assertSplitInventoryDataWithIntPrimary() throws SQLException {
taskConfig.getHandleConfig().setShardingSize(10);
initIntPrimaryEnvironment(taskConfig.getDumperConfig());
@@ -95,6 +106,15 @@ public final class InventoryTaskSplitterTest {
dataSourceManager.close();
}
+ private void initEmptyTablePrimaryEnvironment(final DumperConfiguration dumperConfig) throws SQLException {
+ DataSource dataSource = dataSourceManager.getDataSource(dumperConfig.getDataSourceConfig());
+ try (Connection connection = dataSource.getConnection();
+ Statement statement = connection.createStatement()) {
+ statement.execute("DROP TABLE IF EXISTS t_order");
+ statement.execute("CREATE TABLE t_order (id INT PRIMARY KEY, user_id VARCHAR(12))");
+ }
+ }
+
private void initIntPrimaryEnvironment(final DumperConfiguration dumperConfig) throws SQLException {
DataSource dataSource = dataSourceManager.getDataSource(dumperConfig.getDataSourceConfig());
try (Connection connection = dataSource.getConnection();