[3.9] bpo-41503: Fix race between setTarget and flush in logging.handlers.MemoryHandler (GH-21765) (GH-21897)
(cherry picked from commit 2353d77fad7ed9d11d8a4d66b5dd1306cdb94125)
Co-authored-by: Irit Katriel <iritkatriel@yahoo.com>
Automerge-Triggered-By: @vsajip
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
index 4a120e9..867ef4e 100644
--- a/Lib/logging/handlers.py
+++ b/Lib/logging/handlers.py
@@ -1324,7 +1324,11 @@
"""
Set the target handler for this handler.
"""
- self.target = target
+ self.acquire()
+ try:
+ self.target = target
+ finally:
+ self.release()
def flush(self):
"""