Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🎉 New Destination: R2 Cloudflare #15296

Merged
merged 31 commits into from
Sep 26, 2022

Conversation

videnkz
Copy link
Contributor

@videnkz videnkz commented Aug 4, 2022

What

🚨 User Impact 🚨

None expected.

Tests

  • S3
  • GCS
  • Snowflake
  • Redshift
  • BigQuery
  • BigQuery Denormalized
  • Databricks

Pre-merge checks

@CLAassistant
Copy link

CLAassistant commented Aug 4, 2022

CLA assistant check
All committers have signed the CLA.

@github-actions github-actions bot added area/connectors Connector related issues area/documentation Improvements or additions to documentation labels Aug 4, 2022
@marcosmarxm marcosmarxm changed the title destination-r2 🎉 New Destination: R2 Aug 4, 2022
@marcosmarxm marcosmarxm changed the title 🎉 New Destination: R2 🎉 New Destination: R2 Cloudflare Aug 4, 2022
@marcosmarxm
Copy link
Member

@kananindzya let us know when this contribution is ready to review.

added base-java-s3 module

updated common s3 lib

local

changed dependency of s3 in all realted modules

minor style fixes

added common module for s3 integration tests
@videnkz videnkz marked this pull request as ready for review August 12, 2022 10:31
@videnkz videnkz requested a review from a team as a code owner August 12, 2022 10:31
@videnkz
Copy link
Contributor Author

videnkz commented Sep 7, 2022

Should I delete PARQUET format from R2 specification and documentation?

That sounds good.

@kananindzya, I plan to merge this PR this week. Currently there are some merge conflicts. Would you mind granting me the write access to your fork? In that way, I can update this PR directly, and resolve some of the conflicts myself.

Hi @tuliren

  1. I gave access to you.
  2. Deleted parquet format from specification.
  3. Updated branch
  4. Added configuration for upload threads count. I've found limitations in R2 docs(https://developers.cloudflare.com/r2/platform/s3-compatibility/api/#implemented-object-level-operations).
    On my environment I catch exception below:
