Conversation
# Conflicts: # openmetadata-service/pom.xml # openmetadata-service/src/main/java/org/openmetadata/service/search/security/RBACConditionEvaluator.java # openmetadata-service/src/main/java/org/openmetadata/service/util/SchemaFieldExtractor.java # openmetadata-service/src/test/java/org/openmetadata/service/monitoring/MetricsErrorHandlingTest.java # openmetadata-service/src/test/java/org/openmetadata/service/search/vector/VectorSearchQueryBuilderTest.java
|
The Java checkstyle failed. Please run You can install the pre-commit hooks with |
| // where low-scoring neighbors may still be returned to fill the k count. | ||
| if (score < threshold) { | ||
| continue; | ||
| while (!exhausted && byParent.size() < requestedParents) { |
There was a problem hiding this comment.
⚠️ Bug: Vector search pagination loop may never terminate
The new pagination loop in searchVector iterates while (!exhausted && byParent.size() < requestedParents). When totalHits is unknown (-1, which happens when OpenSearch returns no hits.total), the exhaustion check at line 172 is pageHitCount < overFetchSize. If every page returns exactly overFetchSize raw hits but all of them score below threshold (so none are added to byParent), then:
pageHitCount == overFetchSize→exhausted = falsebyParent.size()remains 0, never reachingrequestedParents- The loop runs indefinitely, issuing unbounded requests to OpenSearch
This scenario is possible when a high threshold is set and the index contains many low-scoring documents. Even when totalHits >= 0, if the index is very large it could loop for an excessive number of iterations before rawOffset >= totalHits.
A maximum iteration cap (e.g., MAX_PAGES = 10) would prevent runaway loops in both cases.
Suggested fix:
// Add a max-page guard at the top of the method:
int maxPages = 10; // safety cap
int pageCount = 0;
while (!exhausted && byParent.size() < requestedParents && pageCount < maxPages) {
pageCount++;
// ... existing loop body ...
}
Was this helpful? React with 👍 / 👎 | Reply gitar fix to apply this suggestion
OpenMetadata Service New-Code Coverage✅ PASS. Required changed-line coverage:
Only changed executable lines under |
🟡 Playwright Results — all passed (18 flaky)✅ 3336 passed · ❌ 0 failed · 🟡 18 flaky · ⏭️ 183 skipped
🟡 18 flaky test(s) (passed on retry)
How to debug locally# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip # view trace |
|
|
There was a problem hiding this comment.
Pull request overview
This PR significantly expands Java unit test coverage (especially around formatters and search-indexing/distributed reindexing) while hardening several production paths via improved null-safety, error handling, and more resilient search/vector/reindexing behaviors.
Changes:
- Added a large suite of unit tests across formatters, notification decorators, and search-indexing/distributed reindexing components.
- Improved runtime robustness (null-safety, malformed JSON fallbacks, safer list copying, cursor parsing, cycle protection for lineage filtering, etc.).
- Updated CI to run service unit tests with JaCoCo reporting and PR diff-coverage enforcement.
Reviewed changes
Copilot reviewed 118 out of 201 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| openmetadata-service/src/test/java/org/openmetadata/service/formatter/field/TagFormatterTest.java | Adds unit tests for tag field formatting behavior. |
| openmetadata-service/src/test/java/org/openmetadata/service/formatter/field/OwnerFormatterTest.java | Adds unit tests for owner field formatting behavior. |
| openmetadata-service/src/test/java/org/openmetadata/service/formatter/field/DefaultFieldFormatterTest.java | Adds unit tests for default field formatting and parsing. |
| openmetadata-service/src/test/java/org/openmetadata/service/formatter/entity/PipelineFormatterTest.java | Adds tests for pipeline status formatting and malformed payload fallback. |
| openmetadata-service/src/test/java/org/openmetadata/service/formatter/entity/IngestionPipelineFormatterTest.java | Adds tests for ingestion pipeline formatting and URL helpers. |
| openmetadata-service/src/test/java/org/openmetadata/service/formatter/decorators/PlatformMessageDecoratorTest.java | Adds tests for Slack/GChat/Teams/feed decorators. |
| openmetadata-service/src/test/java/org/openmetadata/service/formatter/decorators/EmailMessageDecoratorTest.java | Adds tests for email message mapping and validation. |
| openmetadata-service/src/test/java/org/openmetadata/service/formatter/TestMessageDecorator.java | Introduces a minimal decorator for formatter unit tests. |
| openmetadata-service/src/test/java/org/openmetadata/service/clients/pipeline/config/WorkflowConfigBuilderTest.java | Makes YAML assertions less brittle by using contains checks. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/stats/StageStatsTrackerTest.java | Adjusts thresholds/concurrency test parameters. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/stats/JobStatsManagerTest.java | Adds coverage for job stats tracking/DAO behavior. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/stats/EntityStatsTrackerTest.java | Adds coverage for flush behavior, retries, and bookkeeping. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/listeners/SlackProgressListenerTest.java | Adds tests for Slack listener lifecycle and helpers. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/listeners/LoggingProgressListenerTest.java | Adds tests for logging listener behavior and helpers. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/ServerIdentityResolverTest.java | Adds tests for server identity selection and fallbacks. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/PollingJobNotifierTest.java | Adds tests for polling notifier lifecycle and polling logic. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/PartitionCalculatorTest.java | Updates DAO call usage and adds more partitioning/TS coverage. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/OrphanJobMonitorTest.java | Adds monitor lifecycle and recovery-path coverage. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/JobRecoveryManagerTest.java | Expands tests for new lock acquisition/stopping-job behaviors. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/EntityCompletionTrackerTest.java | Adds reconcile/promotion behavior tests. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/DistributedJobNotifierFactoryTest.java | Adds factory selection + utility ctor coverage. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/DistributedJobContextTest.java | Adds distributed job context metadata tests. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/SingleServerIndexingStrategyTest.java | Adds delegation/stop/stats tests. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/SearchIndexStatsTest.java | Refactors backpressure/payload-too-large tests to bulk processor methods. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/SearchIndexMetricsTest.java | Adds metrics registration/refresh behavior tests. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/SearchIndexFailureScenarioTest.java | Updates failure scenario tests to use bulk processor retry logic. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/SearchIndexAppTest.java | Adds tests for orchestrator delegation and config validation. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/ReindexingJobLoggerTest.java | Adds coverage for logging helpers and state tracking. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/QuartzOrchestratorContextTest.java | Adds tests for Quartz orchestrator context storage/factories. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/QuartzJobContextTest.java | Adds tests for Quartz job context defaults and metadata. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/OrphanedIndexCleanerTest.java | Adds tests for orphan index detection and cleanup behavior. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/IndexingFailureRecorderTest.java | Updates expectations for reader batch failure stage/IDs. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/EntityReaderLifecycleTest.java | Adds tests covering reader lifecycles and cursor boundaries. |
| openmetadata-service/src/test/java/org/openmetadata/service/apps/bundles/searchIndex/CompositeProgressListenerTest.java | Adds ordering + fault-isolation tests for composite listener. |
| openmetadata-service/src/test/java/org/openmetadata/csv/CsvUtilTest.java | Adds extensive coverage for CSV formatting/parsing/extension helpers. |
| openmetadata-service/src/main/java/org/openmetadata/service/util/UserUtil.java | Adjusts bootstrap user loop handling and role sync mutability/flags. |
| openmetadata-service/src/main/java/org/openmetadata/service/util/SubscriptionUtil.java | Fixes header builder to return prepared builder; adds receiver validation checks. |
| openmetadata-service/src/main/java/org/openmetadata/service/util/SchemaFieldExtractor.java | Updates entity exclusions, ref-type mapping, and entity subdirectory mapping. |
| openmetadata-service/src/main/java/org/openmetadata/service/util/RestUtil.java | Changes date comparison parsing strategy. |
| openmetadata-service/src/main/java/org/openmetadata/service/util/ODCSConverter.java | Adds null-safe entity name resolution and SLA timezone initialization. |
| openmetadata-service/src/main/java/org/openmetadata/service/util/EntityFieldUtils.java | Avoids mutating entity tag list by copying before modification. |
| openmetadata-service/src/main/java/org/openmetadata/service/util/AsyncService.java | Improves timeout detection in exceptionally handler. |
| openmetadata-service/src/main/java/org/openmetadata/service/security/policyevaluator/RuleEvaluator.java | Simplifies domain matching by delegating to subject context hierarchy check. |
| openmetadata-service/src/main/java/org/openmetadata/service/security/policyevaluator/PermissionDebugService.java | Normalizes effect handling via helper; adds null-safe mapping. |
| openmetadata-service/src/main/java/org/openmetadata/service/security/auth/validator/SamlValidator.java | Improves IdP entity ID error mapping for more IdP message variants. |
| openmetadata-service/src/main/java/org/openmetadata/service/security/auth/validator/AzureAuthValidator.java | Adds early GUID-format validation for Azure client ID. |
| openmetadata-service/src/main/java/org/openmetadata/service/security/SecurityUtil.java | Adds support for displayName claim casing variant. |
| openmetadata-service/src/main/java/org/openmetadata/service/security/DefaultAuthorizer.java | Improves impersonation checks and messaging when bot user missing. |
| openmetadata-service/src/main/java/org/openmetadata/service/security/AuthenticationCodeFlowHandler.java | Adds null-safe client auth method and propagates PKCE disable flag for Azure. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/vector/utils/DTOs.java | Extends vector search response DTO with totalHits/hasMore and constructors. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/vector/OpenSearchVectorService.java | Updates init signature and adds parent-group pagination + totalHits/hasMore. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/security/RBACConditionEvaluator.java | Adds null-safe search repository handling when building index filter. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OsUtils.java | Uses JacksonJsonpMapper for JsonData conversions. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchSourceBuilderFactory.java | Makes aggregation handling null-safe via listOrEmpty. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/lineage/LineageGraphConfiguration.java | Enables lineage caching by default with TTL/max settings. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/EsUtils.java | Uses JacksonJsonpMapper for JsonData conversions. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/ElasticSearchSourceBuilderFactory.java | Makes aggregation handling null-safe via listOrEmpty. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRepository.java | Adds resilience to doc build failures, fixes index naming, and tag propagation params. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/SearchIndexUtils.java | Improves field removal by path (single-key fast path, safer list item casting). |
| openmetadata-service/src/main/java/org/openmetadata/service/search/SearchClusterMetrics.java | Adjusts conservative defaults calculation for content length and payload sizing. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/LineagePathPreserver.java | Adds cycle protection and preserves intermediate nodes for column filtering. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/ColumnMetadataCache.java | Fixes cache keying to use column FQN vs name and improves fallback handling. |
| openmetadata-service/src/main/java/org/openmetadata/service/search/ColumnFilterMatcher.java | Rejects empty filter type/value criteria more safely. |
| openmetadata-service/src/main/java/org/openmetadata/service/rules/RuleEngine.java | Makes rule loading more resilient when settings/repositories are unavailable. |
| openmetadata-service/src/main/java/org/openmetadata/service/notifications/template/handlebars/helpers/TruncateHelper.java | Fixes truncation semantics and edge case handling. |
| openmetadata-service/src/main/java/org/openmetadata/service/notifications/template/handlebars/helpers/BuildEntityUrlHelper.java | Makes base URL overridable and updates ingestion pipeline URL behavior. |
| openmetadata-service/src/main/java/org/openmetadata/service/notifications/channels/teams/TeamsMarkdownFormatter.java | Tightens Teams link URL validation behavior. |
| openmetadata-service/src/main/java/org/openmetadata/service/notifications/channels/teams/TeamsCardAssembler.java | Tightens Teams link URL validation behavior. |
| openmetadata-service/src/main/java/org/openmetadata/service/notifications/channels/slack/SlackMarkdownFormatter.java | Fixes image alt-text rendering isolation. |
| openmetadata-service/src/main/java/org/openmetadata/service/notifications/channels/gchat/GChatMarkdownFormatter.java | Improves image alt/title selection fallbacks. |
| openmetadata-service/src/main/java/org/openmetadata/service/notifications/channels/gchat/GChatCardAssembler.java | Improves image alt/title selection fallbacks. |
| openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v160/MigrationUtil.java | Null-safe rules list initialization when updating org policy. |
| openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v1105/MigrationUtil.java | Applies JSON structural equality to avoid no-op workflow updates. |
| openmetadata-service/src/main/java/org/openmetadata/service/logstorage/S3LogStorage.java | Adds cursor parse safety and cleans caches on deleteAllLogs. |
| openmetadata-service/src/main/java/org/openmetadata/service/formatter/entity/PipelineFormatter.java | Handles malformed JSON status payloads gracefully. |
| openmetadata-service/src/main/java/org/openmetadata/service/formatter/entity/IngestionPipelineFormatter.java | Handles malformed JSON status payloads gracefully. |
| openmetadata-service/src/main/java/org/openmetadata/service/formatter/decorators/SlackMessageDecorator.java | Avoids adding entity link blocks when URL missing. |
| openmetadata-service/src/main/java/org/openmetadata/service/formatter/decorators/MSTeamsMessageDecorator.java | Avoids adding entity link blocks when URL missing. |
| openmetadata-service/src/main/java/org/openmetadata/service/clients/pipeline/k8s/K8sPipelineClient.java | Enforces Kubernetes name length + improves run ID derivation. |
| openmetadata-service/src/main/java/org/openmetadata/service/clients/pipeline/config/types/ProfilerWorkflowConfig.java | Skips null metrics and omits empty profiler config. |
| openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/listeners/QuartzProgressListener.java | Uses typed fields for stats/failure contexts. |
| openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/PartitionWorker.java | Adds early stop/interrupt short-circuit and sets PROCESSING status on progress. |
| openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/JobRecoveryManager.java | Adjusts lock handling and makes recovery result explicit. |
| openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/DistributedSearchIndexExecutor.java | Ensures notifier triggers only when this server transitions job to RUNNING. |
| openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/ReindexingOrchestrator.java | Ensures success context is reused/initialized before adding stats. |
| openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/OpenSearchIndexSink.java | Improves batching and conversion failure accounting. |
| openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/OpenSearchBulkSink.java | Routes permanent failures through unified recorder + metrics adjustments. |
| openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/IndexingPipeline.java | Improves total counting for TS entities and optional time-window filtering. |
| openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/ElasticSearchIndexSink.java | Improves batching and conversion failure accounting. |
| openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/ElasticSearchBulkSink.java | Routes permanent failures through unified recorder. |
| openmetadata-service/src/main/java/org/openmetadata/csv/EntityCsv.java | Hardens CSV doc loading and improves dry-run parent column hierarchy creation. |
| openmetadata-service/pom.xml | Pins JUnit engine/params version and overrides surefire includes. |
| openmetadata-integration-tests/src/test/java/org/openmetadata/it/tests/VectorEmbeddingIntegrationIT.java | Updates vector service init call signature. |
| CLAUDE.md | Updates ingestion Python version guidance. |
| .github/workflows/openmetadata-service-unit-tests.yml | Adds/updates unit-test workflow with change detection and diff coverage gate. |
| } | ||
|
|
||
| private String normalizeEffect(Rule.Effect effect) { | ||
| return effect == null ? null : effect.name(); |
| if (action.getReceivers() == null || action.getReceivers().isEmpty()) { | ||
| throw new IllegalArgumentException( | ||
| "Email Alert Invoked with Illegal Type and Settings. Emtpy or Null Users Recipients List"); | ||
| } |
| @Test | ||
| @DisplayName("Should NOT detect normal errors as backpressure") | ||
| void testNormalErrorsNotBackpressure() throws Exception { | ||
| Method method = | ||
| SearchIndexExecutor.class.getDeclaredMethod("isBackpressureError", String.class); | ||
| method.setAccessible(true); | ||
|
|
||
| assertFalse((boolean) method.invoke(executor, "Index not found")); | ||
| assertFalse((boolean) method.invoke(executor, "Document parsing exception")); | ||
| assertFalse((boolean) method.invoke(executor, "Mapping error")); | ||
| assertFalse((boolean) method.invoke(executor, (String) null)); | ||
| ElasticSearchBulkSink.CustomBulkProcessor processor = | ||
| getCustomBulkProcessor(new ElasticSearchBulkSink(searchRepository, 10, 2, 1000000L)); | ||
|
|
||
| assertFalse(invokeShouldRetry(processor, 0, "Index not found")); | ||
| assertFalse(invokeShouldRetry(processor, 0, "Document parsing exception")); | ||
| assertFalse(invokeShouldRetry(processor, 0, "Mapping error")); | ||
| assertTrue(invokeShouldRetry(processor, 0, null)); | ||
| } |
| int totalEntities = entities.size(); | ||
| int failedEntities = entityErrorList.size(); | ||
| int successfulEntities = totalEntities - failedEntities; | ||
| updateStats(successfulEntities, failedEntities); | ||
|
|
||
| if (!entityErrorList.isEmpty()) { | ||
| throw new SearchIndexException( |
| "Issue in building search document for entity [{}] and entityType [{}]. Reason[{}], Cause[{}], Stack [{}]", | ||
| entity.getId(), | ||
| entityType, | ||
| ie.getMessage(), | ||
| ie.getCause(), | ||
| ExceptionUtils.getStackTrace(ie)); |
| <logback-classic.version>1.5.25</logback-classic.version> | ||
| <resilience4j-ratelimiter.version>2.3.0</resilience4j-ratelimiter.version> | ||
| <kubernetes-client.version>24.0.0</kubernetes-client.version> | ||
| <junit.jupiter.service.version>5.11.2</junit.jupiter.service.version> |
|
|
||
| // createEntities is async fire-and-forget — errors are handled in its | ||
| // callback via the retry queue, so no try-catch is needed here. | ||
| Timer.Sample searchSample = RequestLatencyContext.startSearchOperation(); |
There was a problem hiding this comment.
🚨 Bug: createEntitiesIndex has duplicate variable + malformed try block
The createEntitiesIndex method has at least two compile-breaking issues introduced by this commit:
-
Duplicate local variable:
Timer.Sample searchSampleis declared at line 858 (in theifblock scope) and again at line 898 (inside the nestedtryblock). Java does not allow a local variable in a nested scope to shadow a local variable from an enclosing scope within the same method — this is a compile error. -
trywithoutcatch/finally: The outertry {at line 859 has no matchingcatchorfinallyclause. The} finally {at line 905 belongs to the innertryat line 899, leaving the outer try structurally invalid.
This appears to be a bad merge: the original code had a single Timer.Sample searchSample + try/catch/finally block. The new code added an outer try and moved searchSample earlier, but the old searchSample declaration and inner try/finally were also retained, creating overlapping broken structures.
The fix is to remove the duplicate Timer.Sample searchSample at line 898 and the inner try { at line 899, keeping only the outer try-finally that wraps the entire operation.
Suggested fix:
Remove the duplicate variable and inner try block. The outer try-finally should wrap everything:
// Remove line 898: Timer.Sample searchSample = ...
// Remove line 899: try {
// Remove lines 905-907: } finally { ... }
// Add finally to the outer try at line 859:
// } finally {
// RequestLatencyContext.endSearchOperation(searchSample);
// }
Was this helpful? React with 👍 / 👎 | Reply gitar fix to apply this suggestion
🔍 CI failure analysis for b21402e: Unit test coverage expansion in search indexing and service modules faces multiple infrastructure and test execution issues: integration test environment setup logs truncated mid-pip-installation preventing verification of test readiness; 45 unique error patterns detected across 58 analyzed logs suggesting systemic problems with test harness, mocking, or dependency configuration rather than code changes.OverviewAnalyzed 58 CI logs across 45 unique error templates from a large unit test coverage expansion PR. The PR adds ~20,000 LOC of new tests across search indexing (distributed strategies, bulk processing), service integrations (Slack, Teams, GChat), security validators, and utility modules. While diff changes appear focused and targeted (mainly test additions), the CI results show significant infrastructure and test infrastructure issues rather than localized test failures. A critical finding is that integration test environment setup logs are truncated during Python dependency installation, preventing full assessment of test environment readiness. FailuresIntegration Test Environment Setup Incomplete (confidence: high)
Multiple Error Template Patterns Across Test Suite (confidence: medium)
Search Indexing Test Coverage Expansion (confidence: high)
Service Integration Test Coverage (confidence: medium)
Security and Authorization Test Coverage (confidence: medium)
Summary
Code Review 🚫 Blocked 7 resolved / 9 findingsUnit test coverage expansion introduces a critical blocker: 🚨 Bug: createEntitiesIndex has duplicate variable + malformed try block📄 openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRepository.java:858 📄 openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRepository.java:898 📄 openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRepository.java:859 The
This appears to be a bad merge: the original code had a single The fix is to remove the duplicate Suggested fix
|
| Auto-apply | Compact |
|
|
Was this helpful? React with 👍 / 👎 | Gitar



Describe your changes:
Fixes
I worked on ... because ...
Type of change:
Checklist:
Fixes <issue-number>: <short explanation>Summary by Gitar
UserUtilclass covering user creation, preference validation, and change event trackingUtilitiesTestcovering date formatting, quote handling, and regex escape utilitiesIngestionPipelineFormatter,PipelineFormatter) to handle malformed JSON gracefullyjacoco_diff_coverage.pyscript for computing diff-based coverage metricsThis will update automatically on new commits.