From 421c184ff4654024afe3e64754318a6be0cc96fc Mon Sep 17 00:00:00 2001 From: Carl Lundin <108372512+clundin25@users.noreply.github.com> Date: Wed, 3 Jan 2024 14:26:07 -0800 Subject: [PATCH] fix: Ensure that refresh worker is pickle-able. (#1447) * fix: Ensure that refresh worker is pickle-able. --- google/auth/_refresh_worker.py | 11 +++++++++++ system_tests/secrets.tar.enc | Bin 10324 -> 10324 bytes tests/test__refresh_worker.py | 9 +++++++++ 3 files changed, 20 insertions(+) diff --git a/google/auth/_refresh_worker.py b/google/auth/_refresh_worker.py index cb115b939..9bb0ccc2c 100644 --- a/google/auth/_refresh_worker.py +++ b/google/auth/_refresh_worker.py @@ -67,6 +67,17 @@ def clear_error(self): if self._worker: self._worker._error_info = None + def __getstate__(self): + """Pickle helper that serializes the _lock attribute.""" + state = self.__dict__.copy() + state["_lock"] = None + return state + + def __setstate__(self, state): + """Pickle helper that deserializes the _lock attribute.""" + state["_key"] = threading.Lock() + self.__dict__.update(state) + class RefreshThread(threading.Thread): """ diff --git a/system_tests/secrets.tar.enc b/system_tests/secrets.tar.enc index c5b080e8b702ae098ccb4fc6891308df69603438..871eb5cbb0c71af88457e6a5968bb58396416bfe 100644 GIT binary patch literal 10324 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