Project

General

Profile

Feature #2611

mon: Single-Paxos

Added by Joao Eduardo Luis almost 11 years ago. Updated over 8 years ago.

Status:
Resolved
Priority:
Normal
Category:
Monitor
Target version:
% Done:

100%

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

Description

The ceph-mon is (roughly) composed by a Monitor class, responsible for all things monitor-ish, and several monitor services, each one responsible to handle a specific component (e.g., the OSDMonitor will deal with things related with the OSD, while the AuthMonitor will deal with things related with Auth on the cluster).

Each one of these services (actually extending the PaxosService class, but hereupon simply called as 'service'), have their own instance of a Paxos class, and access to a shared MonitorStore.

Although this works, there are several issues with it:

- Each service ties its map versions to the Paxos versions, creating a dependency that simply should not exist.

- There are as many Paxos instances as running services, but we only purpose new values one at a time (a lock on the Monitor makes sure of it). This means that having one Paxos or a thousand of them would bear the same result.

- Adding more services becomes an hazardous and error prone task.

- It's impossible to batch proposals from multiple services in order to reduce proposal time or network activity.

Our main objective is to make the Monitor use one single Paxos instance, shared across all the services.

Furthermore, the usage of the MonitorStore carries a whole set of problems by itself:

- Its interface is far from the most intuitive.

- It's a file-based store with an unorthodox way of guaranteeing consistency in case of failure.

- It does not provide a simple interface guaranteeing that the store will transit from a consistent state onto another consistent state if we apply more than one operation (a problem that would not exist had we transactions like in the ObjectStore or the KeyValueDBStore).

- And finally, we already have interfaces and classes on Ceph that provide storage mechanisms meeting the needs of the Monitor, and there is no need to keep the MonitorStore around.

For these reasons, the MonitorStore will be moved onto a Key/Value Store, backed up by the LevelDBStore class already available on Ceph.


Subtasks

Subtask #2612: Monitor key/value storeResolvedJoao Eduardo Luis

Subtask #2613: Sandbox PaxosServices accesses to the storeResolvedJoao Eduardo Luis

Subtask #2614: Single Paxos instance shared across the existing servicesClosedJoao Eduardo Luis

Subtask #2615: mon: Single-Paxos: MDSMap::get_health() assertingClosedJoao Eduardo Luis

Subtask #2616: mon: Single-Paxos: AuthMonitor: key_server has no entriesClosedJoao Eduardo Luis

Subtask #2620: mon: Single-Paxos: MDSMonitor: MMDSBeacon from entity with insufficient priviledgesClosedJoao Eduardo Luis

Subtask #2621: mon: Single-Paxos: synchronize the MonitorDBStore of oblivious monitorResolvedJoao Eduardo Luis

Subtask #2736: mon: Single-Paxos: Sync: Implement message passingResolvedJoao Eduardo Luis

Subtask #2744: mon: Single-Paxos: Sync: Create new Message typeResolvedJoao Eduardo Luis

Subtask #2745: mon: Single-Paxos: Sync: Add new message support to the Monitor classClosedJoao Eduardo Luis

Subtask #2746: mon: Single-Paxos: Sync: Test message passingRejectedJoao Eduardo Luis

Subtask #3069: mon: Single-Paxos: messaging: log MMonSync messages for offline matchingRejectedJoao Eduardo Luis

Subtask #2737: mon: Single-Paxos: Sync: Force trimming to be proposed through PaxosResolvedJoao Eduardo Luis

Subtask #2738: mon: Single-Paxos: Sync: Add snapshot support to the monitor storeRejectedJoao Eduardo Luis

Subtask #2739: mon: Single-Paxos: Sync: Synchronize the store of a drifted monitorResolvedJoao Eduardo Luis

Subtask #2757: mon: Single-Paxos: Sync: pack chunks of the MonitorDBStore into transactionsResolvedJoao Eduardo Luis

