Skip to content

Backport storage-ops shadow testing to 0.2.x#262

Merged
em3s merged 5 commits into0.2.xfrom
feature/0.2.x-storage-ops-backport
Apr 23, 2026
Merged

Backport storage-ops shadow testing to 0.2.x#262
em3s merged 5 commits into0.2.xfrom
feature/0.2.x-storage-ops-backport

Conversation

@em3s
Copy link
Copy Markdown
Contributor

@em3s em3s commented Apr 23, 2026

Summary

Backports the storage-ops shadow-testing feature to the v0.2.x line for the v0.2.1 release. Cherry-picks four squash-merged main commits in order: #258 -> #259 -> #261 -> #254.

With the AB-Include-Mutation-Context: true header, mutation responses surface the HBase Put / Delete / Increment ops actually issued to storage under context["storageOps"], base64-encoded. Without the header the wire format is unchanged.

Cherry-picked commits

Upstream SHA Contents
#258 3692c41 context: Map<String, Any>? on V2 / V3 mutation response items
#259 1ef1b6d AB-Include-Mutation-Context header + e2e non-breaking verification
#261 5e97d9b StorageOpCollector scaffold + mutation-path wiring
#254 9bfa878 collect() implementation for Put / Delete / Increment + tests

Conflict resolution

All conflicts landed in #261 and were limited to the import region — 0.2.x does not have main's post-v0.2.0 refactors (engine.sql.DataFrame, engine.query.LabelProvider, etc.). Resolved by keeping the 0.2.x imports as-is and adding only the StorageOpCollector import. No behavioral changes beyond what the four upstream commits define.

Affected files:

  • engine/binding/TableBinding.kt
  • v2/engine/Graph.kt
  • v2/engine/v3/NilTableBinding.kt
  • v2/engine/v3/V2BackedTableBinding.kt

Test plan

./gradlew build locally passed. Key suites:

  • StorageOpCollectorTest — round-trip per op type, multi-CF Put, multi-byte value, truncation, AppendUnknown, non-Mutation fallthrough
  • CdcContextSerializationTeststorageOps / storageOpsTruncated excluded from CDC JSON
  • V2EdgeStorageOpsSpec — V2 /graph/v2/edge with / without header
  • EdgeMutationStorageOpsSpec — V3 edge + multi-edge with header
  • MutationResultItemContextTest, MutationContextOptInE2ETest — context field shape and opt-in gating

@em3s em3s added this to the v0.2.1 milestone Apr 23, 2026
@dosubot dosubot Bot added size:L This PR changes 100-499 lines, ignoring generated files. enhancement New feature or request labels Apr 23, 2026
@em3s em3s merged commit 1cfa848 into 0.2.x Apr 23, 2026
3 checks passed
@em3s em3s self-assigned this Apr 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant