Spec list carries last_activity_at for accurate room ordering - #177
Merged
Conversation
A room's message traffic is the one activity updated_at cannot see, and clients were approximating it from the bounded recent-events window — accurate ordering decayed past the window. The list response now emits last_activity_at = max(updated_at, the room's newest message) per spec, computed from one aggregate query and attached at the response seam so no view record or store row changes shape. Omitted when the serving box has no message store, so a skewed client can detect absence and fall back.
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.
Mast's rooms sidebar orders by activity, but message traffic is invisible to
updated_atand the client-side approximation (recent-events window) decays for rooms whose last message is older than the window.MessageStore.latestBySpec(): oneGROUP BYaggregate, spec id → newest message timeGlobalSpecsListResponsegains an optional decoration: each spec map carrieslast_activity_at= max(updated_at, latest message), computed at the response seam — no SpecRow/GlobalSpecView shape change (8 ctor sites untouched)TDD;
mvn -Pintegration -Dsail.it.requireIncus=false clean verifygreen (all gates).