- Notifications
You must be signed in to change notification settings - Fork 4.9k
🐛 Source Stripe: do not emit empty state messages #30660
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
🐛 Source Stripe: do not emit empty state messages #30660
Conversation
| The latest updates on your projects. Learn more about Vercel for Git ↗︎ 1 Ignored Deployment
|
Before Merging a Connector Pull RequestWow! What a great pull request you have here! 🎉 To merge this PR, ensure the following has been done/considered for each connector added or updated:
If the checklist is complete, but the CI check is failing,
|
|
| Step | Result |
|---|---|
| Connector package install | ✅ |
| Build source-stripe docker image for platform linux/x86_64 | ✅ |
| Unit tests | ✅ |
| Acceptance tests | ❌ |
| Code format checks | ✅ |
| Validate airbyte-integrations/connectors/source-stripe/metadata.yaml | ✅ |
| Connector version semver check | ✅ |
| Connector version increment check | ✅ |
| QA checks | ✅ |
☁️ View runs for commit in Dagger Cloud
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=source-stripe test |
| Step | Result |
|---|---|
| Connector package install | ✅ |
| Build source-stripe docker image for platform linux/x86_64 | ✅ |
| Unit tests | ✅ |
| Acceptance tests | ✅ |
| Code format checks | ✅ |
| Validate airbyte-integrations/connectors/source-stripe/metadata.yaml | ✅ |
| Connector version semver check | ✅ |
| Connector version increment check | ✅ |
| QA checks | ✅ |
☁️ View runs for commit in Dagger Cloud
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=source-stripe test
lazebnyi left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
airbyte-integrations/connectors/source-stripe/source_stripe/streams.py Outdated Show resolved Hide resolved
…reams.py Co-authored-by: Serhii Lazebnyi <53845333+lazebnyi@users.noreply.github.com>
|
| Step | Result |
|---|---|
| Connector package install | ✅ |
| Build source-stripe docker image for platform linux/x86_64 | ✅ |
| Unit tests | ✅ |
| Acceptance tests | ✅ |
| Code format checks | ❌ |
| Validate airbyte-integrations/connectors/source-stripe/metadata.yaml | ✅ |
| Connector version semver check | ✅ |
| Connector version increment check | ✅ |
| QA checks | ✅ |
☁️ View runs for commit in Dagger Cloud
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=source-stripe test |
| Step | Result |
|---|---|
| Connector package install | ✅ |
| Build source-stripe docker image for platform linux/x86_64 | ✅ |
| Unit tests | ✅ |
| Acceptance tests | ✅ |
| Code format checks | ✅ |
| Validate airbyte-integrations/connectors/source-stripe/metadata.yaml | ✅ |
| Connector version semver check | ✅ |
| Connector version increment check | ✅ |
| QA checks | ✅ |
☁️ View runs for commit in Dagger Cloud
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=source-stripe test
maxi297 left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is a couple of things I don't understand enough to give approval. With the answer to my question, I should be able to approve
| current_cursor_value = record.get(self.legacy_cursor_field, pendulum.now().int_timestamp) | ||
| | ||
| # yield the record with the added cursor_field | ||
| yield record | {self.cursor_field: current_cursor_value} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Defaulting on now seems odd to me. Is it only some records in a stream that might not have self.cursor_field and self.legacy_cursor_field in the record? I would be afraid of the following series of events:
- Consume a record #1
self.cursor_fieldandself.legacy_cursor_fieldnot in the record so we usenow - checkpointing from AbstractSource
- Consume a record #2 with
self.cursor_fieldorself.legacy_cursor_fieldless thannow - Sync crash
In that case, we would start the next sync at the now when we consumed record #1 but would potentially miss record #2 and others. The only reason allow for now as the default is if all the records for the same stream will not have self.legacy_cursor_field as a field. Can you confirm?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@maxi297 yes, the case here is some streams that do not have a cursor value at all when running in a full refresh mode (or initial incremental sync), so the consequences you described are not relevant
| yield record | ||
| if self.cursor_field in record: | ||
| yield record | ||
| continue # Skip the rest of the loop iteration |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: Would it be more readable to use the else statement instead of having to add a comment?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
matter of taste :) I prefer early exit/continue over else statements
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
but if you insist, I can change it of course
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are a couple of resources regarding cognitive complexity recommending to avoid "jumps to" labels. One example is Sonar I personally agree with these but I'll not enforce it if the maintainers of the code prefer otherwise
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you! I will leave it here as is, but take into account in the future updates
airbyte-integrations/connectors/source-stripe/unit_tests/test_streams.py Show resolved Hide resolved
| @maxi297 can you please take a look at the comments |
maxi297 left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given the added information by @davydov-d, I have enough information to approve this change
What
Emit non-empty state messages
https://github.com/airbytehq/oncall/issues/3004
How
🚨 User Impact 🚨
No impact