| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A process may fork after invoking grpc_init() and use gRPC in the child
if and only if the child process first destroys all gRPC resources
inherited from the parent process and invokes grpc_shutdown().
Subsequent to this, the child will be able to re-initialize and use
gRPC. After fork, the parent process will be able to continue to use
existing gRPC resources such as channels and calls without interference
from the child process.
To facilitate gRPC Python applications meeting the above constraints,
gRPC Python will automatically destroy and shutdown all gRPC Core
resources in the child's post-fork handler, including cancelling
in-flight calls (see detailed design below). From the client's
perspective, the child process is now free to create new channels and
use gRPC.
|
|
|
|
|
|
|
|
| |
This change adds an experimental ssl_session_cache_lru function to the
Python API that returns an encapsulated grpc_ssl_session_cache (#14483).
Python clients may use this object as an argument for the
grpc.ssl_session_cache channel option if they wish to cache and resume
TLS sessions with a server.
|
| |
|
|\
| |
| | |
Elide cygrpc.ChannelArg and cygrpc.ChannelArgs.
|
| | |
|
|\|
| |
| |
| | |
fix-stream-compression-config-interface
|
| | |
|
| |\
| | |
| | | |
Reform cygrpc.OperationTag and cygrpc.Event.
|
| |\ \
| | | |
| | | |
| | | | |
Upmerge v1.8.3 into master
|
| | |/
| | |
| | |
| | |
| | |
| | | |
Rather than single classes they are now broken up into class families
with each class containing only those fields and methods that are
needed in the context in which the class is used.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It is now a family of classes conforming to an interface rather than a
single class no single instance of which makes use of all behavior
scoped to the class.
It also now only uses gRPC Core memory for the time of a single batch
rather than for the entire lifetime of the instance.
|
|\| |
| | |
| | |
| | | |
fix-stream-compression-config-interface
|
| | | |
|
| |\| |
|
|\| |
| | |
| | |
| | | |
fix-stream-compression-config-interface
|
| | | |
|
| | | |
|
| |/
| |
| |
| | |
remove grpc_exec_ctx from .pxi files in python
|
|\|
| |
| |
| | |
fix-stream-compression-config-interface
|
| | |
|
| | |
|
|/ |
|
|
|
|
|
| |
This is required to compile with Cython options that
are more strict about const correctness.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The gRPC Core has two styles for passing metadata: as an integer count
along with a grpc_metadata* pointer, which is used for passing metadata
into the core, and as a grpc_metadata_array, which is used for passing
metadata out of the core. The Cython layer of gRPC Python was using a
single data structure wrapping grpc_metadata_array for both purposes,
but this was complex because the core manages the slices contained in
grpc_metadata_array objects (at least those of which it is aware), so
the Cython layer had to keep track of whether or not the core was aware
of the slices it was using (and it was also defective, leaking slices).
This is solved by realigning with the Cython layer’s intended design of
mirroring as closely as possible in Python the gRPC Core API: we use
one structure for passing metadata into the core (what is now called
cygrpc.Metadata) and second, different structure for receiving metadata
out of the core (what was called cygrpc.Metadata but is now
cygrpc.MetadataArray, reflecting that it wraps the core’s
grpc_metadata_array).
All bug fixes should contain added tests preventing regression but this
doesn't because I don't know at this time how to write a does-not-leak
test for Python that fits well into our existing body of tests. Phooey.
Thanks to Dominik Janků (djanku@email.cz) for investigation and an
earlier draft of a solution.
|
| |
|
|\ |
|
| | |
|
| | |
|
| | |
|
|\| |
|
| |\
| | |
| | | |
Revert "Metadata handling rewrite"
|
| |/
|/|
| |
| | |
This reverts commit 5e01e2ac977655aa074faf7fde0a74298f5e4c55.
|
| | |
|
|/ |
|
|
|
|
| |
... but for real this time.
|
| |
|
|
|
|
|
|
|
| |
This reads directly off of the slices rather than ref'ing and unref'ing
them. There's likely some silliness w.r.t. interned slices and
references to them outliving their associated call objects, but we are
just ignoring that for now.
|
| |
|
| |
|
|\
| |
| | |
Allow pointer channel args python
|
| | |
|
|/ |
|
| |
|
|
|
|
| |
Incremental changes towards PyPy support.
|
|
|
|
|
|
|
| |
When a child thread triggers __dealloc__ as part of a thread being
joined, the thread is already considered to be "joined", and so
releasing the GIL can allow the main thread to proceed to exit,
which introduces shutdown race conditions/memory leaks.
|
| |
|
|
|
|
|
|
|
|
|
| |
This impacts the following APIs:
Metadata: Key is always a str, Value is bytes for binary metadata,
str otherwise
Call Details: str type
gRPC method: str type
hostname/target: str type
|
| |
|
|
|
|
|
|
|
|
| |
Notable Changes:
-Convert all str types to byte types at cython layer (ascii encoding)
-Use six for packages that have different names in Python2/Python3
-By default, unit tests are compiled/run in Python2.7 and Python3.4
-Ensure MACOSX_BUILD_TARGET is at least 10.7
|
|\
| |
| | |
Fix memory leak reading from python ByteBuffer.
|