Ontoserver 6.28

This release of Ontoserver introduces the following significant new feature:

Automatic cleanup of withdrawn content on read-only mirrors

Ontoserver deployments that mirror content from syndication feeds accumulate everything those feeds have ever delivered. Until now, when a resource was withdrawn from a feed — a superseded ValueSet, a recalled CodeSystem — there was no built-in way for a downstream mirror to remove it, and the content lingered indefinitely.

A read-only Ontoserver can now garbage-collect content that is no longer present in any of its preload feeds. After a fully successful preload, every resource that Ontoserver originally delivered via preload but that has since disappeared from all feeds is deleted, so the server's view converges on what the feeds currently publish.

This is disabled by default and deliberately conservative:

  • It is enabled only on a read-only deployment (ontoserver.deployment.readOnly=true) with atom.preload.sync=true.
  • It only ever removes content that Ontoserver itself loaded via preload. Anything loaded directly through the API is tracked separately and is never touched.
  • The sweep runs only after a fully successful preload — if any feed or entry fails to load, nothing is deleted, so a transient fetch error can't be mistaken for a withdrawal.
  • A deletion cap (atom.preload.sync.deleteLimit, default 10) aborts the sweep if it would delete more than expected — a safeguard against a truncated feed being read as a mass withdrawal. Raise it (or set a negative value for no limit) for a large planned change, or override it for a single run with POST /synd/redoPreload?deleteLimit=N.
  • A dry-run mode (atom.preload.sync.dryRun=true) logs exactly what would be deleted, without deleting anything, so you can preview a sweep before enabling it for real.

To bring content that predates this feature — resources already loaded via preload before the upgrade — under management, perform a one-shot POST /synd/redoPreload?adopt=true. This enrols matching pre-existing content into the sweep. Routine preloads never adopt automatically, so nothing is silently taken under management.

See Preload Configuration for the full set of options.