-
Notifications
You must be signed in to change notification settings - Fork 420
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
Server handler state machine #1396
Server handler state machine #1396
Conversation
Motivation: See grpc#1394. Modifications: - Add a 'ServerHandlerStateMachine' and tests. - This is not used anywhere (yet). Result: Handler state machine is in place.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Basically good, one question.
case drop | ||
} | ||
|
||
enum SendStatusAction: Equatable { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these not Hashable
for a reason?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Only because HPACKHeaders
is not Hashable
.
We don't really need Equatable
or Hashable
here, but it's useful for testing.
Motivation: In grpc#1394 and grpc#1396 we introduced new state machines for the server interceptors and handler. This change updates the async server handler to make use of them. Modifications: - Add the relevant `@inlinable` and `@usableFromInline` annotations to both state machines. - Refactor the async server handler to use both state machines. - Refactor async handler tests to use a 'real' event loop; the previous mix of embedded and async was unsafe. - Re-enable TSAN Result: - Better separation between interceptors and user func - TSAN is happier - Resolves grpc#1362
Motivation: In grpc#1394 and grpc#1396 we introduced new state machines for the server interceptors and handler. This change updates the async server handler to make use of them. Modifications: - Add the relevant `@inlinable` and `@usableFromInline` annotations to both state machines. - Refactor the async server handler to use both state machines. - Refactor async handler tests to use a 'real' event loop; the previous mix of embedded and async was unsafe. - Re-enable TSAN Result: - Better separation between interceptors and user func - TSAN is happier - Resolves grpc#1362
Motivation: In #1394 and #1396 we introduced new state machines for the server interceptors and handler. This change updates the async server handler to make use of them. Modifications: - Add the relevant `@inlinable` and `@usableFromInline` annotations to both state machines. - Refactor the async server handler to use both state machines. - Refactor async handler tests to use a 'real' event loop; the previous mix of embedded and async was unsafe. - Re-enable TSAN Result: - Better separation between interceptors and user func - TSAN is happier - Resolves #1362
Motivation:
See #1394.
Modifications:
Result:
Handler state machine is in place.