-
Notifications
You must be signed in to change notification settings - Fork 5k
Open
Labels
area/connectorsConnector related issuesConnector related issuesautoteamcommunityneeds-triageteam/extensibilitytype/bugSomething isn't workingSomething isn't working
Description
Connector Name
source-outreach
Connector Version
1.1.19
What step the error happened?
During the sync
Relevant information
Very similar to this issue that was happening in the Hubspot Connector
connections sometimes fail mid-sync while syncing large streams (like calls). The simplified error is Failure in source: Unauthorized. Please ensure you are authenticated correctly, but the actual key underlying error is using an expired temporary token.
It seems like there's a race condition where the request is sometimes sent before the Oauth temporary token is renewed and since 403 errors are not retriable the entire sync fails.
Relevant log output
2025-10-31 05:21:51 replication-orchestrator INFO Failures: [ {
"failureOrigin" : "source",
"failureType" : "config_error",
"internalMessage" : "'GET' request to 'https://api.outreach.io/api/v2/mailings?count=false&filter%5BupdatedAt%5D%5Bgte%5D=1990-01-01T00%3A00%3A00.000Z&newFilterSyntax=true&page%5Bafter%5D=eyJjbiI6IkFwaVYyOjpNYWlsaW5nc0NvbnRyb2xsZXIiLCJzcCI6InVwZGF0ZWRBdCIsInN2IjpbIjIwMjQtMDEtMTFUMTI6NDc6MjYuMDAwWiJdLCJpZCI6MTQzMzAzMywidiI6MX0%3D&page%5Bsize%5D=100&sort=updatedAt' failed with status code '401' and error message: 'Please get a new access token and try again.'. Request (body): 'None'. Response (body): '{'id': 'expiredAccessToken', 'title': 'Expired Access Token', 'detail': 'Please get a new access token and try again.'}'. Response (headers): '{'Content-Type': 'application/vnd.api+json', 'Content-Length': '112', 'Connection': 'keep-alive', 'Date': 'Thu, 30 Oct 2025 18:21:25 GMT', 'Cache-Control': 'no-cache', 'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding, Origin', 'X-Ratelimit-Limit': '10000', 'X-Ratelimit-Remaining': '1129', 'X-Ratelimit-Reset': '1761851678', 'X-Request-Id': 'eb6b6588-ddb5-4b48-b86d-744f79329584', 'X-Runtime': '0.001325', 'X-Cache': 'Error from cloudfront', 'Via': '1.1 d49bde7225e80ca0dc457ff2b8b4343e.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'SEA900-P9', 'X-Amz-Cf-Id': 'B-nvyRef0-YNPJ3nCW8jo0yXg-CRvH-OnJ1nI9iCD5AhJ2_N9cZ-JA=='}'.",
"externalMessage" : "HTTP Status Code: 401. Error: Unauthorized. Please ensure you are authenticated correctly.",
"metadata" : {
"attemptNumber" : 0,
"jobId" : 8,
"from_trace_message" : true,
"connector_command" : "read"
},
"stacktrace" : "Traceback (most recent call last):\n File \"/usr/local/lib/python3.13/site-packages/airbyte_cdk/sources/streams/concurrent/partition_reader.py\", line 79, in process_partition\n for record in partition.read():\n ~~~~~~~~~~~~~~^^\n File \"/usr/local/lib/python3.13/site-packages/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py\", line 91, in read\n for stream_data in self._retriever.read_records(\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^\n self._schema_loader.get_json_schema(), self._stream_slice\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n ):\n ^\n File \"/usr/local/lib/python3.13/site-packages/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py\", line 544, in read_records\n for stream_data in self._read_pages(record_generator, self.state, _slice):\n ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.13/site-packages/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py\", line 428, in _read_pages\n response = self._fetch_next_page(stream_state, stream_slice, next_page_token)\n File \"/usr/local/lib/python3.13/site-packages/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py\", line 338, in _fetch_next_page\n return self.requester.send_request(\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~^\n path=self._paginator_path(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n ...<27 lines>...\n log_formatter=self.log_formatter,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/usr/local/lib/python3.13/site-packages/airbyte_cdk/sources/declarative/requesters/http_requester.py\", line 458, in send_request\n request, response = self._http_client.send_request(\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^\n http_method=self.get_method().value,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n ...<21 lines>...\n exit_on_rate_limit=self._exit_on_rate_limit,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/usr/local/lib/python3.13/site-packages/airbyte_cdk/sources/streams/http/http_client.py\", line 578, in send_request\n response: requests.Response = self._send_with_retry(\n ~~~~~~~~~~~~~~~~~~~~~^\n request=request,\n ^^^^^^^^^^^^^^^^\n ...<2 lines>...\n exit_on_rate_limit=exit_on_rate_limit,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/usr/local/lib/python3.13/site-packages/airbyte_cdk/sources/streams/http/http_client.py\", line 300, in _send_with_retry\n response = backoff_handler(rate_limit_backoff_handler(user_backoff_handler))(\n request,\n ...<2 lines>...\n exit_on_rate_limit=exit_on_rate_limit,\n ) # type: ignore # mypy can't infer that backoff_handler wraps _send\n File \"/usr/local/lib/python3.13/site-packages/backoff/_sync.py\", line 105, in retry\n ret = target(*args, **kwargs)\n File \"/usr/local/lib/python3.13/site-packages/backoff/_sync.py\", line 105, in retry\n ret = target(*args, **kwargs)\n File \"/usr/local/lib/python3.13/site-packages/backoff/_sync.py\", line 105, in retry\n ret = target(*args, **kwargs)\n File \"/usr/local/lib/python3.13/site-packages/airbyte_cdk/sources/streams/http/http_client.py\", line 379, in _send\n self._handle_error_resolution(\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^\n response=response,\n ^^^^^^^^^^^^^^^^^^\n ...<3 lines>...\n exit_on_rate_limit=exit_on_rate_limit,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/usr/local/lib/python3.13/site-packages/airbyte_cdk/sources/streams/http/http_client.py\", line 469, in _handle_error_resolution\n raise MessageRepresentationAirbyteTracedErrors(\n ...<3 lines>...\n )\nairbyte_cdk.sources.streams.http.http_client.MessageRepresentationAirbyteTracedErrors: HTTP Status Code: 401. Error: Unauthorized. Please ensure you are authenticated correctly.\n",
"timestamp" : 1761848485238,
"streamDescriptor" : {
"name" : "mailings"
}Contribute
- Yes, I want to contribute
Metadata
Metadata
Assignees
Labels
area/connectorsConnector related issuesConnector related issuesautoteamcommunityneeds-triageteam/extensibilitytype/bugSomething isn't workingSomething isn't working