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

Tolerate idling from the active state #950

Merged
merged 1 commit into from
Aug 24, 2020
Merged

Conversation

glbrntt
Copy link
Collaborator

@glbrntt glbrntt commented Aug 24, 2020

Motivation:

In certain conditions it's possible for a connection to idle when in the
'active' state resulting in a precondition failure.

The active state is not user facing and represents the state where we
have an active connection to a remote peer but have not yet seen the
initial settings frame. It's not usually possible for users to get a
connection in this state since we normally only vend connections in the
'ready' state (where we have seen the initial settings frame). However,
in the 'fastFailure' mode this constraint is lifted.

If keepalive is configured, the connection is in the active state, and
the client starts an RPC then it is possible for the keepalive timeout
to fire, idling the connection before it reaches the ready state,
resulting in a precondition failure.

Modifications:

  • Allow the connection manager to idle from the active state

Result:

Motivation:

In certain conditions it's possible for a connection to idle when in the
'active' state resulting in a precondition failure.

The active state is not user facing and represents the state where we
have an active connection to a remote peer but have not yet seen the
initial settings frame. It's not usually possible for users to get a
connection in this state since we normally only vend connections in the
'ready' state (where we have seen the initial settings frame). However,
in the 'fastFailure' mode this constraint is lifted.

If keepalive is configured, the connection is in the active state, and
the client starts an RPC then it is possible for the keepalive timeout
to fire, idling the connection before it reaches the ready state,
resulting in a precondition failure.

Modifications:

- Allow the connection manager to idle from the active state

Result:

- Idling from the active state is tolerated
- Resolves grpc#949
@glbrntt glbrntt added the 🔨 semver/patch No public API change. label Aug 24, 2020
@glbrntt glbrntt requested a review from Lukasa August 24, 2020 10:14
@Lukasa Lukasa merged commit 24b71cb into grpc:main Aug 24, 2020
@glbrntt glbrntt deleted the gb-idle-ping-crash branch September 15, 2020 18:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔨 semver/patch No public API change.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

crash in alpha 17
2 participants