fix: don't use threads for gRPC AuthMetadataPlugin (#467)
diff --git a/google/auth/transport/grpc.py b/google/auth/transport/grpc.py
index 5ce6b2b..32ffabc 100644
--- a/google/auth/transport/grpc.py
+++ b/google/auth/transport/grpc.py
@@ -16,7 +16,6 @@
from __future__ import absolute_import
-from concurrent import futures
import logging
import six
@@ -51,15 +50,6 @@
object used to refresh credentials as needed.
"""
- # Python 2.7 has no default for max_workers.
- # In Python >= 3.5, ThreadPoolExecutor defaults to the
- # number of processors on the machine, multiplied by 5.
- if six.PY2: # pragma: NO COVER
- max_workers = 5
- else:
- max_workers = None
- _AUTH_THREAD_POOL = futures.ThreadPoolExecutor(max_workers=max_workers)
-
def __init__(self, credentials, request):
# pylint: disable=no-value-for-parameter
# pylint doesn't realize that the super method takes no arguments
@@ -82,13 +72,6 @@
return list(six.iteritems(headers))
- @staticmethod
- def _callback_wrapper(callback):
- def wrapped(future):
- callback(future.result(), None)
-
- return wrapped
-
def __call__(self, context, callback):
"""Passes authorization metadata into the given callback.
@@ -97,8 +80,7 @@
callback (grpc.AuthMetadataPluginCallback): The callback that will
be invoked to pass in the authorization metadata.
"""
- future = self._AUTH_THREAD_POOL.submit(self._get_authorization_headers, context)
- future.add_done_callback(self._callback_wrapper(callback))
+ callback(self._get_authorization_headers(context), None)
def secure_authorized_channel(