Kothapalli Venkata Avinash
02/24/2026, 3:02 PMkapa.ai
02/24/2026, 3:02 PMInvalid operation error for the Salesforce source, so I can’t say with confidence what the exact root cause is.
From the available Salesforce-related docs and threads, the main documented failure patterns are:
• Eventual consistency / missing records, fixed by increasing the Lookback Window in the Salesforce source config. This affects missing or duplicated records, not an “Invalid operation” failure. [Missing records]
• Query timeouts (QUERY_TIMEOUT) on large objects, which show a clear timeout message and are related to long-running SOQL queries, not “Invalid operation”. [QUERY_TIMEOUT]
• Other Salesforce issues like Unicode decode errors, record caps, or cursor-field problems, but none reference an “Invalid operation” error on the Contact stream. [Salesforce limit records; Cannot use LastModifiedDate]
Because “Invalid operation” is not described in these sources, the best I can suggest based on them is:
1. Check the full sync logs around the error to see if Salesforce returns a more specific API error code/message (e.g., QUERY_TIMEOUT, permission error, or request limit). [Salesforce troubleshooting]
2. Confirm:
◦ The Contact object is still accessible and hasn’t had permissions restricted.
◦ Your cursor field (e.g., SystemModstamp or LastModifiedDate) and sync mode are valid for the Contact stream. [Cannot use LastModifiedDate]
3. If you see missing or duplicated records around the time of failure, consider increasing the Lookback Window in the Salesforce source configuration. [Missing records]
To get more specific help, you’d need to share the exact log snippet around:
• Exception while syncing stream Contact
• The underlying Salesforce API response (if present)
Without that, the knowledge sources don’t provide enough detail to precisely diagnose an “Invalid operation” error. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Kothapalli Venkata Avinash
02/24/2026, 3:04 PMkapa.ai
02/24/2026, 3:04 PMTypeError('Invalid operation') for the Salesforce Contact stream specifically, but they do show the same “Concurrent read failure” pattern you’re seeing, coming from the CDK’s concurrent reader. [Gorgias rate limit; HubSpot concurrent read]
From those issues we can say:
• Concurrent read failure is a wrapper error: the real cause is in the per‑stream worker, but the top‑level CDK only surfaces AirbyteTracedException: Concurrent read failure. [Gorgias rate limit; Zendesk concurrent read]
• In other connectors, the underlying cause has been things like rate limits or 401 auth errors, which then bubble up as a concurrent read failure. [Gorgias rate limit; Amazon Ads 401]
However, none of the provided Salesforce docs or forum threads mention a TypeError('Invalid operation') or show a stack trace inside the Salesforce stream worker itself, so I can’t say exactly what “Invalid operation” refers to in the Salesforce connector code.
Given these limitations, here’s what you can concretely do next, based on how similar issues are handled:
1. Get the inner error for the Contact stream
The important part is before the Concurrent read failure in the logs, where the worker for Contact logs its own exception. In other connectors, that’s where you see the real cause (e.g., rate limit, 401, invalid query). [Gorgias rate limit; HubSpot concurrent read]
◦ Re-run the sync with debug/verbose logs and search for:
▪︎ Exception while syncing stream Contact
▪︎ or any traceback that mentions Contact before the concurrent read failure.
2. Try disabling concurrency for isolation
The knowledge sources show that concurrency is what wraps the underlying error into Concurrent read failure. [Gorgias rate limit; Zendesk concurrent read]
◦ If your Airbyte UI / source config exposes a “Max workers” / concurrency setting for Salesforce (similar to other connectors), set it to 1 and re-run:
▪︎ This often makes the connector run in a single thread and surface the raw TypeError('Invalid operation') without the concurrent wrapper, which is much easier to debug.
3. Check for known Salesforce‑specific issues
From the Salesforce docs and threads we have:
◦ BULK vs REST API behavior: some objects or field types can’t be handled by BULK and fall back to REST, or vice versa. [Usage of BULK vs REST]
◦ QUERY_TIMEOUT and other HTTP 400/403 errors are handled specially; some are logged and skipped instead of failing the whole sync. [QUERY_TIMEOUT handling; Salesforce error handling snippet]
◦ But none of these mention a TypeError or “Invalid operation” string.
Because of that, I can’t reliably map your Invalid operation to a specific Salesforce limitation or field type from the docs.
4. When to open an issue
Since the error is happening only on Contact and is surfaced as a Python TypeError inside a concurrent read, and there’s no mention of this in the Salesforce docs or forum posts, this may be a bug in the current Salesforce connector version.
If, after:
◦ lowering concurrency to 1, and
◦ capturing the full inner traceback for Contact
you still see TypeError('Invalid operation') without a clear Salesforce API error code, I’d recommend opening a GitHub issue for source-salesforce and attaching:
◦ Full logs from the failing sync (with debug if possible)
◦ Airbyte version
◦ Salesforce source connector version
◦ Whether Contact is incremental vs full refresh, and which cursor field you’re using
This is the same path other users followed for Salesforce issues like QUERY_TIMEOUT and unsupported BULK entities. [QUERY_TIMEOUT issue; Bulk INVALIDENTITY]
Because the knowledge sources don’t document TypeError('Invalid operation') for Salesforce, I can’t give a precise root cause, but the steps above should help you surface the underlying error and, if needed, provide enough detail for the Airbyte team to investigate. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.