Skip to content

Commit

Permalink
source-mysql: adopt cleaned-up cdk (#34750)
Browse files Browse the repository at this point in the history
  • Loading branch information
postamar committed Feb 9, 2024
1 parent d80a9fc commit 796c0ee
Show file tree
Hide file tree
Showing 9 changed files with 26 additions and 52 deletions.
26 changes: 5 additions & 21 deletions airbyte-integrations/connectors/source-mysql/build.gradle
Original file line number Diff line number Diff line change
@@ -1,23 +1,16 @@
import org.jsonschema2pojo.SourceType

plugins {
id 'application'
id 'airbyte-java-connector'
id 'org.jsonschema2pojo' version '1.2.1'
}

airbyteJavaConnector {
cdkVersionRequired = '0.16.0'
cdkVersionRequired = '0.19.0'
features = ['db-sources']
useLocalCdk = false
}

configurations.all {
resolutionStrategy {
force libs.jooq
}
}

java {
compileJava {
options.compilerArgs += "-Xlint:-try,-rawtypes"
Expand All @@ -30,23 +23,14 @@ application {
}

dependencies {
implementation libs.jooq

implementation 'mysql:mysql-connector-java:8.0.30'
implementation 'org.apache.commons:commons-lang3:3.11'
implementation project(path: ':airbyte-cdk:java:airbyte-cdk:db-sources')
implementation 'io.debezium:debezium-embedded:2.4.0.Final'
implementation 'io.debezium:debezium-connector-mysql:2.4.0.Final'

implementation libs.debezium.api
implementation libs.debezium.embedded
implementation libs.debezium.mysql
testFixturesImplementation 'org.testcontainers:mysql:1.19.0'

testImplementation 'org.apache.commons:commons-lang3:3.11'
testImplementation 'org.hamcrest:hamcrest-all:1.3'
testImplementation libs.junit.jupiter.system.stubs
testImplementation libs.testcontainers.mysql
testFixturesImplementation libs.testcontainers.mysql
performanceTestJavaImplementation project(':airbyte-integrations:connectors:source-mysql')

testImplementation 'org.testcontainers:mysql:1.19.0'
}

jsonSchema2Pojo {
Expand Down
2 changes: 1 addition & 1 deletion airbyte-integrations/connectors/source-mysql/metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ data:
connectorSubtype: database
connectorType: source
definitionId: 435bb9a5-7887-4809-aa58-28c27df0d7ad
dockerImageTag: 3.3.3
dockerImageTag: 3.3.4
dockerRepository: airbyte/source-mysql
documentationUrl: https://docs.airbyte.com/integrations/sources/mysql
githubIssueLabel: source-mysql
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@
import io.airbyte.cdk.integrations.source.relationaldb.state.StateGeneratorUtils;
import io.airbyte.cdk.integrations.source.relationaldb.state.StateManager;
import io.airbyte.cdk.integrations.source.relationaldb.state.StateManagerFactory;
import io.airbyte.cdk.integrations.util.HostPortResolver;
import io.airbyte.commons.exceptions.ConfigErrorException;
import io.airbyte.commons.functional.CheckedConsumer;
import io.airbyte.commons.json.Jsons;
Expand All @@ -70,6 +69,8 @@
import io.airbyte.protocol.models.v0.ConfiguredAirbyteStream;
import io.airbyte.protocol.models.v0.ConnectorSpecification;
import io.airbyte.protocol.models.v0.SyncMode;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.sql.SQLException;
import java.time.Instant;
import java.util.ArrayList;
Expand Down Expand Up @@ -307,7 +308,7 @@ protected void logPreSyncDebugData(final JdbcDatabase database, final Configured

@Override
public JsonNode toDatabaseConfig(final JsonNode config) {
final String encodedDatabaseName = HostPortResolver.encodeValue(config.get(JdbcUtils.DATABASE_KEY).asText());
final String encodedDatabaseName = URLEncoder.encode(config.get(JdbcUtils.DATABASE_KEY).asText(), StandardCharsets.UTF_8);
final StringBuilder jdbcUrl = new StringBuilder(String.format("jdbc:mysql://%s:%s/%s",
config.get(JdbcUtils.HOST_KEY).asText(),
config.get(JdbcUtils.PORT_KEY).asText(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
import io.airbyte.protocol.models.JsonSchemaType;
import java.io.File;
import java.io.IOException;
import java.util.Base64;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -480,7 +480,7 @@ private String getLogString(final int length) {
private String getFileDataInBase64() {
final File file = new File(getClass().getClassLoader().getResource("test.png").getFile());
try {
return Base64.encodeBase64String(FileUtils.readFileToByteArray(file));
return Base64.getEncoder().encodeToString(FileUtils.readFileToByteArray(file));
} catch (final IOException e) {
LOGGER.error(String.format("Fail to read the file: %s. Error: %s", file.getAbsoluteFile(), e.getMessage()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ protected void setupDatabase(final String dbName) throws Exception {
.put("replication_method", plainConfig.get("replication_method"))
.build());

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

final Database database = new Database(dslContext);
final Database database = new Database(dslContext);

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

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import org.jooq.DSLContext;
import org.jooq.SQLDialect;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
Expand Down Expand Up @@ -79,11 +78,6 @@ public void setup() throws Exception {
super.setup();
}

@AfterEach
void tearDown() {
dslContext.close();
}

@AfterAll
static void cleanUp() {
container.close();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,13 @@
import org.testcontainers.containers.Network;
import org.testcontainers.utility.DockerImageName;

public class MySQLContainerFactory implements ContainerFactory<MySQLContainer<?>> {
public class MySQLContainerFactory extends ContainerFactory<MySQLContainer<?>> {

@Override
public MySQLContainer<?> createNewContainer(DockerImageName imageName) {
protected MySQLContainer<?> createNewContainer(DockerImageName imageName) {
return new MySQLContainer<>(imageName.asCompatibleSubstituteFor("mysql"));
}

@Override
public Class<?> getContainerClass() {
return MySQLContainer.class;
}

/**
* Create a new network and bind it to the container.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,20 @@
public class MySQLTestDatabase extends
TestDatabase<MySQLContainer<?>, MySQLTestDatabase, MySQLTestDatabase.MySQLConfigBuilder> {

public static enum BaseImage {
public enum BaseImage {

MYSQL_8("mysql:8.0"),
;

private final String reference;
public final String reference;

private BaseImage(String reference) {
BaseImage(String reference) {
this.reference = reference;
}

}

public static enum ContainerModifier {
public enum ContainerModifier {

MOSCOW_TIMEZONE("withMoscowTimezone"),
INVALID_TIMEZONE_CEST("withInvalidTimezoneCEST"),
Expand All @@ -39,9 +39,9 @@ public static enum ContainerModifier {
NETWORK("withNetwork"),
;

private final String methodName;
public final String methodName;

private ContainerModifier(String methodName) {
ContainerModifier(String methodName) {
this.methodName = methodName;
}

Expand Down
1 change: 1 addition & 0 deletions docs/integrations/sources/mysql.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@ Any database or table encoding combination of charset and collation is supported

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

0 comments on commit 796c0ee

Please sign in to comment.