I don't think this should be added to the JMAP spec. One of the concerns
raised by a large mailbox provider we talked to was to make sure a
client could be rate limited in a reasonable manner, so it can't
overload the server. (We've also been careful the other way to try to
ensure the client can control exactly how much data it requests from the
server in one go.) Adding a command like this means the client could ask
the server to do something potentially very expensive, depending on
backend implementation.

Advertising

Now the server could reject it if it's over a certain number of messages
resulting in the query, but the exact limit will be server dependent and
when it happens the client has to fallback to a different approach.
Having two different implementations in the client is likely to be less
tested and buggier.
In general, JMAP prefers the philosophy of explicitly telling the server
what changes to make; this is often more efficient anyway if you're
keeping the client cache in sync.
The approach we take to this problem (and I would recommend) is to fetch
the list of ids up front (in pages if necessary), then ask the server to
make the changes to them in batches (say 100 to 500 at a time), waiting
for the previous request to finish before making the next one. The ids
(should be) reasonably small and quick to fetch even for large folders.
Fetching them up front ensures you don't process anything that arrives
during the operation. By doing it a batch at a time, you can make sure
you won't overload the server (and make sure the server will accept the
request), and also more easily show a progress bar to the user (because
the user is probably locked on the server while the changes are being
made), or even interleave other requests to keep the client responsive
while a large operation is happening in the background.
I think adding "setMessages with filter" to the JMAP spec (and therefore
forcing all servers to implement it) would be a mistake. There's a
better approach to achieve the same goal, or you can add a custom
extension for your own client/server if you really want.
Neil.
--
You received this message because you are subscribed to the Google Groups
"JMAP" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to jmap-discuss+unsubscr...@googlegroups.com.
To post to this group, send email to jmap-discuss@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/jmap-discuss/1476742703.3045804.758966769.7D02EC9B%40webmail.messagingengine.com.
For more options, visit https://groups.google.com/d/optout.