jdbc-sources: migrate to PER-STREAM state (#33485)
This commit is contained in:
committed by
GitHub
parent
ff34abd641
commit
0c3d12ba2b
@@ -1,7 +0,0 @@
|
||||
# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference)
|
||||
# for more information about how to configure these tests
|
||||
connector_image: airbyte/source-dynamodb:dev
|
||||
acceptance-tests:
|
||||
spec:
|
||||
tests:
|
||||
- spec_path: "main/resources/spec.json"
|
||||
@@ -4,7 +4,7 @@ plugins {
|
||||
}
|
||||
|
||||
airbyteJavaConnector {
|
||||
cdkVersionRequired = '0.2.0'
|
||||
cdkVersionRequired = '0.7.7'
|
||||
features = ['db-sources']
|
||||
useLocalCdk = false
|
||||
}
|
||||
@@ -42,4 +42,6 @@ dependencies {
|
||||
|
||||
testImplementation "org.assertj:assertj-core:${assertVersion}"
|
||||
testImplementation "org.testcontainers:localstack:${testContainersVersion}"
|
||||
integrationTestJavaImplementation 'com.amazonaws:aws-java-sdk:1.12.610'
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ data:
|
||||
connectorSubtype: api
|
||||
connectorType: source
|
||||
definitionId: 50401137-8871-4c5a-abb7-1f5fda35545a
|
||||
dockerImageTag: 0.1.2
|
||||
dockerImageTag: 0.2.0
|
||||
dockerRepository: airbyte/source-dynamodb
|
||||
documentationUrl: https://docs.airbyte.com/integrations/sources/dynamodb
|
||||
githubIssueLabel: source-dynamodb
|
||||
|
||||
@@ -16,8 +16,6 @@ import io.airbyte.cdk.integrations.source.relationaldb.CursorInfo;
|
||||
import io.airbyte.cdk.integrations.source.relationaldb.StateDecoratingIterator;
|
||||
import io.airbyte.cdk.integrations.source.relationaldb.state.StateManager;
|
||||
import io.airbyte.cdk.integrations.source.relationaldb.state.StateManagerFactory;
|
||||
import io.airbyte.commons.features.EnvVariableFeatureFlags;
|
||||
import io.airbyte.commons.features.FeatureFlags;
|
||||
import io.airbyte.commons.json.Jsons;
|
||||
import io.airbyte.commons.stream.AirbyteStreamUtils;
|
||||
import io.airbyte.commons.util.AutoCloseableIterator;
|
||||
@@ -42,8 +40,6 @@ public class DynamodbSource extends BaseConnector implements Source {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(DynamodbSource.class);
|
||||
|
||||
private final FeatureFlags featureFlags = new EnvVariableFeatureFlags();
|
||||
|
||||
private final ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
public static void main(final String[] args) throws Exception {
|
||||
@@ -98,7 +94,7 @@ public class DynamodbSource extends BaseConnector implements Source {
|
||||
final ConfiguredAirbyteCatalog catalog,
|
||||
final JsonNode state) {
|
||||
|
||||
final var streamState = DynamodbUtils.deserializeStreamState(state, featureFlags.useStreamCapableState());
|
||||
final var streamState = DynamodbUtils.deserializeStreamState(state);
|
||||
|
||||
final StateManager stateManager = StateManagerFactory
|
||||
.createStateManager(streamState.airbyteStateType(), streamState.airbyteStateMessages(), catalog);
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
package io.airbyte.integrations.source.dynamodb;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import io.airbyte.cdk.integrations.source.relationaldb.models.DbState;
|
||||
import io.airbyte.commons.json.Jsons;
|
||||
import io.airbyte.configoss.StateWrapper;
|
||||
import io.airbyte.configoss.helpers.StateMessageHelper;
|
||||
@@ -53,9 +52,9 @@ public class DynamodbUtils {
|
||||
.withData(data));
|
||||
}
|
||||
|
||||
public static StreamState deserializeStreamState(final JsonNode state, final boolean useStreamCapableState) {
|
||||
public static StreamState deserializeStreamState(final JsonNode state) {
|
||||
final Optional<StateWrapper> typedState =
|
||||
StateMessageHelper.getTypedState(state, useStreamCapableState);
|
||||
StateMessageHelper.getTypedState(state);
|
||||
return typedState.map(stateWrapper -> switch (stateWrapper.getStateType()) {
|
||||
case STREAM:
|
||||
yield new StreamState(AirbyteStateMessage.AirbyteStateType.STREAM,
|
||||
@@ -68,15 +67,10 @@ public class DynamodbUtils {
|
||||
throw new UnsupportedOperationException("Unsupported stream state");
|
||||
}).orElseGet(() -> {
|
||||
// create empty initial state
|
||||
if (useStreamCapableState) {
|
||||
return new StreamState(AirbyteStateMessage.AirbyteStateType.STREAM, List.of(
|
||||
new AirbyteStateMessage().withType(AirbyteStateMessage.AirbyteStateType.STREAM)
|
||||
.withStream(new AirbyteStreamState())));
|
||||
} else {
|
||||
return new StreamState(AirbyteStateMessage.AirbyteStateType.LEGACY, List.of(
|
||||
new AirbyteStateMessage().withType(AirbyteStateMessage.AirbyteStateType.LEGACY)
|
||||
.withData(Jsons.jsonNode(new DbState()))));
|
||||
}
|
||||
return new StreamState(AirbyteStateMessage.AirbyteStateType.STREAM, List.of(
|
||||
new AirbyteStateMessage().withType(AirbyteStateMessage.AirbyteStateType.STREAM)
|
||||
.withStream(new AirbyteStreamState())));
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -15,12 +15,14 @@ import java.util.Set;
|
||||
import org.json.JSONException;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.skyscreamer.jsonassert.JSONAssert;
|
||||
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
|
||||
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
|
||||
import software.amazon.awssdk.services.dynamodb.model.PutItemRequest;
|
||||
|
||||
@Disabled
|
||||
public class DynamodbOperationsTest {
|
||||
|
||||
private static final String TABLE_NAME = "airbyte_table";
|
||||
|
||||
@@ -13,10 +13,12 @@ import io.airbyte.protocol.models.v0.ConfiguredAirbyteCatalog;
|
||||
import io.airbyte.protocol.models.v0.ConnectorSpecification;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
|
||||
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
|
||||
import software.amazon.awssdk.services.dynamodb.model.PutItemRequest;
|
||||
|
||||
@Disabled
|
||||
public class DynamodbSourceAcceptanceTest extends SourceAcceptanceTest {
|
||||
|
||||
private static final String TABLE_NAME = "airbyte_table";
|
||||
|
||||
@@ -17,11 +17,13 @@ import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
|
||||
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
|
||||
import software.amazon.awssdk.services.dynamodb.model.PutItemRequest;
|
||||
|
||||
@Disabled
|
||||
public class DynamodbSourceTest {
|
||||
|
||||
private static final String TABLE_NAME = "airbyte_table";
|
||||
|
||||
Reference in New Issue
Block a user