reporting incomplete trace when timeout

This commit is contained in:
xiang.zhou
2025-10-31 10:17:26 +08:00
parent d0f7335c2b
commit 14326c8da1
2 changed files with 26 additions and 14 deletions
+10 -6
View File
@@ -99,6 +99,8 @@ int modbus_stack_recv(modbus_stack_t *stack, uint8_t slave_id,
return -1;
}
void *trace_ctx = (void *) ((intptr_t) stack + (intptr_t) stack->read_seq);
switch (code.function) {
case MODBUS_READ_COIL:
case MODBUS_READ_INPUT:
@@ -107,7 +109,7 @@ int modbus_stack_recv(modbus_stack_t *stack, uint8_t slave_id,
neu_otel_trace_ctx trace = NULL;
neu_otel_scope_ctx scope = NULL;
if (neu_otel_data_is_started()) {
trace = neu_otel_find_trace((void *) (intptr_t) stack->read_seq);
trace = neu_otel_find_trace(trace_ctx);
if (trace) {
char new_span_id[36] = { 0 };
neu_otel_new_span_id(new_span_id);
@@ -140,14 +142,14 @@ int modbus_stack_recv(modbus_stack_t *stack, uint8_t slave_id,
stack->value_fn(stack->ctx, code.slave_id,
header.len - sizeof(struct modbus_code) -
sizeof(struct modbus_data),
bytes, 0, (void *) (intptr_t) stack->read_seq);
bytes, 0, trace_ctx);
} else {
bytes = neu_protocol_unpack_buf(buf, data.n_byte);
if (bytes == NULL) {
return -1;
}
stack->value_fn(stack->ctx, code.slave_id, data.n_byte, bytes,
0, (void *) (intptr_t) stack->read_seq);
0, trace_ctx);
}
break;
case MODBUS_PROTOCOL_RTU:
@@ -156,7 +158,7 @@ int modbus_stack_recv(modbus_stack_t *stack, uint8_t slave_id,
return -1;
}
stack->value_fn(stack->ctx, code.slave_id, data.n_byte, bytes, 0,
(void *) (intptr_t) stack->read_seq);
trace_ctx);
break;
}
@@ -374,8 +376,10 @@ int modbus_stack_read(modbus_stack_t *stack, uint8_t slave_id,
neu_otel_trace_ctx trace = NULL;
neu_otel_scope_ctx scope = NULL;
trace = neu_otel_create_trace(
new_trace_id, (void *) (intptr_t) stack->read_seq, 0,
trace_state);
new_trace_id,
(void *) ((intptr_t) stack +
(intptr_t) stack->read_seq),
0, trace_state);
if (trace) {
scope = neu_otel_add_span(trace);
neu_otel_scope_set_span_name(scope, "driver cmd send");