[
https://issues.apache.org/jira/browse/JAMES-3559?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17335181#comment-17335181
]
Raphael Ouazana commented on JAMES-3559:
----------------------------------------
> BTW this practice is standard:
> https://stephenbussey.com/2018/02/13/debounce-websocket-messages.html
It seems we don't have the same definition of "standard" ;)
> I'm not so sure to understand what is the issue with this approach?
For me it's new, so I'm trying to dig to find potential issues. First I think
it's a bad idea to introduce a new behavior to fix an existing issue. Second
introducing a time-based solution always scares me:
- this is harder to test
- what happens if the server breaks while buffering?
- what happens if a user receives continuously email at a specific rate (1 per
second for example)?
- what is the risk of the buffer increasing the memory usage in case of too
many events buffered?
> JMAP PUSH: window events on the server side?
> --------------------------------------------
>
> Key: JAMES-3559
> URL: https://issues.apache.org/jira/browse/JAMES-3559
> Project: James Server
> Issue Type: Improvement
> Components: JMAP
> Affects Versions: 3.6.0
> Reporter: Benoit Tellier
> Assignee: Antoine Duprat
> Priority: Major
> Time Spent: 50m
> Remaining Estimate: 0h
>
> h3. Why?
> Today a JAMES action might trigger several events being dispatched on the
> event bus (eg moving 2 messages will end up firing 2 additions and 2
> deletion) resulting in likely 4 StateChanges being pushed to the end user.
> h3. How?
> Using the reactor library, James can likely delay pushes for a given
> timewindow and merge the state changes together in order to supply the client
> with only one state change.
> A likely time value might be 2 seconds.
> - Pros: avoid event storm and will lower re-synchronization request count
> (good for perf?)
> - Cons: delays of 2s for real time across devices.
> We could of course make it configurable via a jmap.properties configuration.
> {code:java}
> # Optional. Omiting this property leads to windowing being disables. James
> will
> # then directly forward all StateChanges to the end user without attempting
> to
> # buffer and aggregating them.
> # If specified, James will delay stateChanges for that given amout of time
> and will attempt
> # to aggregate subsequent state changes together before returning them to the
> client.
> # Units: ms, s, min, h, d
> push.aggregation.window.duration=2s
> {code}
> Thoughts [~inputmice] maybe?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]