mirror of
https://github.com/apache/doris.git
synced 2026-11-04 07:31:17 +00:00
### What problem does this PR solve? Problem Summary: When a non-GTID MySQL transaction is being delivered and the event listener is blocked by backpressure, the keepalive thread can reconnect after the in-memory binlog position has advanced into the transaction. The reconnect then resumes from the middle of the transaction and can silently skip rows. This change tracks the start of an incomplete non-GTID transaction and rewinds to that position before a keepalive reconnect. Completed transactions clear the replay state. It also separates the CDC progress heartbeat from the connection keepalive interval and uses the configured progress heartbeat as the MySQL protocol heartbeat. The Failsafe test classpath now uses the compiled classes directory so integration tests exercise locally overridden dependency classes instead of the repackaged application artifact.
360 lines
14 KiB
XML
360 lines
14 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
-->
|
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
<parent>
|
|
<groupId>org.apache</groupId>
|
|
<artifactId>apache</artifactId>
|
|
<version>29</version>
|
|
</parent>
|
|
<artifactId>cdc_client</artifactId>
|
|
<version>1.0.0</version>
|
|
<name>Doris Cdc Client</name>
|
|
<url>https://doris.apache.org/</url>
|
|
<licenses>
|
|
<license>
|
|
<name>Apache 2.0 License</name>
|
|
<url>https://www.apache.org/licenses/LICENSE-2.0.html</url>
|
|
<distribution>repo</distribution>
|
|
</license>
|
|
</licenses>
|
|
<scm>
|
|
<connection>scm:git:https://git@github.com/apache/doris.git</connection>
|
|
<developerConnection>scm:git:https://git@github.com/apache/doris.git</developerConnection>
|
|
<url>scm:git:https://git@github.com/apache/doris.git</url>
|
|
<tag>HEAD</tag>
|
|
</scm>
|
|
<issueManagement>
|
|
<system>GitHub</system>
|
|
<url>https://github.com/apache/doris/issues</url>
|
|
</issueManagement>
|
|
<mailingLists>
|
|
<mailingList>
|
|
<name>Dev Mailing List</name>
|
|
<post>dev@doris.apache.org</post>
|
|
<subscribe>dev-subscribe@doris.apache.org</subscribe>
|
|
<unsubscribe>dev-unsubscribe@doris.apache.org</unsubscribe>
|
|
</mailingList>
|
|
<mailingList>
|
|
<name>Commits Mailing List</name>
|
|
<post>commits@doris.apache.org</post>
|
|
<subscribe>commits-subscribe@doris.apache.org</subscribe>
|
|
<unsubscribe>commits-unsubscribe@doris.apache.org</unsubscribe>
|
|
</mailingList>
|
|
</mailingLists>
|
|
<properties>
|
|
<spring.version>3.5.7</spring.version>
|
|
<flink.version>1.20.3</flink.version>
|
|
<flink.cdc.version>3.6.0-1.20</flink.cdc.version>
|
|
<slf4j.version>1.7.36</slf4j.version>
|
|
<doris.version>1.2-SNAPSHOT</doris.version>
|
|
<spotless.version>2.43.0</spotless.version>
|
|
<checkstyle.version>8.14</checkstyle.version>
|
|
<maven-checkstyle-plugin.version>2.17</maven-checkstyle-plugin.version>
|
|
<httpcomponents.version>4.5.13</httpcomponents.version>
|
|
<lombok.version>1.18.24</lombok.version>
|
|
<commons-codec.version>1.15</commons-codec.version>
|
|
<testcontainers.version>1.21.4</testcontainers.version>
|
|
<assertj.version>3.27.7</assertj.version>
|
|
<awaitility.version>4.2.1</awaitility.version>
|
|
<maven-failsafe-plugin.version>3.2.5</maven-failsafe-plugin.version>
|
|
<maven-surefire-plugin.version>3.2.5</maven-surefire-plugin.version>
|
|
<!-- JDK17 opens for debezium ObjectSizeCalculator reflection (byte-sized queue).
|
|
Mirrors the set CdcClientMgr passes when BE forks cdc-client.jar; needed because
|
|
surefire/failsafe run the reader path directly without going through that fork. -->
|
|
<test.add.opens>--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED</test.add.opens>
|
|
</properties>
|
|
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.apache.doris</groupId>
|
|
<artifactId>fe-common</artifactId>
|
|
<version>${doris.version}</version>
|
|
<exclusions>
|
|
<exclusion>
|
|
<artifactId>*</artifactId>
|
|
<groupId>*</groupId>
|
|
</exclusion>
|
|
</exclusions>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-web</artifactId>
|
|
<version>${spring.version}</version>
|
|
<exclusions>
|
|
<exclusion>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-tomcat</artifactId>
|
|
</exclusion>
|
|
<exclusion>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-logging</artifactId>
|
|
</exclusion>
|
|
</exclusions>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-jetty</artifactId>
|
|
<version>${spring.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
|
<version>${spring.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-log4j2</artifactId>
|
|
<version>${spring.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.flink</groupId>
|
|
<artifactId>flink-connector-mysql-cdc</artifactId>
|
|
<version>${flink.cdc.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.flink</groupId>
|
|
<artifactId>flink-connector-postgres-cdc</artifactId>
|
|
<version>${flink.cdc.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.flink</groupId>
|
|
<artifactId>flink-clients</artifactId>
|
|
<version>${flink.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.flink</groupId>
|
|
<artifactId>flink-connector-base</artifactId>
|
|
<version>${flink.version}</version>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.apache.flink</groupId>
|
|
<artifactId>flink-table-api-java-bridge</artifactId>
|
|
<version>${flink.version}</version>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.apache.httpcomponents</groupId>
|
|
<artifactId>httpclient</artifactId>
|
|
<version>${httpcomponents.version}</version>
|
|
<exclusions>
|
|
<exclusion>
|
|
<groupId>commons-codec</groupId>
|
|
<artifactId>commons-codec</artifactId>
|
|
</exclusion>
|
|
</exclusions>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>commons-codec</groupId>
|
|
<artifactId>commons-codec</artifactId>
|
|
<version>${commons-codec.version}</version>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.slf4j</groupId>
|
|
<artifactId>slf4j-api</artifactId>
|
|
<version>${slf4j.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.slf4j</groupId>
|
|
<artifactId>slf4j-log4j12</artifactId>
|
|
<version>${slf4j.version}</version>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>com.fasterxml.jackson.core</groupId>
|
|
<artifactId>jackson-annotations</artifactId>
|
|
<version>2.19.2</version>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.projectlombok</groupId>
|
|
<artifactId>lombok</artifactId>
|
|
<version>${lombok.version}</version>
|
|
<scope>provided</scope>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.junit.jupiter</groupId>
|
|
<artifactId>junit-jupiter</artifactId>
|
|
<version>5.10.2</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.testcontainers</groupId>
|
|
<artifactId>testcontainers</artifactId>
|
|
<version>${testcontainers.version}</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.testcontainers</groupId>
|
|
<artifactId>junit-jupiter</artifactId>
|
|
<version>${testcontainers.version}</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.testcontainers</groupId>
|
|
<artifactId>mysql</artifactId>
|
|
<version>${testcontainers.version}</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.testcontainers</groupId>
|
|
<artifactId>postgresql</artifactId>
|
|
<version>${testcontainers.version}</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.assertj</groupId>
|
|
<artifactId>assertj-core</artifactId>
|
|
<version>${assertj.version}</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.awaitility</groupId>
|
|
<artifactId>awaitility</artifactId>
|
|
<version>${awaitility.version}</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
</dependencies>
|
|
|
|
<build>
|
|
<finalName>cdc-client</finalName>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
<version>2.0.3.RELEASE</version>
|
|
<executions>
|
|
<execution>
|
|
<goals>
|
|
<goal>repackage</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<configuration>
|
|
<source>17</source>
|
|
<target>17</target>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-surefire-plugin</artifactId>
|
|
<version>${maven-surefire-plugin.version}</version>
|
|
<configuration>
|
|
<argLine>${test.add.opens}</argLine>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-failsafe-plugin</artifactId>
|
|
<version>${maven-failsafe-plugin.version}</version>
|
|
<configuration>
|
|
<classesDirectory>${project.build.outputDirectory}</classesDirectory>
|
|
<includes>
|
|
<include>**/*ITCase.java</include>
|
|
</includes>
|
|
<forkCount>1</forkCount>
|
|
<reuseForks>true</reuseForks>
|
|
<argLine>${test.add.opens}</argLine>
|
|
</configuration>
|
|
<executions>
|
|
<execution>
|
|
<goals>
|
|
<goal>integration-test</goal>
|
|
<goal>verify</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>com.diffplug.spotless</groupId>
|
|
<artifactId>spotless-maven-plugin</artifactId>
|
|
<version>${spotless.version}</version>
|
|
<configuration>
|
|
<java>
|
|
<includes>
|
|
<include>src/main/java/org/apache/doris/**/*.java</include>
|
|
</includes>
|
|
<googleJavaFormat>
|
|
<version>1.17.0</version>
|
|
<style>AOSP</style>
|
|
</googleJavaFormat>
|
|
|
|
<importOrder>
|
|
<order>org.apache.doris,org.apache,javax,java,scala,\#
|
|
</order>
|
|
</importOrder>
|
|
<removeUnusedImports/>
|
|
</java>
|
|
</configuration>
|
|
<executions>
|
|
<execution>
|
|
<id>spotless-check</id>
|
|
<phase>validate</phase>
|
|
<goals>
|
|
<goal>check</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
|
<version>${maven-checkstyle-plugin.version}</version>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>com.puppycrawl.tools</groupId>
|
|
<artifactId>checkstyle</artifactId>
|
|
<!-- Note: match version with docs/flinkDev/ide_setup.md -->
|
|
<version>${checkstyle.version}</version>
|
|
</dependency>
|
|
</dependencies>
|
|
<executions>
|
|
<execution>
|
|
<id>validate</id>
|
|
<phase>validate</phase>
|
|
<goals>
|
|
<goal>check</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
<configuration>
|
|
<skip>true</skip>
|
|
<suppressionsLocation>../../fe/check/checkstyle/suppressions.xml</suppressionsLocation>
|
|
<includeTestSourceDirectory>true</includeTestSourceDirectory>
|
|
<configLocation>../../fe/check/checkstyle/checkstyle.xml</configLocation>
|
|
<logViolationsToConsole>true</logViolationsToConsole>
|
|
<failOnViolation>true</failOnViolation>
|
|
</configuration>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</project>
|