022-09-03 02:06:55 �[43mdestination�[0m > 2022-09-03 02:06:55 �[1;31mERROR�[m a.m.s.StreamTransferManager(abort):432 - Aborting [Manager uploading to path/to/my/bucket/xxx/2022_09_03_1662168027012_.csv with id AMAM7OnPp...esYGAxA==] due to error: com.amazonaws.services.s3.model.AmazonS3Exception: There was a problem with the multipart upload. (Service: Amazon S3; Status Code: 400; Error Code: InvalidPart; Request ID: null; S3 Extended Request ID: null; Proxy: null), S3 Extended Request ID: null
2022-09-03 02:06:55 �[43mdestination�[0m > 2022-09-03 02:06:55 �[1;31mERROR�[m i.a.i.d.s.S3StorageOperations(uploadRecordsToBucket):128 - Failed to upload records into storage path/to/my/bucket/xxx/2022_09_03_1662168027012_
2022-09-03 02:06:55 �[43mdestination�[0m > java.lang.RuntimeException: java.util.concurrent.ExecutionException: com.amazonaws.AbortedException: 
2022-09-03 02:06:55 �[43mdestination�[0m > 	at alex.mojaki.s3upload.ExecutorServiceResultsHandler$1.next(ExecutorServiceResultsHandler.java:72) ~[s3-stream-upload-2.2.2.jar:?]

@videnkz
Copy link
Contributor Author

videnkz commented Sep 8, 2022

Should I delete PARQUET format from R2 specification and documentation?

That sounds good.
@kananindzya, I plan to merge this PR this week. Currently there are some merge conflicts. Would you mind granting me the write access to your fork? In that way, I can update this PR directly, and resolve some of the conflicts myself.

Hi @tuliren

  1. I gave access to you.
  2. Deleted parquet format from specification.
  3. Updated branch
  4. Added configuration for upload threads count. I've found limitations in R2 docs(https://developers.cloudflare.com/r2/platform/s3-compatibility/api/#implemented-object-level-operations).
    On my environment I catch exception below:
022-09-03 02:06:55 �[43mdestination�[0m > 2022-09-03 02:06:55 �[1;31mERROR�[m a.m.s.StreamTransferManager(abort):432 - Aborting [Manager uploading to path/to/my/bucket/xxx/2022_09_03_1662168027012_.csv with id AMAM7OnPp...esYGAxA==] due to error: com.amazonaws.services.s3.model.AmazonS3Exception: There was a problem with the multipart upload. (Service: Amazon S3; Status Code: 400; Error Code: InvalidPart; Request ID: null; S3 Extended Request ID: null; Proxy: null), S3 Extended Request ID: null
2022-09-03 02:06:55 �[43mdestination�[0m > 2022-09-03 02:06:55 �[1;31mERROR�[m i.a.i.d.s.S3StorageOperations(uploadRecordsToBucket):128 - Failed to upload records into storage path/to/my/bucket/xxx/2022_09_03_1662168027012_
2022-09-03 02:06:55 �[43mdestination�[0m > java.lang.RuntimeException: java.util.concurrent.ExecutionException: com.amazonaws.AbortedException: 
2022-09-03 02:06:55 �[43mdestination�[0m > 	at alex.mojaki.s3upload.ExecutorServiceResultsHandler$1.next(ExecutorServiceResultsHandler.java:72) ~[s3-stream-upload-2.2.2.jar:?]

Hi @tuliren ,
Today I tested multipart upload with concurrent thread count = 3.
Uploading finished success for file with 30mb size(part size - 5mb)

@tuliren
Copy link
Contributor

tuliren commented Sep 26, 2022

/test connector=connectors/destination-bigquery-denormalized

🕑 connectors/destination-bigquery-denormalized https://github.com/airbytehq/airbyte/actions/runs/3124227743
✅ connectors/destination-bigquery-denormalized https://github.com/airbytehq/airbyte/actions/runs/3124227743
Python tests coverage:

Name                                                              Stmts   Miss  Cover
-------------------------------------------------------------------------------------
normalization/transform_config/__init__.py                            2      0   100%
normalization/transform_catalog/reserved_keywords.py                 14      0   100%
normalization/transform_catalog/__init__.py                           2      0   100%
normalization/destination_type.py                                    14      0   100%
normalization/__init__.py                                             4      0   100%
normalization/transform_catalog/destination_name_transformer.py     166      8    95%
normalization/transform_catalog/table_name_registry.py              174     34    80%
normalization/transform_config/transform.py                         191     49    74%
normalization/transform_catalog/utils.py                             51     14    73%
normalization/transform_catalog/dbt_macro.py                         22      7    68%
normalization/transform_catalog/catalog_processor.py                147     80    46%
normalization/transform_catalog/transform.py                         61     38    38%
normalization/transform_catalog/stream_processor.py                 589    394    33%
-------------------------------------------------------------------------------------
TOTAL                                                              1437    624    57%

Build Passed

Test summary info:

All Passed

@tuliren
Copy link
Contributor

tuliren commented Sep 26, 2022

/test connector=connectors/destination-s3

🕑 connectors/destination-s3 https://github.com/airbytehq/airbyte/actions/runs/3124228368
✅ connectors/destination-s3 https://github.com/airbytehq/airbyte/actions/runs/3124228368
No Python unittests run

Build Passed

Test summary info:

All Passed

@tuliren
Copy link
Contributor

tuliren commented Sep 26, 2022

/test connector=connectors/destination-bigquery

🕑 connectors/destination-bigquery https://github.com/airbytehq/airbyte/actions/runs/3124294249
✅ connectors/destination-bigquery https://github.com/airbytehq/airbyte/actions/runs/3124294249
Python tests coverage:

Name                                                              Stmts   Miss  Cover
-------------------------------------------------------------------------------------
normalization/transform_config/__init__.py                            2      0   100%
normalization/transform_catalog/reserved_keywords.py                 14      0   100%
normalization/transform_catalog/__init__.py                           2      0   100%
normalization/destination_type.py                                    14      0   100%
normalization/__init__.py                                             4      0   100%
normalization/transform_catalog/destination_name_transformer.py     166      8    95%
normalization/transform_catalog/table_name_registry.py              174     34    80%
normalization/transform_config/transform.py                         191     49    74%
normalization/transform_catalog/utils.py                             51     14    73%
normalization/transform_catalog/dbt_macro.py                         22      7    68%
normalization/transform_catalog/catalog_processor.py                147     80    46%
normalization/transform_catalog/transform.py                         61     38    38%
normalization/transform_catalog/stream_processor.py                 589    394    33%
-------------------------------------------------------------------------------------
TOTAL                                                              1437    624    57%

Build Passed

Test summary info:

All Passed

@tuliren
Copy link
Contributor

tuliren commented Sep 26, 2022

/test connector=connectors/destination-snowflake

🕑 connectors/destination-snowflake https://github.com/airbytehq/airbyte/actions/runs/3124317178
✅ connectors/destination-snowflake https://github.com/airbytehq/airbyte/actions/runs/3124317178
Python tests coverage:

Name                                                              Stmts   Miss  Cover
-------------------------------------------------------------------------------------
normalization/transform_config/__init__.py                            2      0   100%
normalization/transform_catalog/reserved_keywords.py                 14      0   100%
normalization/transform_catalog/__init__.py                           2      0   100%
normalization/destination_type.py                                    14      0   100%
normalization/__init__.py                                             4      0   100%
normalization/transform_catalog/destination_name_transformer.py     166      8    95%
normalization/transform_catalog/table_name_registry.py              174     34    80%
normalization/transform_config/transform.py                         191     49    74%
normalization/transform_catalog/utils.py                             51     14    73%
normalization/transform_catalog/dbt_macro.py                         22      7    68%
normalization/transform_catalog/catalog_processor.py                147     80    46%
normalization/transform_catalog/transform.py                         61     38    38%
normalization/transform_catalog/stream_processor.py                 589    394    33%
-------------------------------------------------------------------------------------
TOTAL                                                              1437    624    57%

Build Passed

Test summary info:

All Passed

@tuliren
Copy link
Contributor

tuliren commented Sep 26, 2022

/test connector=connectors/destination-gcs

🕑 connectors/destination-gcs https://github.com/airbytehq/airbyte/actions/runs/3124326322
✅ connectors/destination-gcs https://github.com/airbytehq/airbyte/actions/runs/3124326322
No Python unittests run

Build Passed

Test summary info:

All Passed

@tuliren
Copy link
Contributor

tuliren commented Sep 26, 2022

/test connector=connectors/destination-redshift

🕑 connectors/destination-redshift https://github.com/airbytehq/airbyte/actions/runs/3124326503
✅ connectors/destination-redshift https://github.com/airbytehq/airbyte/actions/runs/3124326503
Python tests coverage:

Name                                                              Stmts   Miss  Cover
-------------------------------------------------------------------------------------
normalization/transform_config/__init__.py                            2      0   100%
normalization/transform_catalog/reserved_keywords.py                 14      0   100%
normalization/transform_catalog/__init__.py                           2      0   100%
normalization/destination_type.py                                    14      0   100%
normalization/__init__.py                                             4      0   100%
normalization/transform_catalog/destination_name_transformer.py     166      8    95%
normalization/transform_catalog/table_name_registry.py              174     34    80%
normalization/transform_config/transform.py                         191     49    74%
normalization/transform_catalog/utils.py                             51     14    73%
normalization/transform_catalog/dbt_macro.py                         22      7    68%
normalization/transform_catalog/catalog_processor.py                147     80    46%
normalization/transform_catalog/transform.py                         61     38    38%
normalization/transform_catalog/stream_processor.py                 589    394    33%
-------------------------------------------------------------------------------------
TOTAL                                                              1437    624    57%

Build Passed

Test summary info:

All Passed

@tuliren
Copy link
Contributor

tuliren commented Sep 26, 2022

/test connector=connectors/destination-databricks

🕑 connectors/destination-databricks https://github.com/airbytehq/airbyte/actions/runs/3124340116
✅ connectors/destination-databricks https://github.com/airbytehq/airbyte/actions/runs/3124340116
No Python unittests run

Build Passed

Test summary info:

All Passed

@tuliren
Copy link
Contributor

tuliren commented Sep 26, 2022

All integration tests have passed. I will merge this PR, and publish the connector in a separate one.

@tuliren tuliren merged commit 3494405 into airbytehq:master Sep 26, 2022
@tuliren tuliren deleted the feature-r2-destination branch September 26, 2022 02:20
@tuliren tuliren mentioned this pull request Sep 26, 2022
18 tasks
@tuliren
Copy link
Contributor

tuliren commented Sep 26, 2022

@kananindzya, the R2 connector has been published to docker:
https://hub.docker.com/r/airbyte/destination-r2/tags

Thanks a lot for your contribution.

Don't forget to remove me from your repo.

robbinhan pushed a commit to robbinhan/airbyte that referenced this pull request Sep 29, 2022
* added destination-r2 spec

added base-java-s3 module

updated common s3 lib

local

changed dependency of s3 in all realted modules

minor style fixes

added common module for s3 integration tests

* fix configuration for r2 integration tests

* fix configuration for r2 integration tests

* added docs for destination-r2

* minor import fixes

* mark test as disabled

* fixed imports in destination-snowflake

* restored styling task

* added tests for S3DEstinationConfig

* added upload threads count configuration for r2(due to limitations)

* deleted parquet format type

* Fix import in gcs

* Fix import in redshift

* Fix import in snowflake

* Fix one more import in gcs

* Fix one more import in redshift

* Fix import in databricks

Co-authored-by: Liren Tu <tuliren.git@outlook.com>
jhammarstedt pushed a commit to jhammarstedt/airbyte that referenced this pull request Oct 31, 2022
* added destination-r2 spec

added base-java-s3 module

updated common s3 lib

local

changed dependency of s3 in all realted modules

minor style fixes

added common module for s3 integration tests

* fix configuration for r2 integration tests

* fix configuration for r2 integration tests

* added docs for destination-r2

* minor import fixes

* mark test as disabled

* fixed imports in destination-snowflake

* restored styling task

* added tests for S3DEstinationConfig

* added upload threads count configuration for r2(due to limitations)

* deleted parquet format type

* Fix import in gcs

* Fix import in redshift

* Fix import in snowflake

* Fix one more import in gcs

* Fix one more import in redshift

* Fix import in databricks

Co-authored-by: Liren Tu <tuliren.git@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment