Project

General

Profile

Cleanup #10506

mon: get rid of QuorumServices

Added by Joao Eduardo Luis over 4 years ago. Updated about 2 years ago.

Status:
New
Priority:
Normal
Category:
Code Hygiene
Target version:
Start date:
01/10/2015
Due date:
% Done:

0%

Tags:
Backport:
Reviewed:
Affected Versions:
Component(RADOS):
Monitor
Pull request ID:

Description

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.

History

#1 Updated by Joao Eduardo Luis over 4 years ago

  • Parent task set to #10509

#2 Updated by Joao Eduardo Luis about 2 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.

#3 Updated by Joao Eduardo Luis about 2 years ago

  • Parent task deleted (#10509)
  • Component(RADOS) Monitor added

#4 Updated by Joao Eduardo Luis about 2 years ago

  • Target version set to 540

#5 Updated by Joao Eduardo Luis about 2 years ago

  • Target version changed from 540 to v13.0.0

Also available in: Atom PDF