Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Minimal System.IO.Pipelines integration to prepare for full-async work #1264

Merged
merged 23 commits into from
Mar 1, 2023

Conversation

stebet
Copy link
Contributor

@stebet stebet commented Oct 13, 2022

Proposed Changes

This introduces System.IO.Pipelines into the RabbitMQ Client. I decided to take the minimal step required to add it, as a way to break down PR number #1199 into more manageable parts.

This has no API changes, it still has the Channels for transmission buffering (to be changed later), but instead of reading/writing directly to a BufferedStream, we are now using Pipelines which handle the buffering and back-pressure.

This paves the way forward to slowly get rid of the Channels as well, and to create a fully and proper asynchronous code paths for sending/receiving data in a performance manner.

Types of Changes

  • Bug fix (non-breaking change which fixes issue #NNNN)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause an observable behavior change in existing systems)
  • Documentation improvements (corrections, new content, etc)
  • Cosmetic change (whitespace, formatting, etc)

Checklist

  • I have read the CONTRIBUTING.md document
  • I have signed the CA (see https://cla.pivotal.io/sign/rabbitmq)
  • All tests pass locally with my changes
  • I have added tests that prove my fix is effective or that my feature works
  • I have added necessary documentation (if appropriate)
  • Any dependent changes have been merged and published in related repositories

@lukebakken
Copy link
Contributor

Thanks, I'll review this coming week.

lukebakken
lukebakken previously approved these changes Oct 17, 2022
Copy link
Contributor

@lukebakken lukebakken left a comment

Choose a reason for hiding this comment

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

This seems reasonable to me and tests pass, so 👍 . I'm going to wait on another review before merging.

@lukebakken lukebakken added this to the 7.0.0 milestone Oct 17, 2022
@lukebakken lukebakken self-assigned this Oct 17, 2022
Copy link
Contributor

@Zerpet Zerpet left a comment

Choose a reason for hiding this comment

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

These changes look good to me 👍 Tests pass and both test apps run without errors. Interestingly, CreateChannel test app seems to run 1 second faster (7.6s in main vs 6.5s) with these changes.

@lukebakken lukebakken self-requested a review February 3, 2023 21:32
lukebakken
lukebakken previously approved these changes Feb 3, 2023
Copy link
Collaborator

@danielmarbach danielmarbach left a comment

Choose a reason for hiding this comment

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

Slightly late to the party. Sorry!

projects/RabbitMQ.Client/RabbitMQ.Client.csproj Outdated Show resolved Hide resolved
projects/RabbitMQ.Client/client/impl/Connection.Receive.cs Outdated Show resolved Hide resolved
projects/RabbitMQ.Client/client/impl/Connection.Receive.cs Outdated Show resolved Hide resolved
projects/RabbitMQ.Client/client/impl/Connection.Receive.cs Outdated Show resolved Hide resolved
projects/RabbitMQ.Client/client/impl/Connection.Receive.cs Outdated Show resolved Hide resolved
projects/RabbitMQ.Client/client/impl/SocketFrameHandler.cs Outdated Show resolved Hide resolved
projects/RabbitMQ.Client/client/impl/SocketFrameHandler.cs Outdated Show resolved Hide resolved
@lukebakken
Copy link
Contributor

Thanks @danielmarbach ... as you can see I'm working through your PR review comments. Thanks a MILLION.

@stebet
Copy link
Contributor Author

stebet commented Feb 8, 2023

Great to see traction here :) thanks @danielmarbach and @lukebakken. I've been less active lately while I'm transitioning into a new job as well as doing other OSS projects and public speaking, but the RabbitMQ client is always on my list of things to revisit :)

Zerpet
Zerpet previously approved these changes Feb 13, 2023
Copy link
Contributor

@Zerpet Zerpet left a comment

Choose a reason for hiding this comment

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

Looks good to me 👍 Let's give other reviewers some time to comment before we merge.

@stebet
Copy link
Contributor Author

stebet commented Feb 14, 2023

Looks good to me 👍 Let's give other reviewers some time to comment before we merge.

Like your profile pic! I used to work on EVE Online for CCP Games :)

@lukebakken
Copy link
Contributor

I plan on merging this as soon as CI passes, FYI!

@lukebakken lukebakken merged commit 3c4d3aa into rabbitmq:main Mar 1, 2023
@lukebakken lukebakken deleted the newpipeline branch March 1, 2023 22:00
@lukebakken
Copy link
Contributor

Thank you @stebet

@lukebakken lukebakken mentioned this pull request Mar 1, 2023
11 tasks
@stebet
Copy link
Contributor Author

stebet commented Mar 1, 2023

Thanks for picking up the remaining work @lukebakken. Hopefully the full-async work can begin soon :)

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.

5 participants