The post-import background deduplication pass (a merge-DELETE writer, debounced ~5 minutes after import) had four lifecycle defects: - enableDeduplication: false did not gate the background schedule — an import that explicitly opted out could still have entities auto-removed minutes later. The flag now gates both the inline and background passes. - Each import() constructed its own coordinator-owned deduplicator, so the debounce never spanned imports (N imports = N delete timers). The brain now owns a single lazy instance (getBackgroundDeduplicator). - close() never cancelled pending dedup; a delete pass could fire against a closed brain. close() now cancels it first. - The 5-minute timer held the process open (exit-hang class); now unref'd. Four regression tests pin the contract (background-dedup-lifecycle); import guides document that false disables both passes. |
||
|---|---|---|
| .. | ||
| aggregation.md | ||
| enterprise-for-everyone.md | ||
| export-and-import.md | ||
| external-backups-and-sparse-storage.md | ||
| find-limits.md | ||
| framework-integration.md | ||
| import-anything.md | ||
| import-flow.md | ||
| import-progress-examples.md | ||
| import-progress-implementation.md | ||
| import-quick-reference.md | ||
| inspection.md | ||
| installation.md | ||
| migrating-to-v4.md | ||
| MIGRATING_TO_V5.11.md | ||
| migration-3.36.0.md | ||
| model-loading.md | ||
| natural-language.md | ||
| nextjs-integration.md | ||
| optimistic-concurrency.md | ||
| quick-start.md | ||
| reacting-to-changes.md | ||
| schema-migrations.md | ||
| snapshots-and-time-travel.md | ||
| standard-import-progress.md | ||
| storage-adapters.md | ||
| streaming-imports.md | ||
| subtypes-and-facets.md | ||
| upgrading-7-to-8.md | ||
| vue-integration.md | ||