Skip to content

feat(health): forward Redfish diagnostic payloads from health logs#2831

Open
jayzhudev wants to merge 8 commits into
NVIDIA:mainfrom
jayzhudev:health/log-exporting
Open

feat(health): forward Redfish diagnostic payloads from health logs#2831
jayzhudev wants to merge 8 commits into
NVIDIA:mainfrom
jayzhudev:health/log-exporting

Conversation

@jayzhudev

Copy link
Copy Markdown
Contributor

Added opt-in support to include Redfish diagnostic payloads in selected log sinks. When enabled, health carries CPER/diagnostic data through as opaque log data. Parsing and interpretation are intentionally kept outside this crate.

Implementation:

  • Collects Redfish DiagnosticData, DiagnosticDataType, OEM type, AdditionalDataURI, size metadata, and parent correlation fields from SSE and periodic log records.
  • Added a DiagnosticLogRecord field to LogRecord.
  • Added include_diagnostics = false config for tracing, log file, and OTLP sinks.
  • Keeps diagnostic payloads disabled by default; collectors only attach diagnostics when at least one diagnostic-capable sink opts in.
  • Leaves non-log sinks, including Prometheus and health-report sinks, unchanged.

Related issues

Closes #2817

Type of Change

  • Add - New feature or capability
  • Change - Changes in existing functionality
  • Fix - Bug fixes
  • Remove - Removed features or deprecated functionality
  • Internal - Internal changes (refactoring, tests, docs, etc.)

No emitted behavior change when diagnostic payloads are disabled.

Breaking Changes

  • This PR contains breaking changes

Testing

  • Unit tests added/updated
  • Integration tests added/updated
  • Manual testing performed
  • No testing required (docs, internal refactor, etc.)

@jayzhudev jayzhudev self-assigned this Jun 24, 2026
@jayzhudev jayzhudev requested a review from a team as a code owner June 24, 2026 04:20
@coderabbitai

coderabbitai Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds optional Redfish diagnostic payload forwarding across health log collection and sink emission. It introduces diagnostic record construction, per-sink include_diagnostics configuration, discovery and collector wiring, sink emission changes, OTLP queueing updates, and benchmark/test adjustments.

Changes

Redfish Diagnostic Payload Forwarding

Layer / File(s) Summary
Diagnostic record type and emission
crates/health/src/sink/events.rs, crates/health/src/sink/mod.rs
Defines DiagnosticLogRecord and LogRecord::emitted_log_record(include_diagnostics), and re-exports the new type for sink usage and tests.
Redfish diagnostic collector helper module
crates/health/src/collectors/logs/diagnostic.rs, crates/health/src/collectors/logs/mod.rs
Adds DiagnosticPayload, nullable helpers, Redfish enum string conversion, and make_diagnostic_record, then registers the module for log collectors.
Per-sink include_diagnostics configuration and examples
crates/health/src/config.rs, crates/health/example/config.example.toml
Adds include_diagnostics to tracing, log-file, and OTLP sink configs, adds SinksConfig::includes_log_diagnostics(), and updates the example configuration.
Periodic and SSE collector diagnostic payload attachment
crates/health/src/collectors/logs/periodic.rs, crates/health/src/collectors/logs/sse.rs
Threads include_diagnostics into periodic and SSE collection and attaches diagnostic records to emitted log entries when enabled.
Discovery context and startup wiring
crates/health/src/discovery/context.rs, crates/health/src/discovery/spawn.rs, crates/health/src/lib.rs
Stores the aggregate diagnostics setting in discovery context and propagates it into collector and sink construction.
Tracing and log-file sink emission
crates/health/src/sink/tracing.rs, crates/health/src/sink/log_file.rs
Updates tracing and log-file sinks to emit diagnostics-aware records and adjusts their tests for the new log shape.
OTLP sink diagnostics-aware queueing and conversion
crates/health/src/sink/otlp.rs, crates/health/src/otlp/convert.rs
Adds diagnostics-aware OTLP log enqueueing and extends OTLP conversion tests for diagnostic body and attribute preservation.
Benchmark LogRecord literal updates
crates/health/benches/collector_pipeline.rs, crates/health/benches/sink_pipeline.rs
Updates benchmark log record literals to include the new diagnostic_record field.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 76.92% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately summarizes the main change: forwarding Redfish diagnostic payloads from health logs.
Description check ✅ Passed The description is directly related to the changeset and matches the implemented diagnostic forwarding behavior.
Linked Issues check ✅ Passed The changes satisfy #2817 by extracting diagnostic fields, adding supplemental records, and gating sink emission with include_diagnostics.
Out of Scope Changes check ✅ Passed No clearly unrelated code changes stand out; the benches, config samples, tests, and sink wiring all support the diagnostic payload feature.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
crates/health/src/sink/otlp.rs (1)

