matrix-org / matrix-org/matrix-hookshot

Multi-replica hookshot

Open
#897 0 comments 0 reactions 0 assignees View on GitHub
T-Enhancement
Dominant language
TypeScript
Stars
450
Forks
95
Avg merge
1d 2h
Merged PRs (30d)
23

Description

The idea of running hookshot with multiple replicas is an interesting one, and presents some interesting challenges. The current challenges I can forsee are:

- It goes without saying that we'd need Redis support for sharing a cache between processes. No in-memory support here.
- We'd need a way to spit **rooms** across replicas. Some replicas would handle some rooms, and some others.
- Appservice traffic would hit one or the other. We'd need the events that come out of that to hit the right replicas so they can react. This would probably mean adding a queue to redis for incoming matrix events and the like.
- The feed reader would need to be replica aware. Either we make it so that there is a central queue and all replicas pop from the same queue, or we ensure there are two queues with unique urls in both.

Contributor guide

Open the contributing guide

Research direction

No files, tests, or entry points are named. Start by mapping the current cache, room handling, appservice event flow, and feed-reader queues; the work is done when replicas can share state, divide rooms, route events correctly, and coordinate feed processing through Redis.

Written by the indexing model from the issue text.

Assessment

Tech stack
redis, typescript
Domain
backend, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.