fix: trim awareness when collab group is dropped #1163
Merged
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.
Trim awareness when collab group is dropped, as there is no need to persist awareness when no users are connected. If we don't trim the awareness, when the server is restarted, all the awareness info will be read from the stream again. In addition, the size of the awareness stream will also be much more than necessary (reaching the maximum, which is 100).
This does introduce some complication for having multiple replica of AppFlowy Cloud, however, if the same collab can have collab group in two different replica. When that happen, we may have to store some information on Redis to determine whether it is safe to trim the stream. Or, alternatively, we can periodically set TTL to the Redis stream key when a Collab Group is active. If none of the groups are active in any of the replica, the key will automatically be dropped.
Also removed the minimum timeout as a criteria for removing CollabGroup - there's no reason to keep collab group when the number of subscriber reach zero.