2222if \[ -z " ${TMPDIR:- } " ]; then TMPDIR=/tmp; fi
2323_otel_shell_pipe_dir=" ${OTEL_SHELL_PIPE_DIR:- $TMPDIR } "
2424_otel_remote_sdk_request_pipe=" ${OTEL_REMOTE_SDK_REQUEST_PIPE:- $(\m ktemp -u -p " $_otel_shell_pipe_dir " opentelemetry_shell.$$ .sdk.request.pipe.XXXXXXXXXX)} "
25- _otel_remote_sdk_response_pipe=" $( \m ktemp -u -p " $_otel_shell_pipe_dir " opentelemetry_shell.$$ .sdk.response.pipe.XXXXXXXXXX) "
2625_otel_remote_sdk_fd=" ${OTEL_REMOTE_SDK_FD:- 7} "
2726_otel_remote_sdk_stdout_redirect=" ${OTEL_SHELL_SDK_STDOUT_REDIRECT:- ${OTEL_SHELL_SDK_OUTPUT_REDIRECT:-/ dev/ stderr} } "
2827_otel_remote_sdk_stderr_redirect=" ${OTEL_SHELL_SDK_STDERR_REDIRECT:- ${OTEL_SHELL_SDK_OUTPUT_REDIRECT:-/ dev/ stderr} } "
6564
6665 otel_shutdown () {
6766 \e val " \\ exec ${_otel_remote_sdk_fd} >&-"
68- if \[ -z " ${OTEL_REMOTE_SDK_REQUEST_PIPE:- } " ]; then
69- \r m " $_otel_remote_sdk_request_pipe " " $_otel_remote_sdk_response_pipe " 2> /dev/null || \t rue
70- else
71- \r m " $_otel_remote_sdk_response_pipe " 2> /dev/null || \t rue
72- fi
67+ \r m " $_otel_remote_sdk_response_pipe " 2> /dev/null || \t rue
7368 }
7469fi
7570
@@ -83,6 +78,18 @@ _otel_sdk_communicate() {
8378 fi
8479}
8580
81+ _otel_sdk_ensure_response_pipe () {
82+ local pid
83+ local rest
84+ \r ead pid rest < /proc/self/stat
85+ if \[ " $pid " ! = " ${_otel_my_pid:- } " ]; then
86+ _otel_my_pid=" $pid "
87+ _otel_remote_sdk_response_pipe=" $( \m ktemp -u -p " $_otel_shell_pipe_dir " opentelemetry_shell.$_otel_my_pid .sdk.response.pipe.XXXXXXXXXX) "
88+ \m kfifo " $_otel_remote_sdk_response_pipe "
89+ # TODO how and when to delete?
90+ fi
91+ }
92+
8693_otel_resource_attributes () {
8794 _otel_resource_attributes_process
8895 _otel_resource_attributes_service
@@ -172,6 +179,7 @@ _otel_resolve_package_version() {
172179}
173180
174181otel_span_current () {
182+ _otel_sdk_ensure_response_pipe
175183 _otel_sdk_communicate " SPAN_HANDLE" " $_otel_remote_sdk_response_pipe " " ${TRACEPARENT:- } "
176184 local handle
177185 \r ead handle < " $_otel_remote_sdk_response_pipe " || \t rue
@@ -182,6 +190,7 @@ otel_span_start() {
182190 if _otel_string_starts_with " ${1:- } " @; then local time=" ${1#@ } " ; shift ; else local time=auto; fi
183191 local kind=" $1 "
184192 local name=" $2 "
193+ _otel_sdk_ensure_response_pipe
185194 _otel_sdk_communicate " SPAN_START" " $_otel_remote_sdk_response_pipe " " ${TRACEPARENT:- } " " ${TRACESTATE:- } " " $time " " $kind " " $name "
186195 local handle
187196 \r ead handle < " $_otel_remote_sdk_response_pipe " || \t rue
@@ -220,6 +229,7 @@ otel_span_attribute_typed() {
220229
221230otel_span_traceparent () {
222231 local span_handle=" $1 "
232+ _otel_sdk_ensure_response_pipe
223233 _otel_sdk_communicate " SPAN_TRACEPARENT" " $_otel_remote_sdk_response_pipe " " $span_handle "
224234 local traceparent
225235 \r ead traceparent < " $_otel_remote_sdk_response_pipe " || \t rue
@@ -250,6 +260,7 @@ otel_span_deactivate() {
250260
251261otel_event_create () {
252262 local event_name=" $1 "
263+ _otel_sdk_ensure_response_pipe
253264 _otel_sdk_communicate " EVENT_CREATE" " $_otel_remote_sdk_response_pipe " " $event_name "
254265 local handle
255266 \r ead handle < " $_otel_remote_sdk_response_pipe " || \t rue
@@ -278,6 +289,7 @@ otel_event_add() {
278289otel_link_create () {
279290 local traceparent=" $1 "
280291 local tracestate=" $2 "
292+ _otel_sdk_ensure_response_pipe
281293 _otel_sdk_communicate " LINK_CREATE" " $_otel_remote_sdk_response_pipe " " $traceparent " " $tracestate " END
282294 local handle
283295 \r ead handle < " $_otel_remote_sdk_response_pipe " || \t rue
@@ -308,6 +320,7 @@ otel_counter_create() {
308320 local name=" $2 "
309321 local unit=" ${3:- 1} "
310322 local description=" ${4:- } "
323+ _otel_sdk_ensure_response_pipe
311324 _otel_sdk_communicate " COUNTER_CREATE" " $_otel_remote_sdk_response_pipe " " $type " " $name " " $unit " " $description "
312325 local handle
313326 \r ead handle < " $_otel_remote_sdk_response_pipe " || \t rue
@@ -322,6 +335,7 @@ otel_counter_observe() {
322335
323336otel_observation_create () {
324337 local value=" $1 "
338+ _otel_sdk_ensure_response_pipe
325339 _otel_sdk_communicate " OBSERVATION_CREATE" " $_otel_remote_sdk_response_pipe " " $value "
326340 local handle
327341 \r ead handle < " $_otel_remote_sdk_response_pipe " || \t rue
0 commit comments