mon: get rid of QuorumServices
A QuorumService is an abstraction allowing for easier management of services requiring a quorum to work correctly.
While it seemed like a good idea at the time, hopeful of being useful for the future expansion of the monitor in terms of in-memory-only services (say, for health purposes), it turned out to be a slight annoyance code-wise.
At the moment, we have 3 services defined in mon/QuorumService.h: HEALTH, TIMECHECK, CONFIG_KEY. Of these, only two are built using the QuorumService class: HealthService and ConfigKeyService. Timechecks are embedded in the Monitor class code.
HealthService is another mind boggling piece of code: defines a HEALTH_DATA service and is implemented by mon/HealthMonitor.cc, which in turn will manage mon/DataHealthService.cc, the latter being responsible for tracking monitor disk usage across the quorum.
Given the small usefulness of this infrastructure compared to its large footprint, I would very much enjoy getting rid of it all or implement it in a way that's so trivial that doesn't make my head hurt.
#2 Updated by Joao Eduardo Luis over 4 years ago
- Tracker changed from Subtask to Cleanup
- Project changed from Ceph to RADOS
- Subject changed from mon: get rid/refactor of QuorumServices to mon: get rid of QuorumServices
- Category changed from Monitor to Code Hygiene
- Assignee set to Joao Eduardo Luis
I don't think the QuorumService interface is bringing enough to the table to keep it around.
What we are achieving with it easily be mimicked with the PaxosService, but keeping it readable and, in case of the DataHealth stuff, also always writeable. On the other hand, moving the ConfigKeyService to a PaxosService makes a lot of sense now.