fix(cdc): keep row replica diagnostics out of logs - #174
Draft
seonghobae wants to merge 4 commits into
Draft
Conversation
Contributor
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Aug 10, 2026
Open
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.
Purpose
Fix #173 test-first. Protected
develop@622e5e6c3d534f230c390f10e3832efadfc01825logs raw replicated row IDs and parser exception stack traces fromProcessedDataReplicaApplier. The replication computation needs the actual business values, but ordinary logs and propagated failure text do not.Exact current identity
develop@622e5e6c3d534f230c390f10e3832efadfc01825fix/processed-data-replica-safe-logs-622e5e67226732f8852c62c5b741bc997975a18c27f105ecd21cb36405ee2f3c2cf88ba223223bf00580afb8986887ca7d3802b02115feedf3425862009c755e2be226f1844fa9980b7311aa70dba15041d0c870feca61c0e385c5cb88b43000eaffd40438ba796Every gate/review from a predecessor head is historical and does not transfer.
RCA
idin error logs and exception messages; malformed value/key paths passed caught parser exceptions to SLF4J.TDD evidence
Behavior RED —
7226732f8852c62c5b741bc997975a18c27f105eCI run
31343633170, macOS job93321403212, reached the intended production boundary and failed exactly the four new logging tests: missing/null rows exposed identifiers; malformed value/key JSON exportedJsonParseExceptionand parser stack diagnostics. The malformed-key path still reached the expected JDBC upsert. There were no setup/import/fixture failures. The job executed the PR merged tree, so this is valid merged-tree RED behavior evidence rather than literal-source acceptance proof.Behavior GREEN —
cd21cb36405ee2f3c2cf88ba223223bf00580afbThe smallest production correction keeps JDBC row ID/data use unchanged, removes row IDs from missing/null-data logs and thrown messages, replaces parser-exception transport with stable finite classifications, preserves malformed-key fallback, and adds beginner-readable public Javadoc to
apply(...).CI
31343752793completed successfully on the current behavior source: the new four-test logging suite passed and the full reactor built successfully. Dependency Review31343752781, SBOM31343752799, SAST31343752775, and Security Scan31343752790also completed successfully on that predecessor head. Those results became historical after the documentation head advanced.Doctoring RED -> GREEN
After behavior GREEN,
8986887ca7d3802b02115feedf3425862009c755added onlyCdcDiagnosticConfidentialityDocumentationTest. CI31343915344, macOS job93322184921, ran the repaired behavior tests green and failed exactly becausedocs/doctoring/cdc-diagnostic-confidentiality.mddid not yet exist.Exact current head
e2be226f1844fa9980b7311aa70dba15041d0c87adds that source-local doctoring without modifying the canonical #149 documentation branch. It records purpose-bound diagnostic minimization, CWE-532, current OWASP Logging Cheat Sheet guidance, parser/driver/row-ID boundaries, no regex-only masking rule, active-PR traceability, and APA 7 references.For this exact current head:
31344106318: success;31344106341: success;31344106344: success;31344106304: success;31344106316: failure solely in Trivy.Trivy job
93322704338completed the scan and reported the six inherited protected-base Jackson findings (CVE-2026-54515,CVE-2026-59889,GHSA-mhm7-754m-9p8w, each resolved through root/ETL dependency resolution). The branch does not change Maven dependencies. Shared PR #160 owns the root cause; duplicating its BOM change or suppressing Trivy here is rejected. Classification:defer_until_triggeruntil #160 integrates and this unchanged feature is regenerated/revalidated against the resulting protected base.Protected CI and hard Trivy still check out the GitHub PR synthetic merge, not the literal source head. The inherited JaCoCo gate can also analyze zero classes until #164 integrates. Neither aggregate result is promoted to literal-source/non-vacuous release evidence.
Scope / shared prerequisites
This PR does not alter CDC acknowledgement (#139), graceful stop (#141), DDL application semantics (#171), replication-slot status (#170), CDC stop API response (#172), masking policy, database schema, or connector payload processing. Shared Jackson remediation #160, non-vacuous coverage #164, literal-source controls, and independent approval remain separate controls.
Keep Draft. Do not suppress inherited advisories or copy shared control-plane fixes into this bounded feature. After #160/#164 and source-identity controls integrate, regenerate every affected current-base/current-head gate and review; predecessor evidence does not transfer.