Conversation
Preserve proto3 open enum integers and received status messages through the setter and MessagePack decoder without weakening allocation or input validation. Cover cross-format forwarding, int32 boundaries, malformed inputs, and allocation failure recovery. Avoid truncating long status messages in text output and bump the patch version to 0.7.3. Signed-off-by: Eduardo Silva <eduardo@chronosphere.io>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
a049bdfrestricted span status codes to 0–2. After Fluent Bit imported CTraces v0.7.2, OTLP Protobuf ingestion rejected received statuses such asINT32_MIN,-1,3, andINT32_MAX. This change preserves all signed 32-bit status codes and their messages through updates and forwarding, while retaining null checks, allocation failure atomicity, decoder limits, int32 type/range validation, and cleanup.The OTLP schema defines Unset (0), Ok (1), and Error (2), but uses proto3. Proto3 enums are open and preserve unknown enum integers. These transport requirements are distinct from the instrumentation API's status and description rules; received telemetry is preserved rather than rewritten using instrumentation semantics.
Changes:
CMakeLists.txtfrom 0.7.2 to 0.7.3. Public signatures, struct layouts, status constants, and wire fields are unchanged.Validation:
scripts/agent-test.sh -R 'ctr-test-(span|status|decoding|opentelemetry|protobuf)': 5/5 passed.scripts/agent-verify.sh: 7/7 passed, including shell syntax checks, after the version bump.ctr-test-{status,span,decoding,opentelemetry,protobuf}with--no-exec --leak-check=full --show-leak-kinds=all --errors-for-leak-kinds=all --error-exitcode=99 --track-origins=yes: all passed; zero errors and zero bytes left allocated.-fsanitize=address,undefined -fno-sanitize=function -fno-omit-frame-pointer; leak detection and halt-on-error enabled: 7/7 passed.CTR_BUILD_DIR=build/status-asan scripts/agent-verify.shalso passed after the version bump.git diff --check: passed.Strict Clang function-type UBSan is blocked by existing mismatched callback types:
protobuf-c.c:3416invokes generated typed initializers throughvoid (*)(ProtobufCMessage *), and older test functions trigger the check at Acutest's callback invocation. A direct strict run of the new status test reproduced the dependency finding. Only function-type instrumentation was disabled for the successful sanitizer run; dependency sources were left untouched.Fluent Bit's bundled copy was not modified, and consumer integration tests were not run. Fluent Bit should vendor this CTraces correction; its JSON caller changes and downstream interoperability validation remain separate consumer work.