Details
-
Task
-
Status: Resolved
-
Major
-
Resolution: Done
-
None
-
None
-
13
Description
To achieve fault-tolerance for the maintenance primitives, we will need to add the maintenance information to the registry.
The registry currently stores all of the slave information, which is quite large (~ 17MB for 50,000 slaves from my testing), which results in a protobuf object that is extremely expensive to copy.
As far as I can tell, reads / writes to maintenance information is independent of reads / writes to the existing 'registry' information. So there are two approach here:
Add maintenance information to 'maintenance' key:
- The advantage of this approach is that we don't further grow the large Registry object.
- This approach assumes that writes to 'maintenance' are independent of writes to the 'registry'.
If these writes are not independent, this approach requires that we add transactional support to the State abstraction. This approach requires adding compaction to LogStorage.- This approach likely requires some refactoring to the Registrar.
Add maintenance information to 'registry' key: (This is the chosen method.)
- The advantage of this approach is that it's the easiest to implement.
- This will further grow the single 'registry' object, but doesn't preclude it being split apart in the future.
- This approach may require using the diff support in LogStorage and/or adding compression support to LogStorage snapshots to deal with the increased size of the registry.
Attachments
Issue Links
- blocks
-
MESOS-2067 Add HTTP API to the master for maintenance operations.
- Resolved
- contains
-
MESOS-3066 Replicated registry needs a representation of maintenance schedules
- Resolved
-
MESOS-3068 Registry operations are hardcoded for a single key (Registry object)
- Resolved
-
MESOS-3069 Registry operations do not exist for manipulating maintanence schedules
- Resolved
-
MESOS-3077 Registry recovery does not recover the maintenance object.
- Resolved