fix(source-twilio): Resume messages from saved cursor#78358
fix(source-twilio): Resume messages from saved cursor#78358devin-ai-integration[bot] wants to merge 3 commits into
Conversation
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
|
Note 📝 PR Converted to Draft More info...Thank you for creating this PR. As a policy to protect our engineers' time, Airbyte requires all PRs to be created first in draft status. Your PR has been automatically converted to draft status in respect for this policy. As soon as your PR is ready for formal review, you can proceed to convert the PR to "ready for review" status by clicking the "Ready for review" button at the bottom of the PR page. To skip draft status in future PRs, please include |
👋 Greetings, Airbyte Team Member!Here are some helpful tips and reminders for your convenience. 💡 Show Tips and TricksPR Slash CommandsAirbyte Maintainers (that's you!) can execute the following slash commands on your PR:
📚 Show Repo GuidanceHelpful Resources
|
|
Deploy preview for airbyte-docs ready!
Deployed with vercel-action |
|
Co-Authored-By: Rajath Sinha <rajath.sinha@airbyte.io>
|
Fix Validation EvidenceStatus: Regression attempt 3 is running a targeted Current Findings
Evidence PlanProving criteria: A regression comparison where target Disproving criteria: The target still resumes Testing strategy: Regression tests first and likely sufficient. Ranked cases:
Regression attempt 1: https://github.com/airbytehq/airbyte-ops-mcp/actions/runs/26287096007 Attempt 1 result: failed before comparison because the control image Regression attempt 2: https://github.com/airbytehq/airbyte-ops-mcp/actions/runs/26287198348 Regression attempt 2 interim: SPEC, CHECK, and DISCOVER both succeeded with no regression against control Regression attempt 2 result: SPEC/CHECK/DISCOVER both succeeded with no regression, but all-stream READ hung and was cancelled before producing READ artifacts. |
|
↪️ Triggering Reason: Draft connector fix PR has connector tests passing and no prior prove-fix result, so validation is the next Hydra stage. |
|
|
Superseded by #78359, which contains the same final diff plus the required |
Fix Proven SuccessfullyEvidence Summary
Outcome Next Steps Detailed validation notes
|
What
Resolves https://github.com/airbytehq/oncall/issues/12689:
Fix the Twilio
messagesstream so incremental syncs resume from the saved globaldate_sentcursor instead of an older per-partition cursor.How
global_substream_cursorformessages, which uses one account-level time cursor for the stream and avoids continuing to track stale per-partition cursors.messagesstate that already contains a stream-levelstate.date_sentvalue into the global cursor shape expected by the concurrent cursor.source-twilioto1.0.1and add a changelog entry.Declarative-First Evaluation
source-twiliois a low-code connector with custom components (language:manifest-only,cdk:low-code, pluscomponents.py). The runtime behavior change uses the declarativeDatetimeBasedCursoroptionglobal_substream_cursor, which is sufficient for futuremessagesstate emission. Existing mixed legacy state still needs normalization before the declarative cursor reads it, so this PR extends the existingCustomStateMigration; declarative alternatives such asRecordFilter,AddFields/RemoveFields, transformations,$refoverrides, and paginator/requester settings do not migrate persisted stream state.Breaking Change Evaluation
Not breaking. The diff does not remove or rename streams, fields, primary keys, cursor fields, or config fields. The stream state shape changes to a global cursor, but the PR includes a state migration for the legacy mixed state shape, so users should not need manual migration action. Patch version
1.0.1is appropriate; progressive rollout is disabled for this connector.Test Coverage
poetry --directory /home/ubuntu/repos/airbyte/airbyte-integrations/connectors/source-twilio/unit_tests run pytest /home/ubuntu/repos/airbyte/airbyte-integrations/connectors/source-twilio/unit_tests -x— 20 passed.git -C /home/ubuntu/repos/airbyte diff --check origin/master...HEAD— passed.airbyte/source-twilio:1.0.1-preview.f32b099exists and publish workflow succeeded: https://github.com/airbytehq/airbyte/actions/runs/26287051473messages: https://github.com/airbytehq/airbyte-ops-mcp/actions/runs/26287707628Review guide
airbyte-integrations/connectors/source-twilio/components.pyairbyte-integrations/connectors/source-twilio/manifest.yamlairbyte-integrations/connectors/source-twilio/unit_tests/test_streams.pyairbyte-integrations/connectors/source-twilio/metadata.yamldocs/integrations/sources/twilio.mdUser Impact
Twilio
messagesincremental syncs should resume from the stream-level saveddate_sentcursor and avoid re-reading old message history when stale partition state is present.Can this PR be safely reverted and rolled back?
Original Devin session
Verification Devin session
Requested by: Rajath sinha (@rajathsinhaa)