Skip to content

Add getAllRows() to DataTableStore for cross-bucket aggregation#7278

Closed
kmccarp wants to merge 1 commit intomainfrom
kmccarp/fix-data-table-merge-by-name
Closed

Add getAllRows() to DataTableStore for cross-bucket aggregation#7278
kmccarp wants to merge 1 commit intomainfrom
kmccarp/fix-data-table-merge-by-name

Conversation

@kmccarp
Copy link
Copy Markdown
Contributor

@kmccarp kmccarp commented Apr 4, 2026

Summary

  • InMemoryDataTableStore.getRows(name, group) only returns rows from the first matching bucket when group is null
  • Composite recipes like DevCenter create multiple DataTable instances with the same class name but different instance names, each getting its own bucket
  • getRows() finds only the first one, silently dropping rows from the others -- causing non-deterministic data loss on SaaS V1
  • Adds DataTableStore.getAllRows(name) that aggregates rows across all buckets with a given data table name

Test plan

  • Verify DevCenter data tables return complete results on SaaS V1 (Netflix + Spring org)
  • Verify existing data table tests pass

InMemoryDataTableStore.getRows(name, group) only returns rows from the
first matching bucket. When multiple sub-recipes in a composite recipe
(like DevCenter) create separate DataTable instances with the same class
name but different instance names, each gets its own bucket. getRows()
finds only the first one, silently dropping rows from the others.

This causes non-deterministic data loss because ConcurrentHashMap
iteration order determines which bucket is found first.

Add DataTableStore.getAllRows(name) that aggregates rows across all
buckets with a given data table name, regardless of group or instance
name. InMemoryDataTableStore overrides it to scan all buckets.
@github-project-automation github-project-automation bot moved this to In Progress in OpenRewrite Apr 4, 2026
@shanman190 shanman190 closed this Apr 4, 2026
@github-project-automation github-project-automation bot moved this from In Progress to Done in OpenRewrite Apr 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants