[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):
         """