121-138: 🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift

Join/supervise drain tasks instead of detached spawns.

At Line 127 and Line 138, both drain tasks are spawned and their handles are dropped. If either task panics/exits, export can silently stop with no propagation path.

As per coding guidelines, “Avoid spawning background tasks without joining them via JoinHandle::join() or adding them to a JoinSet which is later awaited with JoinSet::join_all() to ensure panics propagate.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/health/src/sink/otlp.rs` around lines 121 - 138, The spawned handles
for both the OtlpDrainTask and OtlpMetricsDrainTask drain tasks are being
dropped without being joined or supervised, which means panics in these
background tasks will not propagate. Capture the JoinHandle returned by each
handle.spawn() call for drain.run() and metrics_drain.run(), and either store
them in a JoinSet that is later awaited with join_all() or explicitly join them
to ensure panic propagation. This ensures that if either drain task panics or
fails, the error will be properly propagated instead of silently stopping
export.

Source: Coding guidelines

🧹 Nitpick comments (1)
crates/health/src/collectors/logs/diagnostic.rs (1)

158-220: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Adopt table-driven tests for the diagnostic mapping cases.

Lines 158-220 exercise one mapping operation with multiple input variants; converting these into scenarios! / check_cases would better match repository test conventions and make edge-case growth cheaper.

As per coding guidelines, “Prefer table-driven tests using the carbide-test-support crate with scenarios! for fallible operations and value_scenarios! for total operations.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/health/src/collectors/logs/diagnostic.rs` around lines 158 - 220, The
test functions redfish_enum_string_uses_serde_wire_spelling,
diagnostic_payload_fields_preserve_opaque_payload, and
diagnostic_payload_fields_skip_absent_payload_and_uri are currently written as
individual test cases but should be consolidated into a single table-driven test
following repository conventions. Refactor these tests to use the scenarios!
macro from the carbide-test-support crate, creating a table of test input
variants (payloads, expected attributes, etc.) and iterate through them in a
single test function to verify each case, which will make the test structure
more maintainable and easier to extend with additional edge cases.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/health/src/sink/otlp.rs`:
- Around line 208-227: The diagnostic record handling in the CollectorEvent::Log
match arm bypasses mapper-based deduplication when has_included_diagnostics is
true by using only a sequence-based key instead of calling mapper.queue_key().
This causes parent log events to lose deduplication. Modify the logic to ensure
that mapper.queue_key() is always called on the parent log for deduplication
purposes (using context.endpoint_key and record.attributes), and separately
track the diagnostic sequence if needed for diagnostic-specific queuing. Ensure
the parent log's dedup key is preserved even when diagnostic enrichment is
applied, so repeated parent events continue to deduplicate correctly through the
mapper.

---

Outside diff comments:
In `@crates/health/src/sink/otlp.rs`:
- Around line 121-138: The spawned handles for both the OtlpDrainTask and
OtlpMetricsDrainTask drain tasks are being dropped without being joined or
supervised, which means panics in these background tasks will not propagate.
Capture the JoinHandle returned by each handle.spawn() call for drain.run() and
metrics_drain.run(), and either store them in a JoinSet that is later awaited
with join_all() or explicitly join them to ensure panic propagation. This
ensures that if either drain task panics or fails, the error will be properly
propagated instead of silently stopping export.

---

Nitpick comments:
In `@crates/health/src/collectors/logs/diagnostic.rs`:
- Around line 158-220: The test functions
redfish_enum_string_uses_serde_wire_spelling,
diagnostic_payload_fields_preserve_opaque_payload, and
diagnostic_payload_fields_skip_absent_payload_and_uri are currently written as
individual test cases but should be consolidated into a single table-driven test
following repository conventions. Refactor these tests to use the scenarios!
macro from the carbide-test-support crate, creating a table of test input
variants (payloads, expected attributes, etc.) and iterate through them in a
single test function to verify each case, which will make the test structure
more maintainable and easier to extend with additional edge cases.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: a63ac0d5-1ac5-4f62-ac73-4450662dc15d

📥 Commits

Reviewing files that changed from the base of the PR and between 37b9c70 and b579628.

📒 Files selected for processing (17)
  • crates/health/benches/collector_pipeline.rs
  • crates/health/benches/sink_pipeline.rs
  • crates/health/example/config.example.toml
  • crates/health/src/collectors/logs/diagnostic.rs
  • crates/health/src/collectors/logs/mod.rs
  • crates/health/src/collectors/logs/periodic.rs
  • crates/health/src/collectors/logs/sse.rs
  • crates/health/src/config.rs
  • crates/health/src/discovery/context.rs
  • crates/health/src/discovery/spawn.rs
  • crates/health/src/lib.rs
  • crates/health/src/otlp/convert.rs
  • crates/health/src/sink/events.rs
  • crates/health/src/sink/log_file.rs
  • crates/health/src/sink/mod.rs
  • crates/health/src/sink/otlp.rs
  • crates/health/src/sink/tracing.rs

Comment thread crates/health/src/sink/otlp.rs Outdated
@jayzhudev jayzhudev force-pushed the health/log-exporting branch from b579628 to ac30bd1 Compare June 24, 2026 04:45

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/health/src/sink/otlp.rs`:
- Around line 203-214: In the CollectorEvent::Log branch (and similarly in the
branches mentioned at lines 507-540), the current implementation uses a single
dedup key for both the parent log record and any diagnostic records. To fix
this, separate the enqueuing logic: enqueue the parent log record with the
existing queue_key from self.mapper.queue_key to maintain deduplication of
parent events, then enqueue diagnostic records separately with distinct keys
that bypass deduplication so they are appended rather than replaced. Update the
return statement to handle appending multiple records instead of returning a
single key-event pair, and update the test to assert that diagnostic records are
preserved and appended across bursty duplicate parent events rather than being
dropped.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 778c2b9c-b7cf-43fe-815d-e3c7ab57ca1a

