[jira] [Commented] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-10-13 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17213533#comment-17213533
 ] 

René Cordier commented on JAMES-3277:
-

[https://github.com/linagora/james-project/pull/3889] contributes some 
refactoring to fasten Setmessages::update flags

> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
> Fix For: 3.6.0
>
> Attachments: Capture_d_écran_de_2020-06-22_12-10-11.png, 
> Capture_d_écran_de_2020-06-22_12-11-46.png
>
>
> {{}}
>  We are reading system mailboxes to validate each updates.
> What is surprising is the high amount of mailbox reads: we are reading system 
> mailboxes to validate each updates.
> The flamegraph correlates positively with the above assertion.
> (see attachments)
> *DoD*
>  it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[jira] [Commented] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-10-12 Thread Benoit Tellier (Jira)


[ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17212137#comment-17212137
 ] 

Benoit Tellier commented on JAMES-3277:
---

Some work remains on this topic...

# Why 

{code:java}
 ASYNC
Transaction type: 
Web
Transaction name: 
/jmap
Start: 
2020-10-12 9:01:04.358 am (+07:00)
Duration: 
4,301.2 milliseconds
Breakdown (Main Thread):total (ms)  count
http request
0.431
Breakdown (Auxiliary Threads):  total (ms)  count
auxiliary thread
6,096.4 12,844
jmapMethod
4,266.4 1
cassandra query
101.6   1,538
Breakdown (Async Timers):   total (ms)  count
cassandra query
4,470.6 1,538
JVM Thread Stats (Main Thread)
CPU time: 0.41 milliseconds
Blocked time: 0.0 milliseconds
Waited time: 0.0 milliseconds
Allocated memory: 18.5 KB
JVM Thread Stats (Auxiliary Threads)
CPU time: 1,099.3 milliseconds
Blocked time: 0.0 milliseconds
Waited time: 4,769.0 milliseconds
Allocated memory: 28.8 MB 
{code}

A query updating 56 messages took 4.3 seconds to complete (76 ms per message!) 
raising a total of 1539 Cassandra queries (27 per messages).

This is a recurring pattern of our Cassandra slow logs.

# Details

See attached screenshot

# How

A quick analysis allowed to identify that:

 - JAMES-3277 was partially done: an outbox role read remained in 
SetMessageUpdateProcessor
 - CassandraMessageIdMapper::setFlags was needlessly reading messages twice
 - messagev2 table was queried while it is uneeded
 - Reading messages individually in SetMessageUpdateProcessor results in right 
resolution and existence to be performed twice
 - Reading messages collectively enable some sort of parallelism
 - StoreMessageIdManager::setFlags was needlessly reading mailboxes twice

# Definition of done

Reduce Cassandra query count upon SetMessages flags update (33%) thus fastening 
flags update

# Not in the DOD

Grouping updates by mailboxes in order to allocate the messageId only once and 
perform the updates  in parallel.

Though significant improvement can be achieved that way!

# Expected outcome

This work enables saving 10 requests per message and according to the execution 
timing above should save around 1480ms of Cassandra query time. 



> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
> Fix For: 3.6.0
>
> Attachments: Capture_d_écran_de_2020-06-22_12-10-11.png, 
> Capture_d_écran_de_2020-06-22_12-11-46.png
>
>
> {{}}
>  We are reading system mailboxes to validate each updates.
> What is surprising is the high amount of mailbox reads: we are reading system 
> mailboxes to validate each updates.
> The flamegraph correlates positively with the above assertion.
> (see attachments)
> *DoD*
>  it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[jira] [Commented] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-06-30 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17148531#comment-17148531
 ] 

René Cordier commented on JAMES-3277:
-

[https://github.com/linagora/james-project/pull/3481] has been merged

> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
> Attachments: Capture_d_écran_de_2020-06-22_12-10-11.png, 
> Capture_d_écran_de_2020-06-22_12-11-46.png
>
>
> {{}}
>  We are reading system mailboxes to validate each updates.
> What is surprising is the high amount of mailbox reads: we are reading system 
> mailboxes to validate each updates.
> The flamegraph correlates positively with the above assertion.
> (see attachments)
> *DoD*
>  it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[jira] [Commented] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-06-30 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17148408#comment-17148408
 ] 

René Cordier commented on JAMES-3277:
-

[https://github.com/linagora/james-project/pull/3478] has been merged

> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
> Attachments: Capture_d_écran_de_2020-06-22_12-10-11.png, 
> Capture_d_écran_de_2020-06-22_12-11-46.png
>
>
> {{}}
>  We are reading system mailboxes to validate each updates.
> What is surprising is the high amount of mailbox reads: we are reading system 
> mailboxes to validate each updates.
> The flamegraph correlates positively with the above assertion.
> (see attachments)
> *DoD*
>  it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[jira] [Commented] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-06-26 Thread Benoit Tellier (Jira)


[ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17146078#comment-17146078
 ] 

Benoit Tellier commented on JAMES-3277:
---

https://github.com/linagora/james-project/pull/3481 reduces the amount of 
mailbox reads performed by StoreMessageManager::setInMailboxes
https://github.com/linagora/james-project/pull/3478 avoids reading the outbox 
mailbox for each message

> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
> Attachments: Capture_d_écran_de_2020-06-22_12-10-11.png, 
> Capture_d_écran_de_2020-06-22_12-11-46.png
>
>
> {{}}
>  We are reading system mailboxes to validate each updates.
> What is surprising is the high amount of mailbox reads: we are reading system 
> mailboxes to validate each updates.
> The flamegraph correlates positively with the above assertion.
> (see attachments)
> *DoD*
>  it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[jira] [Commented] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-06-24 Thread Benoit Tellier (Jira)


[ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17144583#comment-17144583
 ] 

Benoit Tellier commented on JAMES-3277:
---

We are in my opinion missing valuable information to understand this work.

> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
>
> {{}}
> We are reading system mailboxes to validate each updates. 
> *DoD*
> it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org