Salvage from #33248: the standalone PRs worth landing on main
Sub-issue of #32946. Tracks the standalone PRs that salvage the good parts of the closed PR #33248
(branch harshach/split-entity-repo) and its Collate companion
open-metadata/openmetadata-collate#6639 (branch harshach/entity-module-compat).
Do not delete either branch — they are the source of every hunk below. And do not cherry-pick
whole files or whole commits: the OSS branch carries a repo-wide automated comment reflow that
damaged comments in PatchEntityTool.java, FieldPathUtils.java and EntityUtil.java and stripped
~800 comment lines from BaseEntityIT. Every port is hunk-level, taken from
git diff origin/main...harshach/split-entity-repo -- <file>.
Plan and rationale: docs/plans/2026-09-17-entity-repository-epic.md (#33516).
Wave A — no dependencies
- Epic docs PR — #33516 (merged)
- Close #33248 and open-metadata/openmetadata-collate#6639
- Sub-issues under #32946 — #33517 #33518 #33519 #33520 #33521 #33522 #33523 #33524 #33525 #33526 #33527
- B1 Painless tag re-separation script redeclares
def newTags/tier/classTags/glossTags, so a tag replacement fails with "Variable [newTags] is already defined" — issue #33530, PR #33532 (merged) - B2
description.index_optionsisdocs/freqsin 5 index mappings, so phrase/Contains queries cannot match — issue #33542, PR #33543 - B3 RDF indexing drops
tableConstraints/profile/pipelineStatus/usageSummary, starving their dedicated mappers — issue #33531, PR #33533 (merged) - B5
SearchSettingsMergeUtilresolvesSystemRepositoryat class load;CachedEntityDaoevicts the two aliases with twoDELs — issue #33538, PR #33540 - T1 JDBI test decorators:
SqlQueryCounter,SqlFailureProbe(+ aforRequestsvariant),TransactionCounter— issue #33537, PR #33539. Prerequisite for every SQL-count and commit-count assertion below - U1 Guided tour skips the real permission fetch for the tour dataset — issue #33548, PR #33550
- U2 Playwright flake fixes: reindex schedule in
entity-data.setup.ts, SPARQLASKpoll inKnowledgeGraph.spec.ts,GlobalPageSize,LineageFilters— issue #33549, PR #33551 -
U3 CI shard capacity— dropped, not justified on currentCOMMON_MAX_SHARDS28 → 32main. The checked-in full-run baseline (sourceRunId34109980157) puts chromium at 62,673 worker-seconds, a lower bound of 22 shards at 3 workers / 0.85 efficiency / 19-min budget, against the current cap of 28. The branch's rationale claimed ~84,600 worker-seconds needing 30; that is not reproducible from anything in the repo. No recentmainrun has hit the "needs more than 28 shards" abort, and the file's own policy says to split heavy suites before raising the cap — which is what #33296 did. Re-open if planning actually aborts; the error message will carry the real number. - I1
test_validations_datalake.pyfixture dates relative toEXECUTION_DATE+freeze_time— issue #33544, PR #33546. Note: no assertion readsinserted_datetoday, so this is determinism hardening, not a reproduced flake.freezegunconfirmed present iningestion/setup.pytest extras. - M1 MCP: drop unused
okhttp3:mockwebserver, runIdTokenValidatorTeston the JDKHttpServer— issue #33545, PR #33547
Wave B — after T1 merges
- P1 Table + column custom metrics and column extensions: 505 → 5 SQL — #33353
- P2 Column pages resolve owners only when
profileis requested: 20 → 0 — #33524 - B4 Chart/Dashboard updaters delete and re-insert every
HASrelationship before checking for change - T2 Transaction ITs, first wave — reconcile with #33358, do not duplicate it
- T4 Multi-node IT isolation: secondary cluster nodes in a forked JVM
- T5 Zero-edit guards:
LineageHydratorTest,DefaultTemplateProviderdecoupling,TestCaseResourceIT,EntityDeleteTaskCleanupIT,McpServiceResourceIT,KnowledgePageResourceIT - C1 (Collate)
DataInsightDashboardRepository.deleteDashboardChartruns as two autocommits — the bug #33248's tests found - C2 (Collate) Slack "Test details" modal lists every test case with
fields=*(57 SQL) - C3 (Collate) Argo/MinIO dev-stack repair
Wave C
- P3
patchChangeSummaryrewrites the whole entity JSON per accepted suggestion - P4 Owners + domains for auth enrichment in one
UNION ALL— #33524 - P7 Request cache: one serialization feeds both aliases — #33525
- P6 Pipelined bulk cache publication (
putMany, 100-key batches) — #33525 - T3 Transaction ITs, second wave — assertions that encode refactor-only behaviour become sub-issues, not tests
- T6
scripts/jacoco_class_coverage.pyper-class coverage gate (optional) - P5 Read-bundle partial fill + compare-and-swap publish — #33525, lands last
Already filed from this effort
#33353, #33358, #33359, #33360, #33361 — opened 2026-09-15 by porting #33248's atomicity tests onto
main at 500d929694. #33359, #33360 and #33361 are bugs in main that the port uncovered.
Not salvaged
The 147 component-only unit-test files, the it/perf/** latency harness and
scripts/entity_api_{acceptance,benchmark}.py, scripts/entity_repository_size.py, the six
docs/entity-repository-*.md (mined for the pain list), EntityDependentCleanupIT, every API rename
in resources/migrations/MCP tools, and the h2 test dependency.
Already on main, nothing to port: searchForCompleteExportResponse (#33079), the version-history
empty-terminal-page cursor fix (#33016), LineageHydrator.
Source: open-metadata/OpenMetadata