(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.