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

updates versions and fixes memleak in UnboundedProcessor #1106

Merged
merged 4 commits into from
Feb 27, 2024

Conversation

OlegDokuka
Copy link
Member

This PR updates dependencies and makes minor modifications to UnboundedProcessor due to repeating failures of UnboundedProcessorJCStreassTest, which started reproducing some unspotted issues.

Motivation:

UnboundedProcessor is a critical component in the RSocket-Java ecosystem and must work properly. After analysis of its internal state machine, it was spotted that sometimes:

  1. Request may not be delivered due to natural concurrency
  2. Terminal signal may not be delivered since it checks for demand which might be consumed already (due to natural concurrency)
  3. Final value could be delivered violating reactive-streams spec

Modifications:

This PR adds a minimal set of changes, preserving old implementation but eliminating the mentioned bugs

Result:

[After your change, what will change.]

Signed-off-by: Oleh Dokuka <[email protected]>
Signed-off-by: Oleh Dokuka <[email protected]>
Signed-off-by: Oleh Dokuka <[email protected]>
@OlegDokuka OlegDokuka added the bug label Feb 23, 2024
@OlegDokuka OlegDokuka added this to the 1.1.5 milestone Feb 23, 2024
Signed-off-by: Oleh Dokuka <[email protected]>
Copy link
Member

@whyoleg whyoleg left a comment

Choose a reason for hiding this comment

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

LGTM

@OlegDokuka OlegDokuka merged commit f591f9d into 1.1.x Feb 27, 2024
28 checks passed
OlegDokuka added a commit that referenced this pull request Feb 27, 2024
Signed-off-by: Oleh Dokuka <[email protected]>

# Conflicts:
#	build.gradle
#	gradle.properties
OlegDokuka added a commit that referenced this pull request Mar 2, 2024
This PR updates dependencies and makes minor modifications to UnboundedProcessor due to repeating failures of UnboundedProcessorJCStreassTest, which started reproducing some unspotted issues.

Motivation:

UnboundedProcessor is a critical component in the RSocket-Java ecosystem and must work properly. After analysis of its internal state machine, it was spotted that sometimes:

The request may not be delivered due to natural concurrency
The terminal signal may not be delivered since it checks for demand which might be consumed already (due to natural concurrency)
The final value could be delivered violating reactive-streams spec
Modifications:

This PR adds a minimal set of changes, preserving old implementation but eliminating the mentioned bugs

---------

Signed-off-by: Oleh Dokuka <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants