-
Notifications
You must be signed in to change notification settings - Fork 2.1k
fix(rdf): converge Fuseki state on weekly rebuilds and isolate API latency #28117
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
20 commits
Select commit
Hold shift + click to select a range
a91262d
fix(rdf): converge Fuseki state on weekly rebuilds and isolate API la…
harshach 9b6e112
fix(rdf): address PR review — preserve relationships, scope DELETEs, …
harshach 26f743b
test(rdf): expect per-source clear on batches whose relationships are…
harshach 10fe181
fix(rdf): address remaining PR review nits
harshach 1676feb
fix(rdf): surface cleanup failures, sync fallback predicates, time-bo…
harshach 4567706
fix(rdf): qualify EntityRelationship in test to fix compile
harshach 2fc1147
Merge branch 'main' into harshach/rdf-fuseki-duplicate-relations
harshach ef9bb30
fix(rdf): drop QueryExecution.setTimeout — removed in Jena 5 used by …
harshach 7a1fae7
fix(rdf): align ontology-loaded check, predicate URIs, and CURIE fall…
harshach e2575d5
fix(rdf): schema default + migration force entities=[all] for safe fu…
harshach 22d5825
fix(rdf): scope storeEntity DELETE to translator-managed predicates
harshach 857c097
fix(rdf): scope reconciliation DELETE to relationship-hook predicates…
harshach 63d9864
fix(rdf): scope bulk reconciliation to batch entities, not all relati…
harshach 66884e2
fix(rdf): time-bound HTTP request bodies via CompletableFuture wrapper
harshach 0c4345b
docs(rdf): document RdfUpdater async-ordering trade-off in submitAsync
harshach 4242c15
fix(rdf): atomic clear+insert, broader fallback predicate set, close …
harshach 03c5d4f
fix(rdf): make buildPredicateInList public so JenaFusekiStorage can u…
harshach 9eeca99
fix(rdf): normalise sourcesToReconcile to empty-set to prevent NPE in…
harshach 28fb585
test(rdf): update RdfIndexAppTest verifications for the new bulkAddRe…
harshach 53a83b7
fix(rdf): four follow-up findings from Copilot review 4299978111
harshach File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
28 changes: 28 additions & 0 deletions
28
bootstrap/sql/migrations/native/2.0.1/mysql/postDataMigrationSQLScript.sql
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1,29 @@ | ||
| -- Post data migration script for Task workflow cutover - OpenMetadata 2.0.1 | ||
|
|
||
| -- RdfIndexApp: switch to weekly Saturday cron and full-rebuild every run. | ||
| -- Previous defaults (daily, incremental) were producing unbounded triple growth | ||
| -- because relationship-removal paths weren't fully reconciled. With per-run | ||
| -- CLEAR ALL the dataset always converges to MySQL state; weekly cadence keeps | ||
| -- per-run cost from saturating Fuseki. | ||
| -- | ||
| -- Also rewrite `entities` to `["all"]`. Pre-upgrade, an operator could have | ||
| -- narrowed RDF indexing to a subset of entity types; the new recreateIndex=true | ||
| -- semantics issues a CLEAR ALL before indexing, which would otherwise wipe | ||
| -- triples for entity types still in MySQL but missing from the subset list. | ||
| -- Forcing the subset list back to `["all"]` ensures the post-CLEAR-ALL run | ||
| -- repopulates the graph fully; operators can re-narrow after the migration if | ||
| -- they need partial indexing. | ||
| UPDATE installed_apps | ||
| SET json = JSON_SET( | ||
| JSON_SET( | ||
| json, | ||
| '$.appConfiguration.recreateIndex', CAST('true' AS JSON), | ||
| '$.appSchedule.cronExpression', '0 0 * * 6' | ||
| ), | ||
| '$.appConfiguration.entities', JSON_ARRAY('all') | ||
| ) | ||
| WHERE name = 'RdfIndexApp'; | ||
|
|
||
| UPDATE apps_marketplace | ||
| SET json = JSON_SET(json, '$.appConfiguration.recreateIndex', CAST('true' AS JSON)) | ||
| WHERE name = 'RdfIndexApp'; |
29 changes: 29 additions & 0 deletions
29
bootstrap/sql/migrations/native/2.0.1/postgres/postDataMigrationSQLScript.sql
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1,30 @@ | ||
| -- Post data migration script for Task workflow cutover - OpenMetadata 2.0.1 | ||
|
|
||
| -- RdfIndexApp: switch to weekly Saturday cron and full-rebuild every run. | ||
| -- Previous defaults (daily, incremental) were producing unbounded triple growth | ||
| -- because relationship-removal paths weren't fully reconciled. With per-run | ||
| -- CLEAR ALL the dataset always converges to MySQL state; weekly cadence keeps | ||
| -- per-run cost from saturating Fuseki. | ||
| -- | ||
| -- Also rewrite `entities` to `["all"]`. Pre-upgrade, an operator could have | ||
| -- narrowed RDF indexing to a subset of entity types; the new recreateIndex=true | ||
| -- semantics issues a CLEAR ALL before indexing, which would otherwise wipe | ||
| -- triples for entity types still in MySQL but missing from the subset list. | ||
| -- Forcing the subset list back to `["all"]` ensures the post-CLEAR-ALL run | ||
| -- repopulates the graph fully; operators can re-narrow after the migration if | ||
| -- they need partial indexing. | ||
| UPDATE installed_apps | ||
| SET json = jsonb_set( | ||
| jsonb_set( | ||
| jsonb_set(json::jsonb, '{appConfiguration,recreateIndex}', 'true'), | ||
| '{appSchedule,cronExpression}', | ||
| '"0 0 * * 6"' | ||
| ), | ||
| '{appConfiguration,entities}', | ||
| '["all"]'::jsonb | ||
| ) | ||
| WHERE name = 'RdfIndexApp'; | ||
|
|
||
| UPDATE apps_marketplace | ||
| SET json = jsonb_set(json::jsonb, '{appConfiguration,recreateIndex}', 'true') | ||
| WHERE name = 'RdfIndexApp'; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.