Skip to content

Conversation

tryangul
Copy link
Contributor

@tryangul tryangul commented Sep 23, 2025

What

Fixes hanging in other pipelines when one parallel pipeline would fail when using PROTO data medium.

How

  • The proto reader is blocking
  • When one pipeline fails we close all input streams which unblocks the proto reader and allows the pipelines to cancel as expected
  • We run the jobs on a dedicated scope so we can better control the cooperative cancelling
  • Rearranges things to make them more readable now that we have this extra logic

To Read

  1. PipelineRunner — adds ExceptionHandler for propagating input stream closes and capturing failure cause to rethrow

Other

  • Moves dispatcher (thread pool) instantiation into DispatcherBeanFactory
  • Re-organizes PipelineRunner.kt for legibility
  • Removes unnecessary SocketInputStream — closing the upstream channel causes a source exception to take precedence over the destination exception and must be avoided.

@tryangul tryangul requested review from a team as code owners September 23, 2025 00:15
Copy link
Contributor

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

Helpful Resources

PR Slash Commands

Airbyte Maintainers (that's you!) can execute the following slash commands on your PR:

  • /format-fix - Fixes most formatting issues.
  • /update-connector-cdk-version connector=<CONNECTOR_NAME> - Updates the specified connector to the latest CDK version.
    Example: /update-connector-cdk-version connector=destination-bigquery
  • /bump-version - Bumps connector versions.
    • You can specify a custom changelog by passing changelog. Example: /bump-version changelog="My cool update"
    • Leaving the changelog arg blank will auto-populate the changelog from the PR title.
  • /run-cat-tests - Runs legacy CAT tests (Connector Acceptance Tests)
  • /build-connector-images - Builds and publishes a pre-release docker image for the modified connector(s).
  • /poe connector source-example lock - Run the Poe lock task on the source-example connector, committing the results back to the branch.
  • /poe source example lock - Alias for /poe connector source-example lock.
  • /poe source example use-cdk-branch my/branch - Pin the source-example CDK reference to the branch name specified.
  • /poe source example use-cdk-latest - Update the source-example CDK dependency to the latest available version.

📝 Edit this welcome message.

Copy link
Contributor

@edgao edgao left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, had a a few nits + question about exceptions in exception handling but otherwise :shipit:

Copy link
Contributor

@subodh1810 subodh1810 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tryangul we need to close the aggregationDispatcher otherwise it causes a hang (tested it). I raised a PR for it on top of your branch, take a look.

@tryangul tryangul force-pushed the rbroughan/fix-proto-input-stream-hang branch from 3d2f8df to 1367b4f Compare September 24, 2025 18:46
@tryangul tryangul force-pushed the rbroughan/fix-proto-input-stream-hang branch from 1367b4f to b1fa2ea Compare September 24, 2025 19:19
@tryangul tryangul merged commit 1c29927 into master Sep 24, 2025
28 checks passed
@tryangul tryangul deleted the rbroughan/fix-proto-input-stream-hang branch September 24, 2025 19:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants