(1) In _ingestion, it's the "details" attribute of a
NoSuchMethodException that we want. The "message" is inherited from the
base Exception class.
(2) In _transmission, use a proper sum type for representing operation
abortion. Trying to overload the existing _completion value for
status-and-details-when-aborting was trying to be too clever.
(3) In _calls... oof. Just look. Oof. Test coverage for this code path
is added.
(4) In _service, the application-provided
face.MultiMethodImplementation isn't directly callable, but rather
exposes a method named "service".
(5) In crust.implementations, the wrapping that we've put around the
application-provided face.MultiMethodImplementation *is* directly
callable, and *does not* expose a method named "service".
(6) Also in crust.implementations, base.NoSuchMethodError's constructor
takes a code value and a details value.
(7) Again in crust.implementations, the application-provided
face.MultiMethodImplementation may be None, and if it is None, we
shouldn't wrap it with an adaptation function that would only raise a
TypeError at a later time.
(1) Plumb the metadata transformer given at the Beta API through to the
InvocationLink where it will be used.
(2) In both InvocationLink and ServiceLink, if there isn't a registered
serializer or deserializer, just pass the payload through rather than
ignoring the entire RPC.
- The processor now belongs to the server credentials in core.
- The server credentials now needs to be refcounted.
- Changed slighly the vtable of credentials to make it easier to avoid
memory leaks (free'ing the pointer is now done at the common layer,
the implementations of the creds are now only reponsible for
destructing the implementations' specific members.
The invoker is an object derived from, and referring to, objects of the
Face implementation under test. If those objects are to be garbage
collected at the appropriate time the invoker that references them must
be made eligible for garbage collection in the test's tearDown method.
Tickets should not be ignored if the end is in a grace period; rather
they should be ignored if they are for an unrecognized (likely new)
operation and the end is in a grace period.
- ensures that servers cancels calls after the shutdown timeout
- uses an infinite timeout when request server calls
This two changes fix the issue where the server segfaults on shutdown.
- Had to chnage the core API to add a destroy function pointer in
grpc_auth_metadata_processor.
- Tested end to end.
- Fixed some issues in the server_auth_filter (we were not checking the
length which put us at risk of an overflow).
(1) Move metadata and details constants for gRPC-on-the-wire tests into
grpc.test_common.
(2) Drop definitions of setUpModule and tearDownModule from a unit test
module that, because it uses the load_tests protocol, never had those
methods called anyway. :-(
(1) Call "cancel" on each future, not on the list of futures.
(2) If and when futures mature their actions should simply abort all
outstanding operations and cancel any other futures. They should not
shut down the _End's internal thread pool; only the termination action
of the last operation to terminate should shut down the pool (in the
case of their having been active operations at the time at which the
_End's stop(grace) method was called).