## What
<!--
* Describe what the change is solving. Link all GitHub issues related to
this change.
-->
OC Issue: https://github.com/airbytehq/oncall/issues/9057
The Google Sheets API is returning a 500 response when requesting the
GridData for certain sheets. This is causing us to fail CHECK for some
connectors. We confirmed with the user that in these situations, the
data in those sheets is unstructured, and they likely don't want to sync
it, but still want to sync other sheets in the spreadsheet.
Due to this, we should be okay with skipping these sheets altogether.
To detect if it is a real 500 error or bad grid data, we can keep the
existing backoff for 500's. On the last attempt, we will retry with
`"includeGridData=false"` in the parameter. If we get a 200 response,
the sheet is highly likely to have bad/corrupted data. If we still get a
500, then there likely are genuine server errors going on with the API,
and in that case, we will default to the 500 server error being raised.
## How
<!--
* Describe how code changes achieve the solution.
-->
In the manifest.yaml we need to add a custom error handler that can do
this in the `components_resolver_retriever`. The existing error handler
is a DefaultErrorHandler, with multiple response_filters:
[single_sheet_response_error_filters](663615eee6/airbyte-integrations/connectors/source-google-sheets/manifest.yaml (L328-L331));
which use `ExponentialBackoffStrategy`
We cannot refactor this into a CompositeErrorHandler to keep the
existing response_filters, and add on the CustomErrrorHandler due to
lack of support in the CDK
[here](7ab013d412/airbyte_cdk/sources/declarative/declarative_component_schema.yaml (L391-L393)).
Due to this, the existing
[DefaultErrorHandler](663615eee6/airbyte-integrations/connectors/source-google-sheets/manifest.yaml (L234-L239)),
should be refactored into the new custom error handler.
This is done in `GridDataErrorHandler`, existing tests are left
unchanged, indicating the refactoring was done correctly.
We also added some new tests for the 500 error handling.
## Review guide
<!--
1. `x.py`
2. `y.py`
-->
## User Impact
<!--
* What is the end result perceived by the user?
* If there are negative side effects, please list them.
-->
## Can this PR be safely reverted and rolled back?
<!--
* If unsure, leave it blank.
-->
- [X ] YES 💚
- [ ] NO ❌
---------
Co-authored-by: maxime.c <maxime@airbyte.io>
# Update source-google-sheets
This PR was autogenerated by running `airbyte-ci connectors
--name=source-google-sheets up_to_date --pull`
We've set the `auto-merge` label on it, so it will be automatically
merged if the CI pipelines pass.
If you don't want to merge it automatically, please remove the
`auto-merge` label.
Please reach out to the Airbyte Connector Tooling team if you have any
questions or concerns.
## Operations
- Upgrade the base image to the latest version in metadata.yaml:
Successful
- PATCH bump source-google-sheets version to 0.12.9: Successful
- Build source-google-sheets docker image for platform(s) linux/amd64,
linux/arm64: Successful
- Get dependency updates: Successful
- Create or update pull request on Airbyte repository: Successful
- Add changelog entry: Successful
## Dependency updates
We use [`syft`](https://github.com/anchore/syft) to generate a SBOM for
the latest connector version and the one from the PR.
It allows us to spot the dependencies that have been updated at all
levels and for all types of dependencies (system, python, java etc.).
Here are the dependencies that have been updated compared to
`airbyte/source-google-sheets:latest`.
Keep in mind that `:latest` does not always match the connector code on
the main branch.
It is the latest released connector image when the head commit of this
branch was created.
| Type | Name | State | Previous Version | New Version |
|------|------|-------|-------------|------------------|
| python | airbyte-cdk | updated | 6.60.12 | **7.3.4** |
| python | anyio | updated | 4.10.0 | **4.11.0** |
| python | cattrs | updated | 24.1.2 | **25.2.0** |
| python | importlib_metadata | updated | 8.0.0 | **8.7.0** |
| python | joblib | updated | 1.5.1 | **1.5.2** |
| python | jsonschema | updated | 4.17.3 | **4.25.1** |
| python | pandas | updated | 2.2.2 | **2.2.3** |
| python | whenever | updated | 0.6.16 | **0.8.8** |
| python | zipp | updated | 3.19.2 | **3.23.0** |
| python | jsonschema-specifications | added | not present |
**2025.4.1** |
| python | referencing | added | not present | **0.36.2** |
| python | rpds-py | added | not present | **0.27.1** |
| python | filelock | removed | 3.18.0 | **not present** |
| python | pyrsistent | removed | 0.20.0 | **not present** |
> [!IMPORTANT]
> **Auto-merge enabled.**
>
> _This PR is set to merge automatically when all requirements are met._
Co-authored-by: octavia-bot-hoard[bot] <230633153+octavia-bot-hoard[bot]@users.noreply.github.com>