Description
Please find attached the two technical decisions being proposed.
Objectives:
- Reduce the pressure exerced by JMAP on underlying data stores
- Improve network usage between James & JMAP client
Proposal for JMAP partial reads
Introduce two projections for JMAP messages:
- One with only metadata
- One with metadata + headers
Given the properties requested by the client, the most appropriate message projection will be returned.
Finally, we should nullify JSON fields not requested by the client before sending it to the client.
Proposal for JMAP preview computation
We should pre-compute message preview.
A MailboxListener will compute the preview and store it in a MessagePreviewStore.
We should have a Cassandra and memory implementation.
When the preview is precomputed then for these messages we can consider the "preview" property as a metadata.
We should provide a webAdmin task allowing to rebuild the projection.
Attachments
Attachments
1.
|
JMAP GetMessages should use the smallest projection possible | Closed | Unassigned | |
2.
|
Implement new JMAP models for GetMessages call | Closed | Unassigned | |
3.
|
MessagePreviewStore API + contract + memory | Closed | Unassigned | |
4.
|
MessagePreviewStore Cassandra | Closed | Unassigned | |
5.
|
PreCompute message preview | Closed | Unassigned | |
6.
|
JMAP new model message metadata + header + preview | Closed | Unassigned | |
7.
|
Reading hasAttachment property should be fast | Closed | Unassigned | |
8.
|
Monitor missed read on "preComputedPreview" | Closed | Unassigned | |
9.
|
Encryption for messageFastView previews | Closed | Antoine Duprat |