Summary
A recent airbyte-cdk update introduced a breaking change that removes the MessageRepresentationAirbyteTracedErrors class from airbyte_cdk.sources.streams.http.http_client. This silently breaks a number of published connectors — including the latest released versions — and leaves Python users with no straightforward path to restore functionality, even by pinning older connector versions.
Affected Change
PR #927 in airbyte-python-cdk removes MessageRepresentationAirbyteTracedErrors, which is imported by several connectors (e.g. airbyte-source-github).
Steps to Reproduce
pip install airbyte-source-github
source-github
Observed error:
Traceback (most recent call last):
File ".../bin/source-github", line 3, in <module>
from source_github.run import run
File ".../source_github/__init__.py", line 25, in <module>
from .source import SourceGithub
File ".../source_github/source.py", line 12, in <module>
from airbyte_cdk.sources.streams.http.http_client import MessageRepresentationAirbyteTracedErrors
ImportError: cannot import name 'MessageRepresentationAirbyteTracedErrors' from 'airbyte_cdk.sources.streams.http.http_client'
This reproduces with the latest published version of airbyte-source-github, meaning there is no up-to-date release that users can upgrade to.
Why Pinning an Older Connector Version Doesn't Help
Connector packages do not pin airbyte-cdk to a specific version. As a result, installing any older connector release will still resolve the latest SDK at install time, which also lacks MessageRepresentationAirbyteTracedErrors. Users are effectively stuck with no working version available via pip.
Proposed Solutions
Short-term (immediate):
Restore MessageRepresentationAirbyteTracedErrors in airbyte_cdk.sources.streams.http.http_client, ideally with a deprecation warning pointing to the new location if it was moved rather than deleted. This unblocks all currently broken connectors without requiring connector-side changes.
Long-term (systemic fix):
Pin airbyte-cdk to a specific version range (or at minimum an upper-bound constraint) in each connector's dependencies. Currently, any breaking SDK change cascades instantly across the entire connector ecosystem, and Python users have no viable rollback option. Strict pinning would contain the blast radius of future SDK changes and give connector maintainers time to migrate in a controlled way.
Impact
- Affects all connectors that import
MessageRepresentationAirbyteTracedErrors
- Latest connector releases are broken with no workaround for end users
- Breaks standard Python usage (
pip install) with no pin-based escape hatch
Thank you for your attention to this — the Airbyte connector ecosystem is widely used and even small SDK hygiene improvements here would have a meaningful positive impact for the community.
Internal Tracking: https://github.com/airbytehq/oncall/issues/11850
Summary
A recent airbyte-cdk update introduced a breaking change that removes the
MessageRepresentationAirbyteTracedErrorsclass fromairbyte_cdk.sources.streams.http.http_client. This silently breaks a number of published connectors — including the latest released versions — and leaves Python users with no straightforward path to restore functionality, even by pinning older connector versions.Affected Change
PR #927 in
airbyte-python-cdkremovesMessageRepresentationAirbyteTracedErrors, which is imported by several connectors (e.g.airbyte-source-github).Steps to Reproduce
Observed error:
This reproduces with the latest published version of
airbyte-source-github, meaning there is no up-to-date release that users can upgrade to.Why Pinning an Older Connector Version Doesn't Help
Connector packages do not pin
airbyte-cdkto a specific version. As a result, installing any older connector release will still resolve the latest SDK at install time, which also lacksMessageRepresentationAirbyteTracedErrors. Users are effectively stuck with no working version available via pip.Proposed Solutions
Short-term (immediate):
Restore
MessageRepresentationAirbyteTracedErrorsinairbyte_cdk.sources.streams.http.http_client, ideally with a deprecation warning pointing to the new location if it was moved rather than deleted. This unblocks all currently broken connectors without requiring connector-side changes.Long-term (systemic fix):
Pin
airbyte-cdkto a specific version range (or at minimum an upper-bound constraint) in each connector's dependencies. Currently, any breaking SDK change cascades instantly across the entire connector ecosystem, and Python users have no viable rollback option. Strict pinning would contain the blast radius of future SDK changes and give connector maintainers time to migrate in a controlled way.Impact
MessageRepresentationAirbyteTracedErrorspip install) with no pin-based escape hatchThank you for your attention to this — the Airbyte connector ecosystem is widely used and even small SDK hygiene improvements here would have a meaningful positive impact for the community.
Internal Tracking: https://github.com/airbytehq/oncall/issues/11850