Version Packages#60
Merged
Merged
Conversation
28b3090 to
f8699bf
Compare
f8699bf to
161653c
Compare
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@atmo-dev/contrail@0.12.1
Patch Changes
@atmo-dev/contrail-appview@0.12.1
Patch Changes
833a659: Stop running the
feed_itemsprune sweep on every ingest tick.A feed only exceeds its cap right after a feed-mutating record, so the per-tick sweep was a no-op on the vast majority of ticks yet still issued a cutoff
DELETEper actor (~98% of all D1 queries on one deployment). It now sweeps only when a feed-mutating collection was ingested, plus a recovery pass that becomes due ~6h after the previous one completed and then laps one slice per tick — including on idle persistent streams and thenotifyOfUpdatepath. NewgetFeedMutatingNsids(config)derives the gating set. Seedocs/04-feeds.mdfor sweep timing (and why the full-pass cadence is interval + lap time, not a hard 6h) and the fan-out promptness trade-off.74a2d3d: Make NSID-keyed collections work through normal ingestion, not just FTS.
When a collection is keyed directly by its NSID (no short alias,
collectionfield omitted), the value defaulted to
undefinedeverywhere it was read. Therecords insert and FTS sync were patched via
resolveCollectionKey, but thereal ingestion entry points still skipped these collections:
getCollectionNsids/
getDiscoverableNsids/getDependentNsidsproducedundefinedNSIDs (soJetstream never subscribed and backfill never ran),
shortNameForNsidreturnedundefined (so
notifyrejected the URI as "collection not tracked"), andvalidateConfigrejected the config outright (missingcollection, dotted keyfailing short-name validation).
CollectionConfig.collectionis now optional.resolveConfignormalizes anomitted
collectionto the map key,validateConfigaccepts NSID-keyed entries,and every collection-list / lookup helper resolves the NSID as
collection ?? keyso the behavior is correct on both raw and resolved configs.
9e01ada: Persist the jetstream ingest cursor before the identity-refresh tail in
runIngestCycle.saveCursorpreviously ran afterrefreshStaleIdentities, whose per-DID network calls can run long. If the ingest isolate was aborted (e.g. a scheduled-invocation deadline) before the save, the cursor never advanced and the next cycle re-drained the same jetstream window indefinitely. Records are durably applied before this point, so the cursor is now saved first; identity refresh is idempotent and staleness-driven, so deferring it past the save is safe.9894787: Stop re-ingesting the last 10s on every cron cycle for single-instance jetstream configs.
@atcute/jetstreamrolls the cursor back 10s on the first connect when given an arrayurl, to absorb clock skew across a pool of interchangeable instances. Contrail's cron ingestion rebuilds the subscription every cycle, so for a single-instance config that once-per-session rollback fired every cycle and redundantly re-delivered the last 10s of events. A newjetstreamUrlOptionhelper hands a one-element config to@atcuteas a string (one fixed instance, no skew, no rollback) while leaving real multi-instance pools as an array so their cross-instance rollback is preserved. Applied at both subscription construction sites (croningestEventsand the persistent daemon).The per-cycle reconnect log is now accurate for single-instance configs: a reconnect to one fixed instance no longer claims to "pick a URL at random and roll the cursor back 10s" (it can't). The warning now fires only for multi-instance pools and reports the actual
rolled_backvalue; single-instance reconnects log at info level confirming no rollback.Updated dependencies [833a659]
Updated dependencies [74a2d3d]
Updated dependencies [9894787]
@atmo-dev/contrail-authority@0.12.1
Patch Changes
@atmo-dev/contrail-base@0.12.1
Patch Changes
833a659: Stop running the
feed_itemsprune sweep on every ingest tick.A feed only exceeds its cap right after a feed-mutating record, so the per-tick sweep was a no-op on the vast majority of ticks yet still issued a cutoff
DELETEper actor (~98% of all D1 queries on one deployment). It now sweeps only when a feed-mutating collection was ingested, plus a recovery pass that becomes due ~6h after the previous one completed and then laps one slice per tick — including on idle persistent streams and thenotifyOfUpdatepath. NewgetFeedMutatingNsids(config)derives the gating set. Seedocs/04-feeds.mdfor sweep timing (and why the full-pass cadence is interval + lap time, not a hard 6h) and the fan-out promptness trade-off.74a2d3d: Make NSID-keyed collections work through normal ingestion, not just FTS.
When a collection is keyed directly by its NSID (no short alias,
collectionfield omitted), the value defaulted to
undefinedeverywhere it was read. Therecords insert and FTS sync were patched via
resolveCollectionKey, but thereal ingestion entry points still skipped these collections:
getCollectionNsids/
getDiscoverableNsids/getDependentNsidsproducedundefinedNSIDs (soJetstream never subscribed and backfill never ran),
shortNameForNsidreturnedundefined (so
notifyrejected the URI as "collection not tracked"), andvalidateConfigrejected the config outright (missingcollection, dotted keyfailing short-name validation).
CollectionConfig.collectionis now optional.resolveConfignormalizes anomitted
collectionto the map key,validateConfigaccepts NSID-keyed entries,and every collection-list / lookup helper resolves the NSID as
collection ?? keyso the behavior is correct on both raw and resolved configs.
9894787: Stop re-ingesting the last 10s on every cron cycle for single-instance jetstream configs.
@atcute/jetstreamrolls the cursor back 10s on the first connect when given an arrayurl, to absorb clock skew across a pool of interchangeable instances. Contrail's cron ingestion rebuilds the subscription every cycle, so for a single-instance config that once-per-session rollback fired every cycle and redundantly re-delivered the last 10s of events. A newjetstreamUrlOptionhelper hands a one-element config to@atcuteas a string (one fixed instance, no skew, no rollback) while leaving real multi-instance pools as an array so their cross-instance rollback is preserved. Applied at both subscription construction sites (croningestEventsand the persistent daemon).The per-cycle reconnect log is now accurate for single-instance configs: a reconnect to one fixed instance no longer claims to "pick a URL at random and roll the cursor back 10s" (it can't). The warning now fires only for multi-instance pools and reports the actual
rolled_backvalue; single-instance reconnects log at info level confirming no rollback.@atmo-dev/contrail-community@0.12.1
Patch Changes
@atmo-dev/contrail-record-host@0.12.1
Patch Changes
74a2d3d: Make NSID-keyed collections work through normal ingestion, not just FTS.
When a collection is keyed directly by its NSID (no short alias,
collectionfield omitted), the value defaulted to
undefinedeverywhere it was read. Therecords insert and FTS sync were patched via
resolveCollectionKey, but thereal ingestion entry points still skipped these collections:
getCollectionNsids/
getDiscoverableNsids/getDependentNsidsproducedundefinedNSIDs (soJetstream never subscribed and backfill never ran),
shortNameForNsidreturnedundefined (so
notifyrejected the URI as "collection not tracked"), andvalidateConfigrejected the config outright (missingcollection, dotted keyfailing short-name validation).
CollectionConfig.collectionis now optional.resolveConfignormalizes anomitted
collectionto the map key,validateConfigaccepts NSID-keyed entries,and every collection-list / lookup helper resolves the NSID as
collection ?? keyso the behavior is correct on both raw and resolved configs.
Updated dependencies [833a659]
Updated dependencies [74a2d3d]
Updated dependencies [9894787]
@atmo-dev/contrail-lexicons@0.4.14
Patch Changes
74a2d3d: Make NSID-keyed collections work through normal ingestion, not just FTS.
When a collection is keyed directly by its NSID (no short alias,
collectionfield omitted), the value defaulted to
undefinedeverywhere it was read. Therecords insert and FTS sync were patched via
resolveCollectionKey, but thereal ingestion entry points still skipped these collections:
getCollectionNsids/
getDiscoverableNsids/getDependentNsidsproducedundefinedNSIDs (soJetstream never subscribed and backfill never ran),
shortNameForNsidreturnedundefined (so
notifyrejected the URI as "collection not tracked"), andvalidateConfigrejected the config outright (missingcollection, dotted keyfailing short-name validation).
CollectionConfig.collectionis now optional.resolveConfignormalizes anomitted
collectionto the map key,validateConfigaccepts NSID-keyed entries,and every collection-list / lookup helper resolves the NSID as
collection ?? keyso the behavior is correct on both raw and resolved configs.
@atmo-dev/contrail-sync@0.12.1