Repository navigation
Conversation
|
Local Java test run: FAILED — details
Failed: Selected but produced no report: Every test skipped, so these exercised nothing (check their assumptions — usually the engine): Tests run locally
Per-class counts come from the test reports, which can credit a test to the wrong class when classes run concurrently, and keep only the last run of a nested class that several test classes inherit. The summary's step totals are Maven's own counts. integration · postgres-opensearch · parallel: 100 classes
Why these tests
Impacted, not run locally (16)
Commandsmvn -B package -pl openmetadata-mcp,openmetadata-service -am -Dspring-boot.repackage.skip=true '-Dtest=org/openmetadata/DefaultOperationalConfigProviderTest.java,org/openmetadata/csv/**/*Test.java,org/openmetadata/csv/**/Test*.java,org/openmetadata/csv/**/*Tests.java,org/openmetadata/csv/**/*TestCase.java,org/openmetadata/schema/**/*Test.java,org/openmetadata/schema/**/Test*.java,org/openmetadata/schema/**/*Tests.java,org/openmetadata/schema/**/*TestCase.java,org/openmetadata/sdk/**/*Test.java,org/openmetadata/sdk/**/Test*.java,org/openmetadata/sdk/**/*Tests.java,org/openmetadata/sdk/**/*TestCase.java,org/openmetadata/service/**/*Test.java,org/openmetadata/service/**/Test*.java,org/openmetadata/service/**/*Tests.java,org/openmetadata/service/**/*TestCase.java,AgentSparqlToolErrorsTest,BasicAuthLoginServletTest,CommonUtilsAuthorizeOverwriteTest,CompanyContextToolTest,CreateEntityToolTest,CreateTestCaseToolTest,DefaultToolContextTest,EntityNeighborhoodToolTest,FindByTagToolTest,GetConceptContextToolTest,GetEntityToolTest,McpChangeEventUtilTest,McpServerRequestContextTest,McpUsageRecorderTest,OntologyDescribeToolTest,PatchEntityToolTest,PersonaSearchScopeTest,RdfToolDescriptionVocabularyTest,RdfToolGatingTest,SearchMetadataToolTest,SemanticSearchToolTest,ShaclValidateToolTest,SparqlQueryToolAgentProfileTest,SparqlQueryToolTest,UserSSOOAuthProviderTest' -Dsurefire.failIfNoSpecifiedTests=false
mvn -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Pmysql-elasticsearch -DintegrationTests.lane=parallel '-Dit.test=<380 classes>' -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false
mvn -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Pmysql-elasticsearch -DintegrationTests.lane=global-state -Dit.test=AppsResourceIT,ChangeRequestAdmissionIT,ChangeRequestApplyIT,ChangeRequestDecisionIT,ChangeRequestImportAndBulkIT,ChangeRequestLifecycleIT,ChangeRequestResourceIT,ConversationSchemaMigrationIT,CsvExportMultiNodeIT,DataContractValidationAppIT,EntityShapeIT,GlossaryOntologyExportIT,MetricMigrationIT,SearchIndexRetryQueueIT,SessionMultiNodeIT,SystemResourceIT,TagRecognizerFeedbackIT,TestSuiteReindexIT,UserMetricsResourceIT,VectorEmbeddingIntegrationIT,WorkflowDefinitionResourceIT -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false
mvn -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Pmysql-elasticsearch -DintegrationTests.lane=rdf -Dit.test=AgentSparqlResourceIT,LodResourceIT,RdfBatchFieldsIT,RdfBlueGreenRebuildIT,RdfConceptRealizationIT,RdfFusekiAuthorizationIT,RdfGlossaryGraphIT,RdfGovernanceRulesIT,RdfGraphExploreIT,RdfIndexAppScaleIT,RdfIndexRunRecoveryIT,RdfInferenceMaterializationIT,RdfInferenceMultiServerIT,RdfLiveProjectionIT,RdfLiveWriteRecoveryIT,RdfMcpKnowledgeGraphIT,RdfOntologyActivationIT,RdfPolicyRevocationIT,RdfReindexFailuresIT,RdfReindexInsertOnlyIT,RdfReindexRunLockIT,RdfRelationExclusionsIT,RdfResourceIT,RdfRoundTripFidelityIT,RdfSemanticSearchIT,RdfSourceRevisionIT,RdfSqlResourceIT,RdfStorageReadinessIT,RdfTagsTierCertificationIT -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false
mvn -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Pcache-tests -DintegrationTests.lane=parallel -Dit.test=AlertStateIT,BundleWarmupCertificationIT,ContainerCacheCorrectnessIT,EntityCacheWriteOrderIT,OneTransactionFlushAtomicityIT,RelationshipCacheInvalidationIT,TagRenameCacheIT,UncachedReadIT -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false
mvn -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Pcache-tests -DintegrationTests.lane=global-state -Dit.test=SessionRedisMultiNodeIT,TokenRevocationRedisMultiNodeIT -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false
mvn -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Ppostgres-opensearch -DintegrationTests.lane=parallel '-Dit.test=<99 classes>' -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false
mvn -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Ppostgres-opensearch -DintegrationTests.lane=global-state -Dit.test=ConversationSchemaMigrationIT,EntityShapeIT,GlossaryOntologyExportIT,MetricMigrationIT,PatchTableEmbeddingIT -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false
mvn -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Ppostgres-opensearch -DintegrationTests.lane=rdf -Dit.test=AgentSparqlResourceIT,LodResourceIT,RdfBatchFieldsIT,RdfBlueGreenRebuildIT,RdfConceptRealizationIT,RdfFusekiAuthorizationIT,RdfGlossaryGraphIT,RdfGovernanceRulesIT,RdfGraphExploreIT,RdfIndexAppScaleIT,RdfIndexRunRecoveryIT,RdfInferenceMaterializationIT,RdfInferenceMultiServerIT,RdfLiveProjectionIT,RdfLiveWriteRecoveryIT,RdfMcpKnowledgeGraphIT,RdfOntologyActivationIT,RdfPolicyRevocationIT,RdfReindexFailuresIT,RdfReindexInsertOnlyIT,RdfReindexRunLockIT,RdfRelationExclusionsIT,RdfResourceIT,RdfRoundTripFidelityIT,RdfSemanticSearchIT,RdfSourceRevisionIT,RdfSqlResourceIT,RdfStorageReadinessIT,RdfTagsTierCertificationIT -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false
mvn -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Psearch-it -DdatabaseType=postgres -DsearchType=opensearch -Djpw.data.mode=ingest -Dit.test=ColumnIndexingToggleIT,CustomPropertyAggregationIT,DbToEsCountReconciliationIT,ExtensionHighlightSearchIT,FieldNamesAggregationIT,HighlightFieldSaveValidationIT,IndexFieldExplosionIT,IndexMappingTemplatesIT,LiveIndexRetryIT,LiveSearchSettingsChangeIT,NestedHierarchyIndexIT,NoDuplicatesDuringReindexIT,OwnersNestedMappingIT,PerEntitySearchDefaultsIT,ReindexAliasSwapIT,ReindexDocSurvivalIT,ReindexOutageRecoveryIT,ReindexStatsIT,ReindexStopUnderLoadIT,SearchAggregateRbacIT,SearchClusterFitnessReindexE2EIT,SearchCountConsistencyIT,SearchEntityRankingIT,SearchRelevancyPreviewIT,SearchScoringIT,StagedIndexUnrefreshedCountIT,TestCaseStaleDefinitionReindexIT,UnsafeReindexConfigIT -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=falseFollow-up verification on the final rebased contentFinal branch commit:
All Java runs use the command-only The missing |
Focused validation following the initial runner failureThese runs exercised the working changes now committed in PostgreSQL API/migrations — runner: 2,200 passed, 181 skippedPer-case XML tallies below. In the parallel run, inherited nested tests duplicate some skipped placeholders; the runner aggregate above is authoritative for skips. Per-class console summaries also misattribute concurrent cases, so passing counts below use testcase class names.
Command: mvn -Djunit.version=5.11.4 -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Ppostgres-opensearch -DintegrationTests.lane=parallel -Dit.test=AlertBacklogMigrationIT,ChildFieldEdgeMatrixIT,ChildFieldPaginationIT,ColumnCustomPropertiesIT,ConfigResourceIT,ConsumerIdMigrationIT,ContextMemoryStatusMigrationIT,ContinuousMigrationIT,CreationAuditMigrationIT,DataProductDomainMigrationIT,DataQualityDimensionMigrationIT,DatabaseSmokeIT,DbTuneIT,DeepCopyBenchmarkIT,EntityCacheInvalidationIT,EntityCacheMemoryIT,EntityCursorOffsetIT,EntityDeleteTaskCleanupIT,EntityHardDeletionAtomicityIT,EntityHistoryPaginationIT,EntityLifecycleStagesIT,EntityNameIndexIT,EntityProfileResourceIT,EntityRelationshipCleanupIT,EntityShapeBaselineIT,EntityStatusWorkflowOwnershipIT,EntitySubtreeAtomicityIT,EntityTransactionBoundaryIT,EntityUpdateLockOrderIT,EntityUtilValidateEntityReferenceIT,FlattenedChildrenHighlightSearchIT,GlossaryRdfImportIT,GlossaryTermRelationAdvancedIT,GlossaryTermRelationEdgeCasesIT,GlossaryTermRelationEdgeIT,GlossaryTermRelationFixesIT,GlossaryTermRelationIT,GlossaryTermRelationSettingsIT,GlossaryTermRelationSettingsPermissionsIT,GlossaryTermRelationUsageIT,GlossaryTermRelationsIT,GlossaryTermResourceIT,IncidentPaginationIT,IndependentOntologyActivationIT,IndependentOntologyApprovalIT,IndependentOntologyAxiomIT,IndependentOntologyHierarchyIT,IndependentOntologyReferenceIT,IndependentOntologyReleaseDiffIT,IndependentOntologyReleaseExportIT,IndependentOntologyReleaseIT,IndependentOntologyResourceIT,IndependentOntologyRetentionIT,IndependentOntologyReviewRecoveryIT,LifeCycleCreatedSentinelMigrationIT,McpRdfNotEnabledIT,NativeOntologyMemoryIT,OntologyAiResourceIT,OntologyAxiomResourceIT,OntologyBulkIT,OntologyChangeSetIT,OntologyConceptResourceIT,OntologyEditLockResourceIT,OntologyEffectiveAttributesIT,OntologyGovernanceIT,OntologyImpactIT,OntologyModelingIT,OntologyPackResourceIT,OntologyPatternIT,OntologyPropertyResourceIT,OntologyResourceIT,OntologyStructureIT,OntologySubsetIT,OpenMetadataOperationsIT,OptimisticLockingColumnPatchIT,OrphanIngestionPipelineCleanupIT,OrphanedEntityReferenceIT,OrphanedIndexCleanerScopedCleanupIT,OrphanedTimeSeriesCleanupIT,OverrideMetadataRestoreMigrationIT,PaginationIT,RdfScaleResourcesTest,RecognizerFeedbackRepositoryTest,RelationshipTypeContradictionIT,RelationshipTypeResourceIT,RestoreHierarchyIT,SampleDataStorageMigrationIT,SavedSparqlQueryResourceIT,SeedDataPresenceIT,ServiceLineagePipelineRoutingMigrationIT,SoftDeleteRetentionIT,TableResourceIT,TestCaseSoftDeleteSearchIT,ThresholdParameterMigrationIT,TypeResourceIT,UserResourceIT,WritePathBenchmarkIT,RdfFusekiAuthorizationIT -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false > /tmp/ontology-postgres-parallel-full.log 2>&1PostgreSQL isolated — 334 passed, one skippedPer-case XML tallies below. In the parallel run, inherited nested tests duplicate some skipped placeholders; the runner aggregate above is authoritative for skips. Per-class console summaries also misattribute concurrent cases, so passing counts below use testcase class names.
Command: mvn -Djunit.version=5.11.4 -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Ppostgres-opensearch -DintegrationTests.lane=global-state -Dit.test=ConversationSchemaMigrationIT,EntityShapeIT,GlossaryOntologyExportIT,MetricMigrationIT,PatchTableEmbeddingIT -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false > /tmp/ontology-postgres-isolated-full.log 2>&1Real Fuseki — 279 passed, two fixture failures, one skipped; corrected authorization cases subsequently passedPer-case XML tallies below. In the parallel run, inherited nested tests duplicate some skipped placeholders; the runner aggregate above is authoritative for skips. Per-class console summaries also misattribute concurrent cases, so passing counts below use testcase class names.
Command: mvn -Djunit.version=5.11.4 -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Ppostgres-opensearch -DintegrationTests.lane=rdf -Dit.test=AgentSparqlResourceIT,LodResourceIT,RdfBatchFieldsIT,RdfBlueGreenRebuildIT,RdfConceptRealizationIT,RdfFusekiAuthorizationIT,RdfGlossaryGraphIT,RdfGovernanceRulesIT,RdfGraphExploreIT,RdfIndexAppScaleIT,RdfIndexRunRecoveryIT,RdfInferenceMaterializationIT,RdfInferenceMultiServerIT,RdfLiveProjectionIT,RdfLiveWriteRecoveryIT,RdfMcpKnowledgeGraphIT,RdfOntologyActivationIT,RdfPolicyRevocationIT,RdfReindexFailuresIT,RdfReindexInsertOnlyIT,RdfReindexRunLockIT,RdfRelationExclusionsIT,RdfResourceIT,RdfRoundTripFidelityIT,RdfSemanticSearchIT,RdfSourceRevisionIT,RdfSqlResourceIT,RdfStorageReadinessIT,RdfTagsTierCertificationIT -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false > /tmp/ontology-postgres-rdf-full.log 2>&1Original PostgreSQL/OpenSearch indexing — 68 passed, five errorsPer-case XML tallies below. In the parallel run, inherited nested tests duplicate some skipped placeholders; the runner aggregate above is authoritative for skips. Per-class console summaries also misattribute concurrent cases, so passing counts below use testcase class names.
Command: mvn -Djunit.version=5.11.4 -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Psearch-it -DdatabaseType=postgres -DsearchType=opensearch -Djpw.data.mode=ingest -Dit.test=ColumnIndexingToggleIT,CustomPropertyAggregationIT,DbToEsCountReconciliationIT,ExtensionHighlightSearchIT,FieldNamesAggregationIT,HighlightFieldSaveValidationIT,IndexFieldExplosionIT,IndexMappingTemplatesIT,LiveIndexRetryIT,LiveSearchSettingsChangeIT,NestedHierarchyIndexIT,NoDuplicatesDuringReindexIT,OwnersNestedMappingIT,PerEntitySearchDefaultsIT,ReindexAliasSwapIT,ReindexDocSurvivalIT,ReindexOutageRecoveryIT,ReindexStatsIT,ReindexStopUnderLoadIT,SearchAggregateRbacIT,SearchClusterFitnessReindexE2EIT,SearchCountConsistencyIT,SearchEntityRankingIT,SearchRelevancyPreviewIT,SearchScoringIT,StagedIndexUnrefreshedCountIT,TestCaseStaleDefinitionReindexIT,UnsafeReindexConfigIT -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false > /tmp/ontology-postgres-search-it-full.log 2>&1PostgreSQL/OpenSearch regression rerun — all seven passedPer-case XML tallies below. In the parallel run, inherited nested tests duplicate some skipped placeholders; the runner aggregate above is authoritative for skips. Per-class console summaries also misattribute concurrent cases, so passing counts below use testcase class names.
Command: mvn -B verify -pl :openmetadata-integration-tests -am \
-Dspring-boot.repackage.skip=true -Djunit.version=5.11.4 \
-Psearch-it -DdatabaseType=postgres -DsearchType=opensearch -Djpw.data.mode=ingest \
'-Djunit.jupiter.testclass.order.default=org.junit.jupiter.api.ClassOrderer$ClassName' \
-Dit.test=DbToEsCountReconciliationIT,ReindexStatsIT,SearchAggregateRbacIT \
-Dfailsafe.failIfNoSpecifiedTests=false \
-Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=false \
> /tmp/ontology-postgres-search-fixes.log 2>&1MySQL and unit checksMySQL/Elasticsearch expanded API run: 1,327 total, four failures, 131 skips. The focused follow-up passed all four formerly failing cases and all 19
Expanded MySQL classes that ran (parallel console class counts are not reliable; use the aggregate above):
The initial full service run is preserved in the separate generated-details comment. Frontend and generated Python modelsBroad merged Jest run: 539 passed, one failed
Corrected focused Jest rerun: 161 passed
Post-merge browser E2Es and final changed-class coverage remain pending. Full UI TypeScript check remains red: 554 diagnostics versus 565 on clean main with the same dependencies; no new file/error-code pairs observed. Java formatting, UI lint/format/license/i18n, and commit/pre-push ownership hooks passed. Historical pre-merge validation included 1,053 MySQL API passes (127 skips), 240 PostgreSQL/Fuseki API passes (36 skips), 551 ontology/service unit passes, SDK/MCP checks (15 shared SDK, 14 ontology SDK, 12 MCP), a multi-vote workflow case, 298 UI unit cases, 21 Python model cases and 66 native/glossary browser scenarios across focused runs. Those pre-merge runs do not validate the final merged UI. |
|
| Count | Rule |
|---|---|
| 5 | react-hooks/exhaustive-deps |
| 5 | openmetadata-imports/review-sequential-api-calls |
| 4 | openmetadata-imports/no-lower-layer-page-imports |
| 1 | openmetadata-ui-patterns/no-non-adaptive-palette |
All findings
| Location | Rule | Message | |
|---|---|---|---|
| 🟡 | src/components/ActivityFeed/TaskFeedCard/TaskFeedCardFromTask.component.tsx:42:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/ActivityFeed/TaskFeedCard/TaskFeedCardFromTask.component.tsx:43:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/ActivityFeed/TaskFeedCard/TaskFeedCardFromTask.component.tsx:192:9 |
react-hooks/exhaustive-deps |
The 'handleTaskLinkClick' function makes the dependencies of useMemo Hook (at line 228) change on every render. Move it inside the useMemo callback. Alternative |
| 🟡 | src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx:71:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx:72:1 |
openmetadata-imports/no-lower-layer-page-imports |
Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here. |
| 🟡 | src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx:748:9 |
react-hooks/exhaustive-deps |
The 'updateTaskData' function makes the dependencies of useCallback Hook (at line 856) change on every render. To fix this, wrap the definition of 'updateTaskDa |
| 🟡 | src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx:1320:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has unnecessary dependencies: 'onTaskDropdownClick', 'taskHandler.approvedValue', and 'taskHandler.rejectedValue'. Either exclude them or rem |
| 🟡 | src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx:1355:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has unnecessary dependencies: 'isPartOfAssigneeTeam' and 'task'. Either exclude them or remove the dependency array. |
| 🟡 | src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx:1418:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has unnecessary dependencies: 'onTaskResolve' and 'task'. Either exclude them or remove the dependency array. |
| 🟡 | src/components/OntologyExplorer/OntologyModelingWorkbench.tsx:124:17 |
openmetadata-ui-patterns/no-non-adaptive-palette |
Raw palette class "tw:focus-visible:outline-brand-600" is static — it does not flip in dark mode. Use the theme-adapting "utility-" variant (tw:outline-utility- |
| 🟡 | src/rest/ontologyAPI.test.ts:85:12 |
openmetadata-imports/review-sequential-api-calls |
Review these sequential API requests. If they are independent, start them together with Promise.all/Promise.allSettled; keep sequencing only when data-dependent |
| 🟡 | src/rest/ontologyAPI.test.ts:93:12 |
openmetadata-imports/review-sequential-api-calls |
Review these sequential API requests. If they are independent, start them together with Promise.all/Promise.allSettled; keep sequencing only when data-dependent |
| 🟡 | src/rest/ontologyAPI.test.ts:124:12 |
openmetadata-imports/review-sequential-api-calls |
Review these sequential API requests. If they are independent, start them together with Promise.all/Promise.allSettled; keep sequencing only when data-dependent |
| 🟡 | src/rest/ontologyAPI.test.ts:146:5 |
openmetadata-imports/review-sequential-api-calls |
Review these sequential API requests. If they are independent, start them together with Promise.all/Promise.allSettled; keep sequencing only when data-dependent |
| 🟡 | src/rest/ontologyAPI.test.ts:305:24 |
openmetadata-imports/review-sequential-api-calls |
Review these sequential API requests. If they are independent, start them together with Promise.all/Promise.allSettled; keep sequencing only when data-dependent |
Fix locally (fast - only checks files changed in this branch):
make ui-checkstyle-changed| useEffect(() => { | ||
| if (!ontologyId) { | ||
| setLoadedOntology(undefined); | ||
|
|
||
| return; | ||
| } | ||
| const controller = new AbortController(); | ||
| getOntology(ontologyId, 'owners,reviewers', controller.signal) | ||
| .then((ontology) => { | ||
| if (!controller.signal.aborted) { | ||
| setLoadedOntology(ontology); | ||
| } | ||
| }) | ||
| .catch((error) => { | ||
| if (!controller.signal.aborted) { |
There was a problem hiding this comment.
💡 Edge Case: Failed ontology load leaves the Studio stuck on "Loading"
renderWorkspace now shows t('label.loading') whenever ontologyId is set and selectedOntology is undefined. If getOntology rejects (for example a stale or deleted ?ontology= deep link, a 404 or a 403), the catch only shows a toast and never sets any state. loadedOntology therefore never matches ontologyId, and the workspace keeps showing "Loading" until the user picks another ontology. Before this change a failed load fell back to the glossary Studio. A fix is to track the failed id in state and, on failure, either drop the ontology search param or render an error/empty state instead of the loading status.
Drop the unresolvable ontology from the URL when it fails to load, so the page falls back to the glossary Studio:
.catch((error) => {
if (!controller.signal.aborted) {
showErrorToast(error);
setSearchParams((current) => {
const next = new URLSearchParams(current);
next.delete('ontology');
next.delete(DRAFT_SEARCH_PARAM);
return next;
});
}
});
- Apply fix
Check the box to apply the fix or reply for a change | Was this helpful? React with 👍 / 👎
Preserve the merged glossary Studio and add native model, release and query surfaces. Apply native memory proposals atomically through the existing change set review workflow and per-ontology working-state lock. Seal canonical release content independently of audit and permission fields, bind approval to immutable content, recover transient review failures, and compare releases with their captured baseline. Keep native working edits out of field-level approval staging and enforce permissions on active-release queries. Keep unreleased ontology DDL in native/2.1.0, document the capability boundary, and remove unrelated SDK and event changes. Validate the native APIs on MySQL and PostgreSQL, plus active graph behavior against real Fuseki.
Remove the orphaned table from the search index as well as SQL and verify cleanup completes. Count soft-deleted entities on both sides of database/search reconciliation and include an explicit deleted-user fixture. All seven affected tests pass on PostgreSQL/OpenSearch.
Restore native graph and scope navigation, release glossary edit leases on native selection, and preserve ordinary task feed actions. Batch current ownership and reviewer loading for release reads and avoid derived hierarchy work during capture. Add native workspace regressions and a PostgreSQL SQL-budget test. Record focused validation and the remaining review decisions in the completion plan.
3a024dc to
4fe9e07
Compare
Code Review 👍 Approved with suggestions 1 closed / 2 findings🔴 High risk · The 2.1.0 migration clears glossary axioms and applied change-set history, potentially deleting stored data, while release activation can replace published ontology graphs. Native Ontology Studio and governed release changes are approved with suggestions. One open minor finding: when an ontology deep link fails to load (for example a stale 💡 Edge Case: Failed ontology load leaves the Studio stuck on "Loading"📄 openmetadata-ui/src/main/resources/ui/src/pages/OntologyExplorerPage/OntologyExplorerPage.tsx:443-457 📄 openmetadata-ui/src/main/resources/ui/src/pages/OntologyExplorerPage/OntologyExplorerPage.tsx:1046-1049
Drop the unresolvable ontology from the URL when it fails to load, so the page falls back to the glossary Studio✅ 1 closed✅ Bug: Axiom definition list shows raw i18n keys label.axiom / label.axiom-plural
🤖 Prompt for agentsVerificationRules No rules evaluated Functional validation Not enabledAuto-approval Not enabledFor more verification details, comment OptionsDisplay: compact → Showing compact verification results. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source |
Describe your changes:
Fixes #35671
Add native ontology entities and governed publication to Ontology Studio. Organizations can author concepts, properties and axioms independently of business glossaries, capture an immutable release, review it through the existing approval workflow, and activate or roll back its published model. Glossary terms and their configurable relations remain supported.
The branch commits add native storage and releases (
180a9b0c55d), integrate Studio and memory review (492e227c169), fix search-test cleanup/count reconciliation (e21b9f98f74), and restore native navigation with batched release permissions (4fe9e07cc3a). The rebase preserves main's lifecycle/change-request handling and assigned-reviewer approval permissions.Draft: rebased onto
mainat2d95c1a1b9a. The full affected Java matrix completed, and the original MySQL failures passed focused reruns; exact results and remaining skips are below. Browser E2E, the final UI recording, changed-class coverage, and the documented feature-review gaps remain outstanding.The native Studio fixes: native concepts populate the tree again; scope changes clear unrelated draft links and stop glossary edit leases; native deep links remain usable; ordinary workflow quick actions retain their existing behavior; missing labels reuse existing translations. Release reads bulk-load current owners/reviewers and still authorize every member. Capture omits derived hierarchy fields. The new PostgreSQL regression observes the same SQL read counts for 4 and 40 concepts.
Still open from review 4: D1 (glossary axiom authoring and deletion of experimental axiom/change-set history) and D2 (a product producer for native memory drafts and drafts surviving unrelated edits) are pending scope decisions. The current native memory path supports API-created draft review/apply only. Remaining review triage includes memory conflicts/derivation/pagination, archived handling, query-model materialization, shared workflow/task-storage/RDF rebuild coverage, and Playwright fixture cleanup/assertions. This checkpoint does not close the review.
Type of change:
High-level design:
NOT_RUNpending Jena CHECK.OntologyWorkingState; applying a memory does not publish it.GlossaryTerm. Per-definition approvals were excluded because publication approves the complete release. Metadata labels, native imports and adapters for native library installation, AI generation, visual query generation and data exploration remain follow-ups.All DDL is in the unreleased native
2.1.0migration for MySQL and PostgreSQL. Existing glossaries are not converted. Development databases containing earlier unreleased ontology layouts require the documented reset; the current migration explicitly clears glossary-owned experimental axioms and legacy axiom change sets, including applied history. Review 4 D1 asks whether this reset remains the intended behavior; it is unchanged by the follow-up fix.Design: organizational ontology plan, Studio and memory ADR, and completion plan.
Tests:
Use cases covered
Unit tests
SecurityUtilTestandUserUtilTest.src/utils/CSV/CSVUtilsClassBase.test.tsx.ingestion/tests/unit/models/test_ontology_iris.py,ingestion/tests/unit/topology/database/test_oracle.py, andingestion/tests/unit/utils/test_stored_procedures.py. The initial collection error was a missing local Oracle dependency; installing the repository's existingoracledb>=3.4.2,<4requirement resolved it.Jest suites in the 778-test run (paths relative to the UI root)
Earlier unit-test evidence, before the rebase
ODCSConverterTest.testFromODCS_WithTeamfailure was reproduced on main. The full run was not repeated. All 19 restore unit tests also passed.OntologyAxiomEditor,OntologyReviewPanel,OntologyMemoryReviewPanel,TaskDetailPanelandTaskTabNew.component.ingestion/tests/unit/models/test_ontology_iris.pypassed all 21 cases.OntologyExplorerPage,OntologyMemoryReviewPanel,OntologyGraph.utils,graphBuilders,OntologyStudio.utils,useOntologyGraph, andTaskFeedCardFromTask.component. The native tree and draft-scope regressions were reproduced against their previous implementations before the fixes.OntologyReleaseComparisonTest(6),OntologyReleaseReaderTest(2),OntologyReleaseComparisonStorageTest(2),OntologyReleaseActivationTest(4), andOntologyReleaseCaptureTest(14), including both database dialects. The existing reviewer-inheritance lookup was subsequently retained; the final backend is covered by the PostgreSQL API results below.Changed-file ESLint, Prettier, Java Spotless and commit hooks pass. The full design-token audit remains red with 75 errors and 47 warnings in unchanged CSS/LESS files; this follow-up did not modify those styles or audit inputs.
Backend integration tests
The full affected matrix ran on the first rebase at
8e5b5fe16b6. Four additional main commits landed during validation; the final replay onto2d95c1a1b9achanged exactly their 43 paths, with no overlap with the ontology branch. Models were regenerated, and focused upstream and MySQL checks ran on that final base. The full matrix is preserved verbatim below, including its original failures; passing retries do not turn that run into a pass.UserResourceIT#test_updateUserEmailToAnotherDomainIsIgnored. The accompanyingSecurityUtilTestandUserUtilTestrun passed all 167 unit cases.ChangeRequestImportAndBulkIT(9) andSystemResourceIT(59). The originally failing removal/lineage/output-port approval case executed and passed.The 15-class MySQL rerun covered
TaskChangeEventIT,BulkChangeEventIT,EntityDeleteTaskCleanupIT,GlossaryTermInheritedReviewerApprovalIT,MetricResourceIT,PolicyRevocationConcurrencyIT,SearchIndexFieldLimitIT,DashboardResourceIT,WorksheetResourceIT,LineageBidirectionalIT,AutoCloseIncidentIT,GlossaryTermMoveApprovalIT,DataRetentionAppIT,SearchIndexPromotionIT, andSearchIndexingFieldsParityIT.The initial MySQL parallel phase used dynamic host concurrency and started K3s on demand. Later phases and reruns used CI's limits:
-DintegrationTests.parallelStrategy=fixed -DintegrationTests.parallelism=4 -DintegrationTests.maxPoolSize=16. All Java commands used the command-only-Djunit.version=5.11.4compatibility override. No POM or CI workflow was changed.The global-state fixture failed because it attempted approval as an owner whom the workflow did not assign. It now uses the existing explicit-assignee helper; production authorization is unchanged. The planner's missing
McpServiceResourceITreport refers to an upstream TODO-only file with no test class. Optional scale, external embedding and nightly-only exclusions remain recorded in the report. The three initially skipped application suites skip after another test starts K3s; their focused rerun exercised them without K3s.Local Java test run: FAILED
e387e5027b90(baseorigin/main) — uncommitted changes were presentFailed:
GlossaryTermInheritedReviewerApprovalIT#test_directReviewerOnTerm_createsOpenApprovalTask(TestNamespace),DashboardResourceIT#testBulkFluentAPI(TestNamespace),BulkChangeEventIT#test_bulkNoOpUpdate_emitsNoChangeEvent(boolean, TestNamespace)[1],TaskChangeEventIT#bulkOperationsRecordOneEventPerTask(TestNamespace),GlossaryTermInheritedReviewerApprovalIT#test_reviewerAddedToGlossaryAfterFirstTerm_stillGatesLaterTerms(TestNamespace),PolicyRevocationConcurrencyIT#readersStartedAfterTheUpdateNeverSeeTheRemovedRuleForATeamInheritedRole(TestNamespace),GlossaryTermMoveApprovalIT#test_approveApprovalTaskAfterMovingParentTerm_drivesMovedTermToApproved(TestNamespace),EntityDeleteTaskCleanupIT#softDelete_keepsTasksAboutTheEntity(TestNamespace),TaskChangeEventIT#resolvingAWorkflowTaskRecordsItsStatusAndResolution(TestNamespace),GlossaryTermInheritedReviewerApprovalIT#test_inheritedReviewerFromGrandparentGlossary_createsOpenApprovalTask(TestNamespace)and 17 more in the detailsSelected but produced no report:
McpServiceResourceIT (mysql-elasticsearch · parallel)Every test skipped, so these exercised nothing (check their assumptions — usually the engine):
DataRetentionAppIT (mysql-elasticsearch · parallel),SearchIndexPromotionIT (mysql-elasticsearch · parallel),SearchIndexingFieldsParityIT (mysql-elasticsearch · parallel),RdfIndexAppScaleIT (mysql-elasticsearch · rdf),BaseEntityIT$ListEntityHistoryByTimestampPaginationTest (postgres-opensearch · parallel),PatchTableEmbeddingIT (postgres-opensearch · isolated),RdfIndexAppScaleIT (postgres-opensearch · rdf)Earlier API and database evidence, before the rebase
Added/updated
IndependentOntology*IT,NativeOntologyMemoryIT, ontology resource tests,RdfOntologyActivationITand shared workflow/repository regressions. Runs used Java 21 and the CLI-only-Djunit.version=5.11.4compatibility override.Review 4 on the final backend: 30 PostgreSQL API tests passed together (
IndependentOntologyReleaseIT: 12,IndependentOntologyReleaseDiffIT: 5,IndependentOntologyReleaseExportIT: 9,IndependentOntologyActivationIT: 4). The newIndependentOntologyAuthorizationITpassed its subsequent focused run: capture 25 reads, structure 23 reads, unchanged from 4 to 40 concepts. The combined focused result is 31 passed, zero skips; no full-suite pass is claimed. Earlier versions of the SQL probe failed by counting conditional member inserts and then by missing decorated SQL; the corrected probe excludes those inserts and asserts a positive read count.Final query-budget command (the existing 30 cases used the same PostgreSQL profile):
These are historical results from before the rebase; the current full-matrix report follows below.
Ingestion integration tests
Not applicable to connector integration: this PR adds ontology schemas/model coverage and does not change an ingestion connector. The 68 model, Oracle and stored-procedure unit tests above passed; connector integration suites were not run for this change.
Playwright (UI) tests
OntologyReview.spec.tscovers native authoring, capture/review/activation/rollback/export, and review failure handling. Existing glossary Studio specs were retained when merging main.Post-rebase Playwright validation: NOT RUN. Earlier pre-merge native/glossary browser checks are historical evidence only. Run the affected restored Studio and native specs against the final build before requesting review.
Manual testing performed
No manual browser walkthrough of the final merged build is claimed. Automated checks above exercised the real database, application APIs and Fuseki. The remaining manual flow is: create/edit a native ontology; apply a memory proposal; capture and review its release; activate and query it; edit the draft and verify the active query remains unchanged; roll back; check that the glossary Studio and Relations Graph still work.
UI screen recording:
Earlier recording attempt for commit
5ad5edcfb003f5a448db261c32e164f804197bfewas blocked; it was not retried during this rebase. Model generation and the production distribution build passed withmvn -B package -pl openmetadata-dist -am -DskipTests -Djunit.version=5.11.4 -Dspring-boot.repackage.skip=true, including both UI modules.Prepared an isolated Compose stack with separate loopback ports, network and volumes because the default runner would stop another local MySQL stack. Building its images failed before startup:
That image-build failure has not been rechecked; a final build walkthrough and recording remain outstanding. Existing containers were left running; no stack reset or volume deletion was attempted. No successful Docker health/sample-data check or video is claimed. Keep this PR draft until the isolated stack, sample-data walkthrough and verified GitHub-hosted recording are complete.
Checklist:
Fixes <issue-number>: <short explanation>.Fixes #<issue-number>above.docs/decisions/.