Project

General

Profile

Subtask #2613

Feature #2611: mon: Single-Paxos

Sandbox PaxosServices accesses to the store

Added by Joao Eduardo Luis almost 12 years ago. Updated about 11 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Joao Eduardo Luis
Category:
Monitor
Target version:
% Done:

0%

Source:
Tags:
Backport:
Reviewed:
Affected Versions:
Pull request ID:

Description

Each service used to have direct access to the MonitorStore, and they could mess around wherever they wanted, allowing them to keep their values anyway they so wished with little regard for uniformity in design.

We now sandbox them, providing a generic interface on the PaxosService (to be used by each service) that will relay the operations to the store with uniformity in mind, while sandboxing the services.

As an example, the old MonitorStore would look like this:

mon.a/
- osdm/
- 1
- 2
- first_committed
- last_committed
- latest_stashed
- last_pn
- accepted_pn
- osd_full/
- 1
- 2
- logm/
- 33
- 34
- first_committed
- last_committed
- last_pn
- accepted_pn
- log
- log.err
- log.info
...

And our objective is to reach such a design in which we obtain the following layout (note, this layout already contemplates using a single Paxos instance for all services):

- mon.a/
- paxos/
- 1
- 2
- 3
- first_committed
- last_committed
- last_pn
- accepted_pn
- osdm/
- 1 /* These
- 2 * are
- full_1 * service
- full_2 * specific
- first_committed * values
- last_committed */
- first_full
- last_full
- logm/
- 33
- 34
- full_33
- first_committed
- last_committed
- first_full
- last_full
- log.err
- log.info
- log
...

History

#1 Updated by Joao Eduardo Luis almost 12 years ago

I messed up the formatting and don't seem to be able to edit it. So here goes a decent version of it.

 mon.a/
   - osdm/
      - 1
      - 2
      - first_committed
      - last_committed
      - latest_stashed
      - last_pn
      - accepted_pn
   - osd_full/
      - 1
      - 2
   - logm/
      - 33
      - 34
      - first_committed
      - last_committed
      - last_pn
      - accepted_pn
   - log
   - log.err
   - log.info
  ...

And our objective is to reach such a design in which we obtain the following layout (note, this layout already contemplates using a single Paxos instance for all services):

 - mon.a/
   - paxos/
     - 1
     - 2
     - 3
     - first_committed
     - last_committed
     - last_pn
     - accepted_pn
   - osdm/
     - 1               /* These
     - 2                * are
     - full_1           * service
     - full_2           * specific
     - first_committed  * values
     - last_committed   */
     - first_full
     - last_full
   - logm/
     - 33
     - 34
     - full_33
     - first_committed
     - last_committed
     - first_full
     - last_full
     - log.err
     - log.info
     - log
  ...

Also available in: Atom PDF