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

AbsorbCancellation stage may leak stages in server #851

Closed
jrudolph opened this issue Feb 8, 2017 · 1 comment
Closed

AbsorbCancellation stage may leak stages in server #851

jrudolph opened this issue Feb 8, 2017 · 1 comment
Assignees
Labels
3 - in progress Someone is working on this ticket bug
Projects
Milestone

Comments

@jrudolph
Copy link
Member

jrudolph commented Feb 8, 2017

Under so far unknown circumstances the AbsorbCancellation stage introduced in #459 may keep the graph running if data was already buffered but never read. The reason is that the stage so far requires completion to reach the stage after cancellation was absorbed which might be blocked by incoming elements that were never pulled.

@jrudolph jrudolph added 3 - in progress Someone is working on this ticket bug labels Feb 8, 2017
@jrudolph jrudolph self-assigned this Feb 8, 2017
jrudolph added a commit to jrudolph/akka-http that referenced this issue Feb 8, 2017
Under circumstances that I could not reproduce so far,
the AbsorbCancellation stage introduced in akka#459 may keep the graph running
if data was already buffered but never read. The reason is that the stage
so far requires completion to reach the stage after cancellation was
absorbed which might be blocked by incoming elements that were never
pulled.

The solution is two-fold. After cancellation:

 1) pull in and ignore all incoming elements to eventually fetch completion
 2) complete the stage after a configurable time

In the HTTP use case, we delay the cancellation by no more than the time specified
in the new linger-timeout setting.
jrudolph added a commit to jrudolph/akka-http that referenced this issue Feb 8, 2017
Under circumstances that I could not reproduce so far,
the AbsorbCancellation stage introduced in akka#459 may keep the graph running
if data was already buffered but never read. The reason is that the stage
so far requires completion to reach the stage after cancellation was
absorbed which might be blocked by incoming elements that were never
pulled.

The solution is two-fold. After cancellation:

 1) pull in and ignore all incoming elements to eventually fetch completion
 2) complete the stage after a configurable time

In the HTTP use case, we delay the cancellation by no more than the time specified
in the new linger-timeout setting.
jrudolph added a commit to jrudolph/akka-http that referenced this issue Feb 9, 2017
Under circumstances that I could not reproduce so far,
the AbsorbCancellation stage introduced in akka#459 may keep the graph running
if data was already buffered but never read. The reason is that the stage
so far requires completion to reach the stage after cancellation was
absorbed which might be blocked by incoming elements that were never
pulled.

The solution is two-fold. After cancellation:

 1) pull in and ignore all incoming elements to eventually fetch completion
 2) complete the stage after a configurable time

In the HTTP use case, we delay the cancellation by no more than the time specified
in the new linger-timeout setting.
jrudolph added a commit to jrudolph/akka-http that referenced this issue Feb 9, 2017
Under circumstances that I could not reproduce so far,
the AbsorbCancellation stage introduced in akka#459 may keep the graph running
if data was already buffered but never read. The reason is that the stage
so far requires completion to reach the stage after cancellation was
absorbed which might be blocked by incoming elements that were never
pulled.

The solution is two-fold. After cancellation:

 1) pull in and ignore all incoming elements to eventually fetch completion
 2) complete the stage after a configurable time

In the HTTP use case, we delay the cancellation by no more than the time specified
in the new linger-timeout setting.
jrudolph added a commit to jrudolph/akka-http that referenced this issue Feb 16, 2017
Under circumstances that I could not reproduce so far,
the AbsorbCancellation stage introduced in akka#459 may keep the graph running
if data was already buffered but never read. The reason is that the stage
so far requires completion to reach the stage after cancellation was
absorbed which might be blocked by incoming elements that were never
pulled.

The solution is two-fold. After cancellation:

 1) pull in and ignore all incoming elements to eventually fetch completion
 2) complete the stage after a configurable time

In the HTTP use case, we delay the cancellation by no more than the time specified
in the new linger-timeout setting.
jrudolph added a commit to jrudolph/akka-http that referenced this issue Feb 16, 2017
Under circumstances that I could not reproduce so far,
the AbsorbCancellation stage introduced in akka#459 may keep the graph running
if data was already buffered but never read. The reason is that the stage
so far requires completion to reach the stage after cancellation was
absorbed which might be blocked by incoming elements that were never
pulled.

The solution is two-fold. After cancellation:

 1) pull in and ignore all incoming elements to eventually fetch completion
 2) complete the stage after a configurable time

In the HTTP use case, we delay the cancellation by no more than the time specified
in the new linger-timeout setting.
jrudolph added a commit that referenced this issue Feb 16, 2017
@jrudolph
Copy link
Member Author

Fixed by #852.

@jrudolph jrudolph added this to the 10.0.4 milestone Feb 16, 2017
@jrudolph jrudolph added this to Done in Bug Hunting Feb 27, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3 - in progress Someone is working on this ticket bug
Projects
No open projects
Development

No branches or pull requests

1 participant