manik.jindal
06/26/2026, 9:08 AMkapa.ai
06/26/2026, 9:08 AMsource-mongodb-v2 connector. The issue you're experiencing — where two states are saved with different resume tokens, causing sync failures — was introduced in version 2.0.0 when multiple database support was added.
What's happening The connector saves two separate state entries with different server_id keys:
• One using the normalized connection string (e.g., mongodb___xxx)
• One using the raw connection string (e.g., mongodb://xxx)
The resume token for one of these entries gets stuck and stops updating, eventually becoming invalid once it falls outside the oplog retention window, causing the Saved offset is not valid error. [GitHub Issue]
Fix This bug was fixed in version 2.0.4 (released 2025-09-10), which adds validation to ensure state format consistency. After upgrading, the saved state should contain only a single resume token entry. [Changelog]
Recommended steps:
1. Upgrade the connector to at least v2.0.4 (or the latest available version, currently 2.0.7).
2. After upgrading, if syncs still fail, you may need to manually update the stuck resume token in the connection state — replace the outdated token with the up-to-date one from the other state entry.
3. If the issue persists after upgrading, reset the connection and ensure your oplog retention window is large enough to cover the time between syncs.
Additional recommendations • Ensure your oplog retention is sufficient (at least several days is recommended).
• Keep your sync frequency high enough that the resume token never falls outside the oplog window.
• When using CDC, make sure at least one synced table has regular data movement so the LSN continues to advance. [GitHub Issue]
> Note: Version 2.0.7 further improves resume token validation by using Debezium's own token validation logic to ensure the saved token is present on the server. [Changelog] 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.manik.jindal
06/26/2026, 10:05 AMkapa.ai
06/26/2026, 10:05 AMSaved offset is not valid errors. [GitHub Issue]
• v2.0.7 – The most comprehensive fix, using Debezium's own token validation logic to ensure the saved resume token is actually present on the server before proceeding. Users confirmed this version achieved a stable connection after persistent failures. [GitHub Issue] [Changelog]
Recommendation Upgrade directly to v2.0.7 (the latest). After upgrading:
1. If syncs still fail immediately after the upgrade, reset the connection once to clear the corrupted dual-state.
2. Ensure your oplog retention is large enough to cover the interval between syncs.
3. Make sure syncs run frequently enough that the resume token stays within the oplog window.
> ⚠️ Upgrading alone may not be sufficient if the state is already corrupted — a connection reset may also be needed as a one-time step after upgrading. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.manik.jindal
07/01/2026, 4:28 AMkapa.ai
07/01/2026, 4:28 AMreadAnyDatabase role on admin, which is required to read the oplog. [GitHub Issue]
5. Contact Airbyte Support Since v2.0.7 is the latest known fix and the issue persists, this may be a unique case. It is recommended to:
• Open a new GitHub issue with your logs and state details
• If you have a support package, reach out to Airbyte Support directly 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.manik.jindal
07/01/2026, 6:30 AMkapa.ai
07/01/2026, 6:30 AMINCOMPLETE stream status / TransientErrorException: Some streams were unsuccessful due to a source error) to provide a confident, detailed answer.
However, based on what is documented, here are some relevant pointers:
What This Error Suggests The error indicates that several streams did not complete successfully during the sync. The null namespace prefix on all affected streams (e.g., null.mandate_logs) suggests a potential namespace/database resolution issue, which could be related to the multi-database support introduced in v2.0.0. [Migration Guide]
Things to Check 1. Reconfigure the databases field – Since v2.0.0, the connector uses a databases array instead of a single database field. If this was not properly migrated, streams may show null as their namespace. Verify your source configuration includes the correct database names in the databases array. [Migration Guide]
2. Check CDC permissions – Ensure your MongoDB user has the required changeStream and find privileges on all affected databases. Missing permissions can cause streams to fail mid-sync. [Troubleshooting]
3. Check Oplog retention – If the oplog window is too small, incremental syncs can fail with incomplete stream statuses. Ensure at least 24 hours (ideally 1 week) of oplog retention. [Troubleshooting]
4. Reset the connection – If the state is corrupted, a full connection reset may be needed. [Migration Guide]
Recommended Next Steps Since this is a persistent issue on the latest connector version, I strongly recommend:
• Sharing your full sync logs on the Airbyte GitHub Issues page
• Reaching out to Airbyte Support at support.airbyte.com with your logs and connector configuration details 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.