deleted todo file

Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com>
This commit is contained in:
Pratik Mankawde
2026-02-26 12:12:48 +00:00
parent 42e4054a8d
commit e014d7d035

View File

@@ -1,78 +0,0 @@
# OpenTelemetry Implementation
## POC Tasks (Phase 1 - Core Infrastructure)
- [x] Write plan to tasks/todo.md
- [x] Task 0: Create Docker observability stack (docker-compose, otel-collector-config, grafana datasource)
- [x] Task 1: Add OpenTelemetry C++ SDK dependency (conanfile.py + CMakeLists.txt + XrplCore.cmake)
- [x] Task 2: Create Core Telemetry interface (Telemetry.h, SpanGuard.h, NullTelemetry.cpp)
- [x] Task 3: Implement OTel-backed TelemetryImpl and TelemetryConfig
- [x] Task 5: Create instrumentation macros (TracingInstrumentation.h)
- [x] Task 4: Integrate Telemetry into Application lifecycle (ServiceRegistry.h, Application.cpp, xrpld-example.cfg)
- [x] Task 6: Instrument RPC ServerHandler
- [x] Task 7: Instrument RPC command execution (RPCHandler)
- [ ] Task 8: Build, run, and verify end-to-end (manual)
- [ ] Task 9: Document POC results and next steps (manual)
## Phase 2 Tasks (RPC Tracing Completion)
- [x] Task 2.2: Add XRPL_TRACE_PEER and XRPL_TRACE_LEDGER macros
- [x] Task 2.3: Add shouldTraceLedger() to Telemetry interface + all implementations
- [x] Task 2.5: Enhanced RPC span attributes (duration_ms, error_message)
- [x] Task 2.4: Unit test for telemetry config parser (TelemetryConfig_test.cpp)
- [ ] Task 2.6: Build verification
## Phase 3 Tasks (Transaction Tracing) — see OpenTelemetryPlan/Phase3_taskList.md
## Phase 4 Tasks (Consensus Tracing) — see OpenTelemetryPlan/Phase4_taskList.md
## Phase 5 Tasks (Documentation & Deployment) — see OpenTelemetryPlan/Phase5_taskList.md
## Dependency Order
- Tasks 0, 1 (parallel, no deps)
- Tasks 2, 5 (parallel, after 1)
- Task 3 (after 1, 2)
- Task 4 (after 2, 3)
- Tasks 6, 7 (parallel, after 4, 5)
## Key Design Decisions
- New CMake module: `add_module(xrpl telemetry)` in XrplCore.cmake
- `#ifdef XRPL_ENABLE_TELEMETRY` guards OTel SDK types in interface headers
- NullTelemetry always compiles; TelemetryImpl only when OTel SDK available
- Macros expand to `((void)0)` when disabled
- Section::value_or<T> used for config parsing (matches existing patterns)
- getTelemetry() added to ServiceRegistry (not Application.h) since it's a service accessor
## New Files Created
| File | Purpose |
|------|---------|
| docker/telemetry/docker-compose.yml | OTel Collector + Jaeger + Grafana stack |
| docker/telemetry/otel-collector-config.yaml | Collector receivers/processors/exporters |
| docker/telemetry/grafana/provisioning/datasources/jaeger.yaml | Grafana Jaeger datasource |
| include/xrpl/telemetry/Telemetry.h | Abstract Telemetry interface + Setup struct |
| include/xrpl/telemetry/SpanGuard.h | RAII span guard (OTel-enabled only) |
| src/libxrpl/telemetry/NullTelemetry.cpp | No-op implementation (always compiles) |
| src/libxrpl/telemetry/TelemetryConfig.cpp | Config parser (setup_Telemetry) |
| src/libxrpl/telemetry/Telemetry.cpp | OTel SDK implementation (OTel-enabled only) |
| src/xrpld/telemetry/TracingInstrumentation.h | XRPL_TRACE_* convenience macros |
## Modified Files
| File | Changes |
|------|---------|
| conanfile.py | Added `telemetry` option + opentelemetry-cpp dependency |
| CMakeLists.txt | Added `telemetry` option + find_package + compile definition |
| cmake/XrplCore.cmake | Added `telemetry` module + conditional OTel linking |
| include/xrpl/core/ServiceRegistry.h | Added getTelemetry() pure virtual + forward decl |
| src/xrpld/app/main/Application.cpp | Added telemetry_ member, init, start/stop, accessor |
| src/xrpld/rpc/detail/ServerHandler.cpp | Added XRPL_TRACE_RPC to onRequest, processRequest, WS |
| src/xrpld/rpc/detail/RPCHandler.cpp | Added per-command tracing in callMethod |
| cfg/xrpld-example.cfg | Added [telemetry] config section documentation |
## Expected Trace Hierarchy
```
rpc.request (HTTP entry point - ServerHandler::onRequest)
└── rpc.process (ServerHandler::processRequest)
└── rpc.command.<name> (RPCHandler::callMethod)
xrpl.rpc.command = "account_info"
xrpl.rpc.version = 2
xrpl.rpc.role = "user"
xrpl.rpc.status = "success"
```