Skip to content

Commit 1076752

Browse files
authored
Update api.sh
1 parent b0f2c63 commit 1076752

1 file changed

Lines changed: 20 additions & 6 deletions

File tree

  • src/usr/share/opentelemetry_shell

src/usr/share/opentelemetry_shell/api.sh

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ esac
2222
if \[ -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:-$(\mktemp -u -p "$_otel_shell_pipe_dir" opentelemetry_shell.$$.sdk.request.pipe.XXXXXXXXXX)}"
25-
_otel_remote_sdk_response_pipe="$(\mktemp -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}}"
@@ -65,11 +64,7 @@ else
6564

6665
otel_shutdown() {
6766
\eval "\\exec ${_otel_remote_sdk_fd}>&-"
68-
if \[ -z "${OTEL_REMOTE_SDK_REQUEST_PIPE:-}" ]; then
69-
\rm "$_otel_remote_sdk_request_pipe" "$_otel_remote_sdk_response_pipe" 2>/dev/null || \true
70-
else
71-
\rm "$_otel_remote_sdk_response_pipe" 2>/dev/null || \true
72-
fi
67+
\rm "$_otel_remote_sdk_response_pipe" 2>/dev/null || \true
7368
}
7469
fi
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+
\read pid rest < /proc/self/stat
85+
if \[ "$pid" != "${_otel_my_pid:-}" ]; then
86+
_otel_my_pid="$pid"
87+
_otel_remote_sdk_response_pipe="$(\mktemp -u -p "$_otel_shell_pipe_dir" opentelemetry_shell.$_otel_my_pid.sdk.response.pipe.XXXXXXXXXX)"
88+
\mkfifo "$_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

174181
otel_span_current() {
182+
_otel_sdk_ensure_response_pipe
175183
_otel_sdk_communicate "SPAN_HANDLE" "$_otel_remote_sdk_response_pipe" "${TRACEPARENT:-}"
176184
local handle
177185
\read handle < "$_otel_remote_sdk_response_pipe" || \true
@@ -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
\read handle < "$_otel_remote_sdk_response_pipe" || \true
@@ -220,6 +229,7 @@ otel_span_attribute_typed() {
220229

221230
otel_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
\read traceparent < "$_otel_remote_sdk_response_pipe" || \true
@@ -250,6 +260,7 @@ otel_span_deactivate() {
250260

251261
otel_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
\read handle < "$_otel_remote_sdk_response_pipe" || \true
@@ -278,6 +289,7 @@ otel_event_add() {
278289
otel_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
\read handle < "$_otel_remote_sdk_response_pipe" || \true
@@ -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
\read handle < "$_otel_remote_sdk_response_pipe" || \true
@@ -322,6 +335,7 @@ otel_counter_observe() {
322335

323336
otel_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
\read handle < "$_otel_remote_sdk_response_pipe" || \true

0 commit comments

Comments
 (0)