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"));
     }
 }