-
Notifications
You must be signed in to change notification settings - Fork 385
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MSC2190: Allow appservice bots to use /sync #2190
base: old_master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seems like a common sense approach to me
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me. I think this proposal probably needs someone to weight in on why the feature was disabled in the first place, from the synapse team.
afaik it was disabled only because nobody used it and it bitrotted, so rather than fix something nobody used, it was removed, especially as it made /sync even more complicated. i am well up for restoring it though if someone will use it (it was my idea in the first place, iirc) |
There's lots of green: @mscbot fcp merge |
This FCP proposal has been cancelled by #2190 (comment). Team member @mscbot has proposed to merge this. The next step is review by the rest of the tagged people: Concerns:
Once at least 75% of reviewers approve (and there are no outstanding concerns), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! See this document for information about what commands tagged team members can give me. |
I think this was disabled because it had a tendency to take out synapse, especially when the freenode bridge randomly did it. It may be less of an issue if we only fetch events for the AS virtual user, but even then I would imagine that if e.g. the freenode bridge did this then it'd take out one of our synchrotrons. This originally manifested as the fact that bridges would occasionally and randomly decide to call To flip this on its head: why do we want this? Would this be rendered useless if sometime in the future we mandated limits to sync (e.g. forcing lazy loading, or only returning the most recent ten rooms, etc)? Should we extend the AS APIs instead? Do we need to better document how to use the existing helper APIs? In general I'd prefer when we created new APIs that they were designed to be "limited" from the get go, i.e. that they can be implemented such that they will always return at most N bytes of data, thus allowing us to avoid edge case "killer requests" that easily takes out the service. That clearly hasn't happened with That's not to say this shouldn't happen, but if we do implement |
AIUI, the proposal boils down to |
@KitsuneRal tbh even if you only matched |
It's worth mentioning that even though Synapse's old functionality was to return While it would be nice to just extend the AS API to help here, we have to be careful to not forget about it as we continue to put more and more features down |
honestly if the freenode bridge hits |
There's nothing in this MSC that says that bridges shalt not use this endpoint? If bridges are meant to use it then we need to worry about big bridges, if bridges aren't meant to use it then we should figure out what it is meant to be used for. This feature was removed because it was causing major service outages, I think for this to be re-added we need to have some guarantees that it won't cause similar issues. |
There shouldn't be anything in the MSC/spec that says things should(n't) use a particular endpoint. I don't think it's realistic for us to solve operational problems in the spec. From an ops perspective, I wouldn't recommend that a server owner deploy a popular bridge which uses It's a strange restriction on appservices: the |
Operational issues are caused by the fact the spec says we must support unbounded data fetching requests, and so the spec can fix those operational issues by not mandating we support those APIs. I don't think it is unreasonable to take into account implementation and operational concerns when considering what to put in the spec? Again, I would quite like to hear use cases for |
One use case would be go-neb: it doesn't use appservice transactions but fits really nicely for reserving a namespace of users. Because the spec says that the Admittedly, this is not a strong use case. If we're adamant that appservices should not be syncing then we should disable sync for all the users in the namespaces, not just the |
I don't really follow why the management user ID would want to call sync in that case?
To a certain extent I agree, though I think its more likely that the |
Bridges don't need to be big. This is meant as a first step for user-hostable appservices |
Absolutely true, but they do often have a tendency to grow big after a while. What do you mean by user-hostable appservices? |
Appservices hosted on the user's machine instead of on the server. When this is combined with future things like e2ee and some kind of dynamic appservice registration, users could have their own bridges without trusting the server. Even without e2ee, it could be used to avoid being banned from a hostile platform due to many users using the same bridge. |
any chance we could get this merged @ara4n? |
@ericmigi sorry - missed this. as per our chat, it sounds like you're not blocked on it currently, but it's still on our radar as part of upcoming catchups on our MSC backlog. |
The proxy I made for dynamic appservice allocation also removes the immediate need for this change, but it would still be nice to have so other people could use end-to-bridge encryption without having to use the proxy or other hacks. |
@mscbot concern whether this is something we should be encouraging ─ #2190 (comment) |
so we've discussed this as a spec core team and have come to the conclusion that Matrix isn't quite ready for this change just yet. Appservices tend to have extremely large accounts for the While the spec doesn't typically concern itself with the performance of endpoints to drive whether or not they are allowed, in this case it's clear that the appservice spec is trying to give a different route for appservices to use. We think that the immediate use case would be solved by other MSCs (#2409 for example), and that For sync improvements, we're looking at something like paginated sync (https://github.com/matrix-org/matrix-doc/issues/3076 - I thought we had an issue for this already, but apparently not) where we can reduce the impact of large accounts syncing. We're less concerned with users in an appservice namespace syncing because they are typically in fewer rooms, though we acknowledge the inconsistency here. Process-wise, this means we're changing tracks to postpone this MSC until after "sync improvements" are made, where we can re-evaluate this MSC's purpose in that world. @mscbot fcp cancel |
@mscbot fcp postpone |
Team member @turt2live has proposed to postpone this. The next step is review by the rest of the tagged people: Once at least 75% of reviewers approve (and there are no outstanding concerns), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! See this document for information about what commands tagged team members can give me. |
🔔 This is now entering its final comment period, as per the review above. 🔔 |
The final comment period, with a disposition to postpone, as per the review above, is now complete. |
Rendered
Signed-off-by: Tulir Asokan <tulir@maunium.net>