You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2023/04/27 11:26:01 UTC
[shardingsphere] branch master updated: Refactor BinlogPosition as immutable class (#25369)
This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 4f44adfd028 Refactor BinlogPosition as immutable class (#25369)
4f44adfd028 is described below
commit 4f44adfd028fa083b34efcf298fe95b919a5e92b
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Apr 27 19:25:47 2023 +0800
Refactor BinlogPosition as immutable class (#25369)
* Remove useless CircuitBreakerDataSource.close()
* Refactor ClassicTransferTestCase
* Refactor BinlogPosition as immutable class
---
.../mysql/ingest/MySQLPositionInitializer.java | 20 ++++++++++----------
.../pipeline/mysql/ingest/binlog/BinlogPosition.java | 8 ++------
.../mysql/ingest/MySQLIncrementalDumperTest.java | 2 +-
.../mysql/ingest/binlog/BinlogPositionTest.java | 18 +++++++++---------
4 files changed, 22 insertions(+), 26 deletions(-)
diff --git a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLPositionInitializer.java b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLPositionInitializer.java
index 8411be2acdb..50dd4a2b688 100644
--- a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLPositionInitializer.java
+++ b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLPositionInitializer.java
@@ -35,35 +35,35 @@ public final class MySQLPositionInitializer implements PositionInitializer {
@Override
public BinlogPosition init(final DataSource dataSource, final String slotNameSuffix) throws SQLException {
try (Connection connection = dataSource.getConnection()) {
- BinlogPosition result = getBinlogPosition(connection);
- result.setServerId(getServerId(connection));
- return result;
+ return getBinlogPosition(connection);
}
}
@Override
public BinlogPosition init(final String data) {
String[] array = data.split("#");
- Preconditions.checkArgument(array.length == 2, "Unknown binlog position: " + data);
- return new BinlogPosition(array[0], Long.parseLong(array[1]));
+ Preconditions.checkArgument(2 == array.length, "Unknown binlog position: %s", data);
+ return new BinlogPosition(array[0], Long.parseLong(array[1]), 0L);
}
private BinlogPosition getBinlogPosition(final Connection connection) throws SQLException {
+ String filename;
+ long position;
+ long serverId;
try (
PreparedStatement preparedStatement = connection.prepareStatement("SHOW MASTER STATUS");
ResultSet resultSet = preparedStatement.executeQuery()) {
resultSet.next();
- return new BinlogPosition(resultSet.getString(1), resultSet.getLong(2));
+ filename = resultSet.getString(1);
+ position = resultSet.getLong(2);
}
- }
-
- private long getServerId(final Connection connection) throws SQLException {
try (
PreparedStatement preparedStatement = connection.prepareStatement("SHOW VARIABLES LIKE 'server_id'");
ResultSet resultSet = preparedStatement.executeQuery()) {
resultSet.next();
- return resultSet.getLong(2);
+ serverId = resultSet.getLong(2);
}
+ return new BinlogPosition(filename, position, serverId);
}
@Override
diff --git a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/binlog/BinlogPosition.java b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/binlog/BinlogPosition.java
index 4735eb4a017..f354f47140e 100644
--- a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/binlog/BinlogPosition.java
+++ b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/binlog/BinlogPosition.java
@@ -17,26 +17,22 @@
package org.apache.shardingsphere.data.pipeline.mysql.ingest.binlog;
-import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import lombok.Setter;
import org.apache.shardingsphere.data.pipeline.api.ingest.position.IngestPosition;
/**
- * Binlog Position.
+ * Binlog position.
*/
@RequiredArgsConstructor
-@AllArgsConstructor
@Getter
-@Setter
public final class BinlogPosition implements IngestPosition<BinlogPosition> {
private final String filename;
private final long position;
- private long serverId;
+ private final long serverId;
@Override
public int compareTo(final BinlogPosition position) {
diff --git a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLIncrementalDumperTest.java b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLIncrementalDumperTest.java
index f6653c39c09..3e07cc9e5b5 100644
--- a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLIncrementalDumperTest.java
+++ b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLIncrementalDumperTest.java
@@ -92,7 +92,7 @@ class MySQLIncrementalDumperTest {
dumperConfig.setDataSourceConfig(new StandardPipelineDataSourceConfiguration("jdbc:mysql://127.0.0.1:3306/ds_0", "root", "root"));
channel = new MultiplexMemoryPipelineChannel(1, 10000, new EmptyAckCallback());
PipelineTableMetaDataLoader metaDataLoader = new StandardPipelineTableMetaDataLoader(dataSourceManager.getDataSource(dumperConfig.getDataSourceConfig()));
- incrementalDumper = new MySQLIncrementalDumper(dumperConfig, new BinlogPosition("binlog-000001", 4L), channel, metaDataLoader);
+ incrementalDumper = new MySQLIncrementalDumper(dumperConfig, new BinlogPosition("binlog-000001", 4L, 0L), channel, metaDataLoader);
pipelineTableMetaData = new PipelineTableMetaData("t_order", mockOrderColumnsMetaDataMap(), Collections.emptyList());
}
diff --git a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/binlog/BinlogPositionTest.java b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/binlog/BinlogPositionTest.java
index 36d27db6f92..86de21e87e7 100644
--- a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/binlog/BinlogPositionTest.java
+++ b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/binlog/BinlogPositionTest.java
@@ -27,20 +27,20 @@ class BinlogPositionTest {
@Test
void assertCompareTo() {
int position = 10;
- BinlogPosition binlogPosition = new BinlogPosition("mysql-bin.000002", position);
- assertThat(binlogPosition.compareTo(new BinlogPosition("mysql-bin.000002", position)), is(0));
- assertThat(binlogPosition.compareTo(new BinlogPosition("mysql-bin.000001", position)), is(1));
- assertThat(binlogPosition.compareTo(new BinlogPosition("mysql-bin.000003", position)), is(-1));
+ BinlogPosition binlogPosition = new BinlogPosition("mysql-bin.000002", position, 0L);
+ assertThat(binlogPosition.compareTo(new BinlogPosition("mysql-bin.000002", position, 0L)), is(0));
+ assertThat(binlogPosition.compareTo(new BinlogPosition("mysql-bin.000001", position, 0L)), is(1));
+ assertThat(binlogPosition.compareTo(new BinlogPosition("mysql-bin.000003", position, 0L)), is(-1));
String fileName = "mysql-bin.000001";
- binlogPosition = new BinlogPosition(fileName, 10);
- assertThat(binlogPosition.compareTo(new BinlogPosition(fileName, 10)), is(0));
- assertThat(binlogPosition.compareTo(new BinlogPosition(fileName, 9)), is(1));
- assertThat(binlogPosition.compareTo(new BinlogPosition(fileName, 11)), is(-1));
+ binlogPosition = new BinlogPosition(fileName, 10, 0L);
+ assertThat(binlogPosition.compareTo(new BinlogPosition(fileName, 10, 0L)), is(0));
+ assertThat(binlogPosition.compareTo(new BinlogPosition(fileName, 9, 0L)), is(1));
+ assertThat(binlogPosition.compareTo(new BinlogPosition(fileName, 11, 0L)), is(-1));
assertThat(binlogPosition.compareTo(null), is(1));
}
@Test
void assertToString() {
- assertThat(new BinlogPosition("mysql-bin.000001", 4).toString(), is("mysql-bin.000001#4"));
+ assertThat(new BinlogPosition("mysql-bin.000001", 4, 0L).toString(), is("mysql-bin.000001#4"));
}
}