📥 Commits

Reviewing files that changed from the base of the PR and between b579628 and ac30bd1.

📒 Files selected for processing (17)
  • crates/health/benches/collector_pipeline.rs
  • crates/health/benches/sink_pipeline.rs
  • crates/health/example/config.example.toml
  • crates/health/src/collectors/logs/diagnostic.rs
  • crates/health/src/collectors/logs/mod.rs
  • crates/health/src/collectors/logs/periodic.rs
  • crates/health/src/collectors/logs/sse.rs
  • crates/health/src/config.rs
  • crates/health/src/discovery/context.rs
  • crates/health/src/discovery/spawn.rs
  • crates/health/src/lib.rs
  • crates/health/src/otlp/convert.rs
  • crates/health/src/sink/events.rs
  • crates/health/src/sink/log_file.rs
  • crates/health/src/sink/mod.rs
  • crates/health/src/sink/otlp.rs
  • crates/health/src/sink/tracing.rs
✅ Files skipped from review due to trivial changes (3)
  • crates/health/benches/collector_pipeline.rs
  • crates/health/src/collectors/logs/mod.rs
  • crates/health/benches/sink_pipeline.rs
🚧 Files skipped from review as they are similar to previous changes (13)
  • crates/health/src/discovery/context.rs
  • crates/health/src/sink/mod.rs
  • crates/health/src/lib.rs
  • crates/health/src/discovery/spawn.rs
  • crates/health/src/config.rs
  • crates/health/src/collectors/logs/sse.rs
  • crates/health/src/otlp/convert.rs
  • crates/health/src/sink/events.rs
  • crates/health/src/collectors/logs/diagnostic.rs
  • crates/health/example/config.example.toml
  • crates/health/src/collectors/logs/periodic.rs
  • crates/health/src/sink/tracing.rs
  • crates/health/src/sink/log_file.rs

