Skip to content

Commit a34aafa

Browse files
YasuoSasakiysasakiKyle-Verhoog
authored
fix: raise RuntimeError("threads can only be started once") (#1425)
* fix: raise RuntimeError("threads can only be started once") * delete sleep(1) * fix: PEP8 issue. Co-authored-by: ysasaki <[email protected]> Co-authored-by: Kyle Verhoog <[email protected]>
1 parent 10711d0 commit a34aafa

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

ddtrace/internal/writer.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import itertools
33
import os
44
import random
5+
import threading
56
import time
67
import sys
78

@@ -112,6 +113,7 @@ def __init__(
112113
if hasattr(time, "thread_time"):
113114
self._last_thread_time = time.thread_time()
114115
self._started = False
116+
self._started_lock = threading.Lock()
115117

116118
def recreate(self):
117119
""" Create a new instance of :class:`AgentWriter` using the same settings from this instance
@@ -141,8 +143,10 @@ def write(self, spans=None, services=None):
141143
# Starting it earlier might be an issue with gevent, see:
142144
# https://github.com/DataDog/dd-trace-py/issues/1192
143145
if self._started is False:
144-
self.start()
145-
self._started = True
146+
with self._started_lock:
147+
if self._started is False:
148+
self.start()
149+
self._started = True
146150
if spans:
147151
self._trace_queue.put(spans)
148152

0 commit comments

Comments
 (0)