<@U04S8PLJWMT> why does airbyte force non-legacy s...
# replication-ask-ai
o
@kapa.ai why does airbyte force non-legacy state messages in Airbyte 2.0+
k
Airbyte 2.0+ requires non‑legacy state because the platform is standardizing on the newer Stream and Global state types and deprecating Legacy state: - New connectors **must use per‑stream or global state**; no new connectors should be created using Legacy state. This is enforced by the CDK and is a core “State Principle.” [[State principles](https://docs.airbyte.com/platform/understanding-airbyte/airbyte-protocol#state-principles)] - Stream/Global state unlock: - Per‑stream configuration and reset (reset one stream without affecting others). [[State types](https://docs.airbyte.com/platform/understanding-airbyte/airbyte-protocol#state-types)] - Per‑stream replication isolation and parallelization, which is not possible with Legacy state. [[State types](https://docs.airbyte.com/platform/understanding-airbyte/airbyte-protocol#state-types)] - Legacy state is kept only for backwards compatibility and is explicitly planned to be removed once all remaining cases are migrated: “All current legacy cases are being ported to stream or global. Once they are, it will be removed.” [[State types](https://docs.airbyte.com/platform/understanding-airbyte/airbyte-protocol#state-types)] So in 2.0+ Airbyte “forces” non‑legacy state to enable per‑stream/global operations, better parallelism, and to phase out the older, opaque Legacy state format.
o
I say forces because the orchestrator is failing. Is that expected
@kapa.ai I say "forces" because the orchestrator is failing. Is that expected
k
A message from kapa.ai
The knowledge sources describe how state should work, but they do not explicitly say that the Airbyte 2.x orchestrator will hard‑fail if a connector emits
LEGACY
state, so I can’t confirm that this failure is expected behavior from the docs alone. What the docs do state: - New sources **must use per‑stream or global state**; no new connectors should be created using Legacy state, and this is enforced via the CDK. [[State principles](https://docs.airbyte.com/platform/understanding-airbyte/airbyte-protocol#state-principles)] -
LEGACY
is kept only for backwards compatibility and is planned to be removed once all remaining cases are migrated. [[State types](https://docs.airbyte.com/platform/understanding-airbyte/airbyte-protocol#state-types)] -
state_type
is required; if not set, it is assumed to be
LEGACY
. [[AirbyteStateMessage](https://docs.airbyte.com/platform/understanding-airbyte/airbyte-protocol#airbytestatemessage)] From this, it’s clear Airbyte strongly prefers non‑legacy state and enforces that for new connectors, but the docs don’t clearly document orchestrator failures when
LEGACY
is used. So: - If you’re building a new connector, the orchestrator/CDK rejecting
LEGACY
is consistent with the documented principles. - If you’re running an existing legacy connector and the orchestrator now fails, that behavior is not clearly documented in these sources. If you can share the exact error message, I can help interpret it in the context of these state rules.