Snowflake Destination apply buffering strategy on GCS staging - #12952
Conversation
|
/test connector=connectors/destination-snowflake
|
|
Looks good to me! Let's fix a test and proceed with PR |
|
/test connector=connectors/destination-snowflake
|
…ffering # Conflicts: # docs/integrations/destinations/snowflake.md
Greg Solovyev (grishick)
left a comment
There was a problem hiding this comment.
This PR does not compile. CI shows the following build failures and I am seeing the same compilation errors when I check out these changes. Are there more changes to more files that should be included in this PR?
> Task :airbyte-integrations:connectors:destination-snowflake:compileJava FAILED /actions-runner/_work/airbyte/airbyte/airbyte-integrations/connectors/destination-snowflake/src/main/java/io/airbyte/integrations/destination/snowflake/SnowflakeGCSStagingDestination.java:57: error: incompatible types: try-with-resources not applicable to variable type try (final JdbcDatabase database = getDatabase(config)) { ^ (JdbcDatabase cannot be converted to AutoCloseable) /actions-runner/_work/airbyte/airbyte/airbyte-integrations/connectors/destination-snowflake/src/main/java/io/airbyte/integrations/destination/snowflake/SnowflakeGCSStagingDestination.java:92: error: method does not override or implement a method from a supertype @Override ^ /actions-runner/_work/airbyte/airbyte/airbyte-integrations/connectors/destination-snowflake/src/main/java/io/airbyte/integrations/destination/snowflake/SnowflakeGCSStagingDestination.java:94: error: incompatible types: JsonNode cannot be converted to DataSource return SnowflakeDatabase.getDatabase(config); ^
…ffering # Conflicts: # docs/integrations/destinations/snowflake.md
fixed |
|
Hm... looks like CI tests maybe timing out. |
|
/test connector=connectors/destination-snowflake
Build FailedTest summary info: |
Liren Tu (tuliren)
left a comment
There was a problem hiding this comment.
Looks good in general.
One issue is that the new implementation has lots of similar code as SnowflakeS3StagingDestination and S3StorageOperations. Ideally we would merge the shared code if possible. But this can be a separate issue.
Can you run Java formatting before merging and commit the formatting updates related to the classes in this PR? The command is: ./gradlew :spotlessJavaApply
|
After this change |
removed SnowflakeCopyGcsDestination class |
…ffering # Conflicts: # airbyte-integrations/connectors/destination-snowflake/src/main/java/io/airbyte/integrations/destination/snowflake/SnowflakeCopyGcsDestination.java
|
/publish connector=connectors/destination-snowflake
|
Liren Tu (@tuliren) created separate issue https://github.com/airbytehq/airbyte-internal-issues/issues/650 because It is better to start working on it after https://github.com/airbytehq/airbyte-internal-issues/issues/501 to cover the Azure blob storage implementation as well |
|
Greg Solovyev (@grishick) could you please approve this PR cause merging is blocked currently |
|
/test connector=connectors/destination-snowflake
Build PassedTest summary info: |
…ehq#12952) * Destination Snowflake apply buffering strategy for GCS * Snowflake Destination apply buffering strategy on GCS staging * updated CHANGELOG * fixed checkstyle * fixed compile error * refactoring * bump version * auto-bump connector version Co-authored-by: Octavia Squidington III <octavia-squidington-iii@users.noreply.github.com>
What
Follow buffering strategy (compressed serialized records) for Destination Snowflake GCS staging
How
This PR switches the Snowflake destination and stop using the SnowflakeCopyGcsDestination, but use a new SnowflakeGCSStagingDestination
So this PR simply requires its own set of StagingOperations using GCS buckets
Recommended reading order
SnowflakeGCSStagingDestination.javaSnowflakeGcsStagingSqlOperations.java🚨 User Impact 🚨
Potentially a bit slower sync but more consistent memory and thread consumption thanks to on-disk buffering before staging. (More resilient to OOM and network failures)
Pre-merge Checklist
Expand the relevant checklist and delete the others.
New Connector
Community member or Airbyter
airbyte_secret./gradlew :airbyte-integrations:connectors:<name>:integrationTest.README.mdbootstrap.md. See description and examplesdocs/SUMMARY.mddocs/integrations/<source or destination>/<name>.mdincluding changelog. See changelog exampledocs/integrations/README.mdairbyte-integrations/builds.mdAirbyter
If this is a community PR, the Airbyte engineer reviewing this PR is responsible for the below items.
/test connector=connectors/<name>command is passing/publishcommand described hereUpdating a connector
Community member or Airbyter
airbyte_secret./gradlew :airbyte-integrations:connectors:<name>:integrationTest.README.mdbootstrap.md. See description and examplesdocs/integrations/<source or destination>/<name>.mdincluding changelog. See changelog exampleAirbyter
If this is a community PR, the Airbyte engineer reviewing this PR is responsible for the below items.
/test connector=connectors/<name>command is passing/publishcommand described hereConnector Generator
-scaffoldin their name) have been updated with the latest scaffold by running./gradlew :airbyte-integrations:connector-templates:generator:testScaffoldTemplatesthen checking in your changesTests
Unit
Put your unit tests output here.
Integration
Put your integration tests output here.
Acceptance
Put your acceptance tests output here.