Fixes for bugs found during manual use
(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.
Showing
- src/python/grpcio/grpc/framework/core/_ingestion.py 1 addition, 1 deletionsrc/python/grpcio/grpc/framework/core/_ingestion.py
- src/python/grpcio/grpc/framework/core/_transmission.py 62 additions, 39 deletionssrc/python/grpcio/grpc/framework/core/_transmission.py
- src/python/grpcio/grpc/framework/crust/_calls.py 1 addition, 1 deletionsrc/python/grpcio/grpc/framework/crust/_calls.py
- src/python/grpcio/grpc/framework/crust/_service.py 1 addition, 1 deletionsrc/python/grpcio/grpc/framework/crust/_service.py
- src/python/grpcio/grpc/framework/crust/implementations.py 8 additions, 5 deletionssrc/python/grpcio/grpc/framework/crust/implementations.py
- src/python/grpcio_test/grpc_test/framework/interfaces/face/_blocking_invocation_inline_service.py 4 additions, 4 deletions...rk/interfaces/face/_blocking_invocation_inline_service.py
Loading
Please register or sign in to comment