Skip to content

Commit c3eecc8

Browse files
Marius Postajatinyadav-cc
authored andcommitted
source-mysql: adopt cleaned-up cdk (airbytehq#34750)
1 parent ba01b02 commit c3eecc8

File tree

9 files changed

+26
-52
lines changed

9 files changed

+26
-52
lines changed

airbyte-integrations/connectors/source-mysql/build.gradle

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,16 @@
11
import org.jsonschema2pojo.SourceType
22

33
plugins {
4-
id 'application'
54
id 'airbyte-java-connector'
65
id 'org.jsonschema2pojo' version '1.2.1'
76
}
87

98
airbyteJavaConnector {
10-
cdkVersionRequired = '0.16.0'
9+
cdkVersionRequired = '0.19.0'
1110
features = ['db-sources']
1211
useLocalCdk = false
1312
}
1413

15-
configurations.all {
16-
resolutionStrategy {
17-
force libs.jooq
18-
}
19-
}
20-
2114
java {
2215
compileJava {
2316
options.compilerArgs += "-Xlint:-try,-rawtypes"
@@ -30,23 +23,14 @@ application {
3023
}
3124

3225
dependencies {
33-
implementation libs.jooq
34-
3526
implementation 'mysql:mysql-connector-java:8.0.30'
36-
implementation 'org.apache.commons:commons-lang3:3.11'
37-
implementation project(path: ':airbyte-cdk:java:airbyte-cdk:db-sources')
27+
implementation 'io.debezium:debezium-embedded:2.4.0.Final'
28+
implementation 'io.debezium:debezium-connector-mysql:2.4.0.Final'
3829

39-
implementation libs.debezium.api
40-
implementation libs.debezium.embedded
41-
implementation libs.debezium.mysql
30+
testFixturesImplementation 'org.testcontainers:mysql:1.19.0'
4231

43-
testImplementation 'org.apache.commons:commons-lang3:3.11'
4432
testImplementation 'org.hamcrest:hamcrest-all:1.3'
45-
testImplementation libs.junit.jupiter.system.stubs
46-
testImplementation libs.testcontainers.mysql
47-
testFixturesImplementation libs.testcontainers.mysql
48-
performanceTestJavaImplementation project(':airbyte-integrations:connectors:source-mysql')
49-
33+
testImplementation 'org.testcontainers:mysql:1.19.0'
5034
}
5135

5236
jsonSchema2Pojo {

airbyte-integrations/connectors/source-mysql/metadata.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ data:
99
connectorSubtype: database
1010
connectorType: source
1111
definitionId: 435bb9a5-7887-4809-aa58-28c27df0d7ad
12-
dockerImageTag: 3.3.3
12+
dockerImageTag: 3.3.4
1313
dockerRepository: airbyte/source-mysql
1414
documentationUrl: https://docs.airbyte.com/integrations/sources/mysql
1515
githubIssueLabel: source-mysql

airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSource.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
import io.airbyte.cdk.integrations.source.relationaldb.state.StateGeneratorUtils;
4545
import io.airbyte.cdk.integrations.source.relationaldb.state.StateManager;
4646
import io.airbyte.cdk.integrations.source.relationaldb.state.StateManagerFactory;
47-
import io.airbyte.cdk.integrations.util.HostPortResolver;
4847
import io.airbyte.commons.exceptions.ConfigErrorException;
4948
import io.airbyte.commons.functional.CheckedConsumer;
5049
import io.airbyte.commons.json.Jsons;
@@ -70,6 +69,8 @@
7069
import io.airbyte.protocol.models.v0.ConfiguredAirbyteStream;
7170
import io.airbyte.protocol.models.v0.ConnectorSpecification;
7271
import io.airbyte.protocol.models.v0.SyncMode;
72+
import java.net.URLEncoder;
73+
import java.nio.charset.StandardCharsets;
7374
import java.sql.SQLException;
7475
import java.time.Instant;
7576
import java.util.ArrayList;
@@ -307,7 +308,7 @@ protected void logPreSyncDebugData(final JdbcDatabase database, final Configured
307308

308309
@Override
309310
public JsonNode toDatabaseConfig(final JsonNode config) {
310-
final String encodedDatabaseName = HostPortResolver.encodeValue(config.get(JdbcUtils.DATABASE_KEY).asText());
311+
final String encodedDatabaseName = URLEncoder.encode(config.get(JdbcUtils.DATABASE_KEY).asText(), StandardCharsets.UTF_8);
311312
final StringBuilder jdbcUrl = new StringBuilder(String.format("jdbc:mysql://%s:%s/%s",
312313
config.get(JdbcUtils.HOST_KEY).asText(),
313314
config.get(JdbcUtils.PORT_KEY).asText(),

airbyte-integrations/connectors/source-mysql/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractMySqlSourceDatatypeTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
import io.airbyte.protocol.models.JsonSchemaType;
1313
import java.io.File;
1414
import java.io.IOException;
15+
import java.util.Base64;
1516
import java.util.Set;
1617
import java.util.stream.Collectors;
1718
import java.util.stream.Stream;
18-
import org.apache.commons.codec.binary.Base64;
1919
import org.apache.commons.io.FileUtils;
2020
import org.apache.commons.lang3.RandomStringUtils;
2121
import org.apache.commons.lang3.StringUtils;
@@ -480,7 +480,7 @@ private String getLogString(final int length) {
480480
private String getFileDataInBase64() {
481481
final File file = new File(getClass().getClassLoader().getResource("test.png").getFile());
482482
try {
483-
return Base64.encodeBase64String(FileUtils.readFileToByteArray(file));
483+
return Base64.getEncoder().encodeToString(FileUtils.readFileToByteArray(file));
484484
} catch (final IOException e) {
485485
LOGGER.error(String.format("Fail to read the file: %s. Error: %s", file.getAbsoluteFile(), e.getMessage()));
486486
}

airbyte-integrations/connectors/source-mysql/src/test-performance/java/io/airbyte/integrations/source/mysql/MySqlRdsSourcePerformanceSecretTest.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ protected void setupDatabase(final String dbName) throws Exception {
4343
.put("replication_method", plainConfig.get("replication_method"))
4444
.build());
4545

46-
try (final DSLContext dslContext = DSLContextFactory.create(
46+
final DSLContext dslContext = DSLContextFactory.create(
4747
config.get(JdbcUtils.USERNAME_KEY).asText(),
4848
config.get(JdbcUtils.PASSWORD_KEY).asText(),
4949
DatabaseDriver.MYSQL.getDriverClassName(),
@@ -53,14 +53,13 @@ protected void setupDatabase(final String dbName) throws Exception {
5353
config.get(JdbcUtils.DATABASE_KEY).asText()),
5454
SQLDialect.MYSQL,
5555
Map.of("zeroDateTimeBehavior", "convertToNull"),
56-
JdbcConnector.CONNECT_TIMEOUT_DEFAULT)) {
56+
JdbcConnector.CONNECT_TIMEOUT_DEFAULT);
5757

58-
final Database database = new Database(dslContext);
58+
final Database database = new Database(dslContext);
5959

60-
// It disable strict mode in the DB and allows to insert specific values.
61-
// For example, it's possible to insert date with zero values "2021-00-00"
62-
database.query(ctx -> ctx.execute("SET @@sql_mode=''"));
63-
}
60+
// It disable strict mode in the DB and allows to insert specific values.
61+
// For example, it's possible to insert date with zero values "2021-00-00"
62+
database.query(ctx -> ctx.execute("SET @@sql_mode=''"));
6463
}
6564

6665
/**

airbyte-integrations/connectors/source-mysql/src/test/java/io/airbyte/integrations/source/mysql/MySqlStressTest.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.jooq.DSLContext;
2323
import org.jooq.SQLDialect;
2424
import org.junit.jupiter.api.AfterAll;
25-
import org.junit.jupiter.api.AfterEach;
2625
import org.junit.jupiter.api.BeforeAll;
2726
import org.junit.jupiter.api.BeforeEach;
2827
import org.junit.jupiter.api.Disabled;
@@ -79,11 +78,6 @@ public void setup() throws Exception {
7978
super.setup();
8079
}
8180

82-
@AfterEach
83-
void tearDown() {
84-
dslContext.close();
85-
}
86-
8781
@AfterAll
8882
static void cleanUp() {
8983
container.close();

airbyte-integrations/connectors/source-mysql/src/testFixtures/java/io/airbyte/integrations/source/mysql/MySQLContainerFactory.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,13 @@
1111
import org.testcontainers.containers.Network;
1212
import org.testcontainers.utility.DockerImageName;
1313

14-
public class MySQLContainerFactory implements ContainerFactory<MySQLContainer<?>> {
14+
public class MySQLContainerFactory extends ContainerFactory<MySQLContainer<?>> {
1515

1616
@Override
17-
public MySQLContainer<?> createNewContainer(DockerImageName imageName) {
17+
protected MySQLContainer<?> createNewContainer(DockerImageName imageName) {
1818
return new MySQLContainer<>(imageName.asCompatibleSubstituteFor("mysql"));
1919
}
2020

21-
@Override
22-
public Class<?> getContainerClass() {
23-
return MySQLContainer.class;
24-
}
25-
2621
/**
2722
* Create a new network and bind it to the container.
2823
*/

airbyte-integrations/connectors/source-mysql/src/testFixtures/java/io/airbyte/integrations/source/mysql/MySQLTestDatabase.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,20 @@
1717
public class MySQLTestDatabase extends
1818
TestDatabase<MySQLContainer<?>, MySQLTestDatabase, MySQLTestDatabase.MySQLConfigBuilder> {
1919

20-
public static enum BaseImage {
20+
public enum BaseImage {
2121

2222
MYSQL_8("mysql:8.0"),
2323
;
2424

25-
private final String reference;
25+
public final String reference;
2626

27-
private BaseImage(String reference) {
27+
BaseImage(String reference) {
2828
this.reference = reference;
2929
}
3030

3131
}
3232

33-
public static enum ContainerModifier {
33+
public enum ContainerModifier {
3434

3535
MOSCOW_TIMEZONE("withMoscowTimezone"),
3636
INVALID_TIMEZONE_CEST("withInvalidTimezoneCEST"),
@@ -39,9 +39,9 @@ public static enum ContainerModifier {
3939
NETWORK("withNetwork"),
4040
;
4141

42-
private final String methodName;
42+
public final String methodName;
4343

44-
private ContainerModifier(String methodName) {
44+
ContainerModifier(String methodName) {
4545
this.methodName = methodName;
4646
}
4747

docs/integrations/sources/mysql.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ Any database or table encoding combination of charset and collation is supported
223223

224224
| Version | Date | Pull Request | Subject |
225225
|:--------|:-----------|:-----------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------|
226+
| 3.3.4 | 2024-02-08 | [34750](https://github.com/airbytehq/airbyte/pull/34750) | Adopt CDK 0.19.0 |
226227
| 3.3.3 | 2024-01-26 | [34573](https://github.com/airbytehq/airbyte/pull/34573) | Adopt CDK v0.16.0. |
227228
| 3.3.2 | 2024-01-08 | [33005](https://github.com/airbytehq/airbyte/pull/33005) | Adding count stats for incremental sync in AirbyteStateMessage
228229
| 3.3.1 | 2024-01-03 | [33312](https://github.com/airbytehq/airbyte/pull/33312) | Adding count stats in AirbyteStateMessage |

0 commit comments

Comments
 (0)