Skip to content

Commit 873ff54

Browse files
committed
fix(tests): use get_context('fork') instead of set_start_method to avoid global state conflict
1 parent 9e0d6ec commit 873ff54

File tree

2 files changed

+10
-14
lines changed

2 files changed

+10
-14
lines changed

opentelemetry-sdk/tests/metrics/test_meter_provider_fork.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,11 @@
1717
import multiprocessing
1818
import os
1919
import unittest
20-
from platform import system
2120

2221
from opentelemetry.sdk.metrics import MeterProvider
2322
from opentelemetry.sdk.resources import Resource
2423

25-
if system() != "Windows":
26-
multiprocessing.set_start_method("fork", force=True)
24+
_fork_ctx = multiprocessing.get_context("fork") if hasattr(os, "fork") else None
2725

2826

2927
@unittest.skipUnless(
@@ -83,8 +81,8 @@ def child(conn):
8381
conn.send(child_id)
8482
conn.close()
8583

86-
parent_conn, child_conn = multiprocessing.Pipe()
87-
process = multiprocessing.Process(target=child, args=(child_conn,))
84+
parent_conn, child_conn = _fork_ctx.Pipe()
85+
process = _fork_ctx.Process(target=child, args=(child_conn,))
8886
process.start()
8987
child_id = parent_conn.recv()
9088
process.join()
@@ -109,8 +107,8 @@ def child(conn):
109107
conns = []
110108

111109
for _ in range(4):
112-
parent_conn, child_conn = multiprocessing.Pipe()
113-
process = multiprocessing.Process(
110+
parent_conn, child_conn = _fork_ctx.Pipe()
111+
process = _fork_ctx.Process(
114112
target=child, args=(child_conn,)
115113
)
116114
processes.append(process)

opentelemetry-sdk/tests/trace/test_tracer_provider_fork.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,11 @@
1717
import multiprocessing
1818
import os
1919
import unittest
20-
from platform import system
2120

2221
from opentelemetry.sdk.resources import Resource
2322
from opentelemetry.sdk.trace import TracerProvider
2423

25-
if system() != "Windows":
26-
multiprocessing.set_start_method("fork", force=True)
24+
_fork_ctx = multiprocessing.get_context("fork") if hasattr(os, "fork") else None
2725

2826

2927
@unittest.skipUnless(
@@ -75,8 +73,8 @@ def child(conn):
7573
conn.send(child_id)
7674
conn.close()
7775

78-
parent_conn, child_conn = multiprocessing.Pipe()
79-
process = multiprocessing.Process(target=child, args=(child_conn,))
76+
parent_conn, child_conn = _fork_ctx.Pipe()
77+
process = _fork_ctx.Process(target=child, args=(child_conn,))
8078
process.start()
8179
child_id = parent_conn.recv()
8280
process.join()
@@ -100,8 +98,8 @@ def child(conn):
10098
conns = []
10199

102100
for _ in range(4):
103-
parent_conn, child_conn = multiprocessing.Pipe()
104-
process = multiprocessing.Process(
101+
parent_conn, child_conn = _fork_ctx.Pipe()
102+
process = _fork_ctx.Process(
105103
target=child, args=(child_conn,)
106104
)
107105
processes.append(process)

0 commit comments

Comments
 (0)