Comment thread crates/health/src/sink/otlp.rs Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/health/src/sink/otlp.rs`:
- Around line 170-177: Diagnostic records are currently given unique queue keys
in the OTLP sink, which bypasses DedupQueue’s bounded latest-wins behavior and
can grow memory unbounded during slowdowns. Update the diagnostic enqueue path
in the otlp sink so it reuses the existing endpoint key in save_latest, or add
an explicit drop/cap policy for diagnostics before enqueueing. Keep the fix
localized around the diagnostic_sequence / diagnostic_key logic in the otlp sink
implementation.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: baa935e3-2025-4a8f-8836-9ef8a21446cd

📥 Commits

Reviewing files that changed from the base of the PR and between ac30bd1 and 49b980f.

📒 Files selected for processing (8)
  • crates/health/src/collectors/logs/diagnostic.rs
  • crates/health/src/collectors/logs/sse.rs
  • crates/health/src/config.rs
  • crates/health/src/otlp/convert.rs
  • crates/health/src/sink/events.rs
  • crates/health/src/sink/log_file.rs
  • crates/health/src/sink/otlp.rs
  • crates/health/src/sink/tracing.rs
🚧 Files skipped from review as they are similar to previous changes (7)
  • crates/health/src/otlp/convert.rs
  • crates/health/src/collectors/logs/sse.rs
  • crates/health/src/sink/tracing.rs
  • crates/health/src/config.rs
  • crates/health/src/sink/events.rs
  • crates/health/src/sink/log_file.rs
  • crates/health/src/collectors/logs/diagnostic.rs

Comment thread crates/health/src/sink/otlp.rs Outdated
@jayzhudev jayzhudev force-pushed the health/log-exporting branch from 49b980f to 86d437a Compare June 24, 2026 05:22

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
crates/health/src/sink/otlp.rs (1)

166-174: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Diagnostic enqueue key still drops distinct payloads per endpoint.

At Line 168, using a single "{endpoint_key}|diagnostic" key makes diagnostics latest-wins per endpoint, so multiple different diagnostic records overwrite each other before drain. This contradicts the OTLP requirement to preserve parent-log dedup while appending diagnostics, and Line 535+ now locks in the dropping behavior via test expectations.

Also applies to: 535-569

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/health/src/sink/otlp.rs` around lines 166 - 174, The diagnostic
enqueue key in `crates/health/src/sink/otlp.rs` is too coarse because
`save_latest` uses a single `diagnostic_key` per `context.endpoint_key`, causing
distinct diagnostic payloads to overwrite each other before drain. Update the
enqueue logic in the OTLP sink so diagnostics are still bounded by endpoint but
are keyed in a way that preserves multiple distinct diagnostic records alongside
the parent log dedup behavior, and then adjust the related expectations in
`diagnostic` handling/tests near the existing `save_latest` usage and the `535+`
test block to match the new behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@crates/health/src/sink/otlp.rs`:
- Around line 166-174: The diagnostic enqueue key in
`crates/health/src/sink/otlp.rs` is too coarse because `save_latest` uses a
single `diagnostic_key` per `context.endpoint_key`, causing distinct diagnostic
payloads to overwrite each other before drain. Update the enqueue logic in the
OTLP sink so diagnostics are still bounded by endpoint but are keyed in a way
that preserves multiple distinct diagnostic records alongside the parent log
dedup behavior, and then adjust the related expectations in `diagnostic`
handling/tests near the existing `save_latest` usage and the `535+` test block
to match the new behavior.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: ec73a8a5-bc02-4769-84ff-1e85ef8cfefa

📥 Commits

Reviewing files that changed from the base of the PR and between 49b980f and 86d437a.

📒 Files selected for processing (4)
  • crates/health/example/config.example.toml
  • crates/health/src/config.rs
  • crates/health/src/sink/events.rs
  • crates/health/src/sink/otlp.rs
🚧 Files skipped from review as they are similar to previous changes (3)
  • crates/health/src/sink/events.rs
  • crates/health/src/config.rs
  • crates/health/example/config.example.toml

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🔍 Container Scan Summary

Service Total Critical High Medium Low Other
boot-artifacts-aarch64 3 0 0 3 0 0
boot-artifacts-x86_64 3 0 0 3 0 0
forge-admin-cli-x86_64 265 6 24 98 7 130
machine-validation-runner 717 32 188 267 36 194
machine_validation 717 32 188 267 36 194
machine_validation-aarch64 717 32 188 267 36 194
nvmetal-carbide 717 32 188 267 36 194
TOTAL 3139 134 776 1172 151 906

Per-CVE detail lives in the per-service grype-* artifacts (JSON + SARIF). Severity counts only — no CVE IDs published here.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
crates/health/src/sink/otlp.rs (1)

124-135: 🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift

Join or lifecycle-manage spawned OTLP drain tasks.

handle.spawn(drain.run()) and handle.spawn(metrics_drain.run()) drop their JoinHandles, so panics won’t propagate and task shutdown cannot be coordinated.

Please route these through a lifecycle-managed JoinSet (or retain handles and join/cancel explicitly).

As per coding guidelines, “Avoid spawning background tasks without joining them via JoinHandle::join() or adding them to a JoinSet…”. As per path instructions, Rust reviews should enforce “joined/cancellable background tasks.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/health/src/sink/otlp.rs` around lines 124 - 135, The OTLP drain tasks
are spawned without any lifecycle management, so their JoinHandles are dropped
and shutdown/panic handling can’t be coordinated. Update the spawning logic
around drain.run() and OtlpMetricsDrainTask::run() to keep them joined or
cancellable, preferably by adding both tasks to a JoinSet or retaining the
JoinHandle values and explicitly joining/canceling them during shutdown.