Subtask #2756: mon: Single-Paxos: LevelDBStore: Make iterator thread-safeResolvedJoao Eduardo Luis

Subtask #2758: mon: Single-Paxos: Sync: Extend the in-memory mock-up of KeyValueDB to support the safe iteratorResolvedJoao Eduardo Luis

Subtask #2805: mon: Single-Paxos: Sync: Create a test unit to verify the correctness of the whole-space and snapshot iteratorsResolvedJoao Eduardo Luis

Subtask #2741: mon: Single-Paxos: Sync: Assess requirements for QA testsResolvedJoao Eduardo Luis

Subtask #2622: mon: Single-Paxos: convert existing, old MonitorStore to a brand new MonitorDBStoreResolvedJoao Eduardo Luis

Subtask #2633: mon: Single-Paxos: ceph tool unable to connect to monitorClosedJoao Eduardo Luis

Subtask #2643: mon: Single-Paxos: mds: Strange message behavior on peonClosedJoao Eduardo Luis

Subtask #2645: mon: Single-Paxos: Could not decrypt ticket info (immediately after running vstart.sh -n -x)RejectedJoao Eduardo Luis

Subtask #2659: mon: Single-Paxos: ceph tool -w subscriptions not being updatedCan't reproduceJoao Eduardo Luis

Subtask #2674: mon: Single-Paxos: mon commits suicide after remove&addRejectedJoao Eduardo Luis


Related issues

Related to Ceph - Bug #4026: mon: Single-Paxos: abort on LogMonitor::update_from_paxos Resolved 02/05/2013
Related to Ceph - Bug #4040: mon: Single-Paxos: on PGMonitor, FAILED assert(0 == "update_from_paxos: error parsing incremental update") Resolved 02/07/2013
Related to Ceph - Bug #4041: mon: Single-Paxos: on Paxos, leader didn't trim old versions Can't reproduce 02/07/2013
Related to Ceph - Bug #4037: mon: Single-Paxos: on Paxos, FAILED assert(begin->last_committed == last_committed) Resolved 02/06/2013
Related to Ceph - Bug #4175: mon: Single-Paxos: during proposal of learned value, assert(have_pending) Resolved 02/17/2013
Related to Ceph - Bug #4162: mon: Single-Paxos: on sync, corrupted paxos store Resolved 02/16/2013
Duplicated by Ceph - Bug #4103: mon: Single-Paxos: on MonitorDBStore, segfault during sync Duplicate 02/12/2013

History

#1 Updated by Anonymous almost 11 years ago

  • Tags set to CY2012

#2 Updated by Sage Weil almost 11 years ago

  • translation missing: en.field_story_points set to 50
  • translation missing: en.field_position set to 1
  • translation missing: en.field_position changed from 1 to 1385

#3 Updated by Sage Weil almost 11 years ago

  • translation missing: en.field_position deleted (1385)
  • translation missing: en.field_position set to 76

#4 Updated by Sage Weil over 10 years ago

  • translation missing: en.field_position deleted (120)
  • translation missing: en.field_position set to 2

#5 Updated by Sage Weil over 10 years ago

  • translation missing: en.field_position deleted (8)
  • translation missing: en.field_position set to 7

#6 Updated by Sage Weil over 10 years ago

  • Target version set to v0.57c
  • translation missing: en.field_position deleted (8)
  • translation missing: en.field_position set to 3

#7 Updated by Samuel Just over 10 years ago

  • translation missing: en.field_position deleted (8)
  • translation missing: en.field_position set to 8

#8 Updated by Ian Colle over 10 years ago

  • Target version changed from v0.57c to v0.58
  • translation missing: en.field_position deleted (8)
  • translation missing: en.field_position set to 1

#9 Updated by Sage Weil over 10 years ago

  • Target version changed from v0.58 to v0.59

#10 Updated by Sage Weil over 10 years ago

  • Status changed from In Progress to Resolved

Also available in: Atom PDF