Project

General

Profile

Mon - Prioritize messages » History » Version 1

Jessica Mack, 06/23/2015 09:22 PM

1 1 Jessica Mack
h1. Mon - Prioritize messages
2
3
h3. Summary
4
5
Some messages are more important to finish quickly than others. Some other messages take less time than others. Lots of client messages, in a big enough cluster, can and will hinder progress of another messages (some of them even critical) simply due to the amount of messages to be handled.
6
The monitors should thus prioritize their own, mission-critical messages over any other conceivable message. The rationale should be simple: if the client waits a small fraction of a second longer, it should be okay; if the monitor waits to handle a thousand fractions of second to handle a critical message (such as a paxos lease extension), it may trigger a timeout and cause unnecessary havoc.
7
8
h3. Owners
9
10
* Joao Eduardo Luis (Inktank)
11
* Name (Affiliation)
12
* Name
13
14
h3. Interested Parties
15
16
* Name (Affiliation)
17
* Name (Affiliation)
18
* Name
19
20
h3. Current Status
21
22
There's no support for this on the monitor. From a quick look on ceph's tree, it looks like the messenger and DispatchQueue already understand Message priority, and one can use Message::set_priority() to define a message's priority.
23
This blueprint can be addressed on its own, but it would be preferable if it were addressed after addressing another submitted blueprint for Giant: [[mon - Independently dispatch non-conflicting messages|mon: Independently dispatch non-conflicting messages]]
24
25
h3. Detailed Description
26
27
Once defined which messages should have higher priority when handled by the monitor, this task should be a matter of sending messages from the monitors to another monitors setting a higher priority on some of the messages.
28
 
29
For instance, with regard to message priority:
30
 
31
MMonPaxos >  MMonElection > MMonGetMap > MMonProbe > MMonQuorumService > PaxosServiceMessage > MMonSync
32
33
h3. Work items
34
35
h4. Coding tasks
36
37
# Assess priorities
38
# Add monitor interface to appropriately send messages with an appropriate priority (instead of having to do it manually for each single message)
39
# Unit-tests
40
** parse through logs (yuck!)
41
** add a workunit that sends a bunch of messages with different priorities and expects replies in a priority-based order (this needs some thought!)
42
43
h4. Documentation tasks
44
45
# doc: document message priorities