Sources: Coding guidelines, Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@crates/health/src/sink/otlp.rs`:
- Around line 124-135: The OTLP drain tasks are spawned without any lifecycle
management, so their JoinHandles are dropped and shutdown/panic handling can’t
be coordinated. Update the spawning logic around drain.run() and
OtlpMetricsDrainTask::run() to keep them joined or cancellable, preferably by
adding both tasks to a JoinSet or retaining the JoinHandle values and explicitly
joining/canceling them during shutdown.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: eebcfd8e-ab34-4c37-9a30-3a4366b041b5

📥 Commits

Reviewing files that changed from the base of the PR and between 86d437a and 0167816.

📒 Files selected for processing (7)
  • crates/health/example/config.example.toml
  • crates/health/src/collectors/logs/periodic.rs
  • crates/health/src/collectors/logs/sse.rs
  • crates/health/src/config.rs
  • crates/health/src/sink/events.rs
  • crates/health/src/sink/otlp.rs
  • crates/health/src/sink/tracing.rs
🚧 Files skipped from review as they are similar to previous changes (5)
  • crates/health/example/config.example.toml
  • crates/health/src/sink/tracing.rs
  • crates/health/src/collectors/logs/periodic.rs
  • crates/health/src/sink/events.rs
  • crates/health/src/collectors/logs/sse.rs

@jayzhudev

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Signed-off-by: Jay Zhu <jayzhu@nvidia.com>
Signed-off-by: Jay Zhu <jayzhu@nvidia.com>
Signed-off-by: Jay Zhu <jayzhu@nvidia.com>
Signed-off-by: Jay Zhu <jayzhu@nvidia.com>
Signed-off-by: Jay Zhu <jayzhu@nvidia.com>
Document the new diagnostic helpers and tests so doc coverage stays above the required threshold.

Signed-off-by: Jay Zhu <jayzhu@nvidia.com>
Preserve every diagnostic payload while keeping parent log records on mapper-based deduplication.

Removed diagnostic_sequence.

Signed-off-by: Jay Zhu <jayzhu@nvidia.com>
Keep diagnostic OTLP records on the existing latest-wins endpoint key while preserving parent log mapper dedup.

Remove unrelated OTLP zero-value validation from this diagnostic cleanup and fill doc comments for touched health types.

Added docstrings.

Signed-off-by: Jay Zhu <jayzhu@nvidia.com>
@jayzhudev jayzhudev force-pushed the health/log-exporting branch from 0167816 to 9010ca9 Compare June 24, 2026 14:28
@jayzhudev jayzhudev requested review from Matthias247 and yoks June 24, 2026 15:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Forward Redfish diagnostic payloads from health logs

1 participant