Lucas Segers
12/11/2025, 5:41 PMkapa.ai
12/11/2025, 5:42 PMStreamThreadException pattern, so I can’t give a connector‑specific fix, but they do show similar NoneType issues and how they arise. From the error: > 'NoneType' object does not support item assignment this usually means your code is doing something like: python stream_slice["some_field"] = value at a point where stream_slice is None (for example, when a slice produced no records or when the CDK passes stream_slice=None). Similar issues appear when code assumes state/slice is always present and tries to use it without checking for None. [[Passing stream results](https://discuss.airbyte.io/t/2701); [Outreach issue](https://github.com/airbytehq/airbyte/issues/55253)] Given the constraints of the docs, here’s what you can safely do: 1. Guard against None stream_slice Wherever you mutate or read stream_slice, first check it: python def path(self, stream_state=None, stream_slice=None, next_page_token=None, **kwargs): if not stream_slice: # fall back to a default path that does not depend on slice return "your/base/path" # safe to use stream_slice now stream_slice["some_field"] = "value" ... Or, if you only need to read from it: python if stream_slice: account_id = stream_slice.get("account_id") This is the same pattern used to fix a NoneType slice in a custom connector where path() assumed stream_slice was always a dict. [[Passing stream results](https://discuss.airbyte.io/t/2701)] 2. Avoid mutating None when a page is empty If your pagination or incremental logic updates state/slice when a page is empty, ensure you handle the “no records” case without writing into `stream_slice`: python if not records: # empty page # update internal state or next_page_token, but don't touch stream_slice return 3. Check any custom state logic Similar NoneType errors also occur when code assumes stream_state is always a dict and does if self.cursor_field in stream_state: while stream_state is None. [[Outreach issue](https://github.com/airbytehq/airbyte/issues/55253)] If you have custom request options or pagination that read from stream_state, guard it: python if stream_state and self.cursor_field in stream_state: ... Because the knowledge sources don’t include your connector’s code, I can’t point to the exact line, but the fix will be to: - Find where you assign into stream_slice[...] (or any dict you expect from the CDK), and - Add a None check so that when a slice/page is empty, you don’t try to mutate None. If you can share the specific method (e.g., path, request_params, or stream_slices) where you add that field, I can help you adapt this pattern more concretely within those constraints.Lucas Segers
12/11/2025, 5:45 PMkapa.ai
12/11/2025, 5:45 PMkapa.ai
12/11/2025, 5:47 PMif stream_slice is None guards yourself. From the available knowledge sources, there isn’t an explicit mention of this exact StreamThreadException / “empty page + incremental + pagination” bug in the declarative/Builder stack, but there is a very similar class of issue where the CDK assumes a non‑`None` state/slice and then crashes with a NoneType error. [[Outreach issue](https://github.com/airbytehq/airbyte/issues/55253)] In that case, the fix was in the CDK/connector implementation, not something the user could change from the UI. Given that: - You’re using Builder (declarative connector, no Python edits). - The error is coming from CDK internals (concurrent_source.stream_thread_exception and a NoneType item assignment). - Similar NoneType issues have required CDK/connector fixes upstream. [[Outreach issue](https://github.com/airbytehq/airbyte/issues/55253)] the most realistic path is: 1. Treat this as a bug in the CDK / Builder runtime Your suggestion (“CDK should check for empty slices before trying to add the field”) is aligned with how a previous NoneType bug was handled: the fix was made in the CDK’s request/state handling code. [[Outreach issue](https://github.com/airbytehq/airbyte/issues/55253)] 2. Open an issue with Airbyte Since you can’t patch the generated Python, you’ll need the Airbyte team to adjust the CDK/Builder behavior. When you open the issue, include: - That this is a Builder‑created source. - The full stack trace including the line in concurrent_source where the error occurs. - A description of the setup: incremental sync + pagination, and that the failure happens when a page/slice has no records. - Your connector definition (export the Builder YAML) if possible. Similar issues have been tracked and fixed via GitHub before. [[Outreach issue](https://github.com/airbytehq/airbyte/issues/55253)] 3. Interim workaround ideas (within Builder) The docs and forum posts don’t show a guaranteed workaround for this specific pattern in Builder, so I can’t recommend a precise configuration change with confidence. There is general guidance about nested streams and caching, but nothing that clearly addresses “empty page + incremental + pagination” in Builder. [[Passing stream results](https://discuss.airbyte.io/t/2701)] Because of that, I can’t honestly say “set option X in Builder and it will fix it” based on the current knowledge sources. So in short: this does look like something the CDK/Builder should handle more defensively, and the right next step is to file it as a bug with logs and your Builder config so the team can add the kind of None checks you’re describing inside the CDK.