Details
-
New Feature
-
Status: Resolved
-
Major
-
Resolution: Resolved
-
None
Description
With the intention to support multi-raft, I wanna bring up a question on how the pipeline unique ids be managed. Since every datanode can be member in multiple raft pipelines, the pipeline ids need to be persisted with the datanode for recovery purpose (we can talk about recovery later). Generally there are two options:
- Store in datanode (like datanodeDetails) and every time pipelines mapping change on single datanode, pipeline ids will be serialized to local file. This way will lead to many more local serialization of things like datanodeDetails, but the updates are only for local datanode change. Improvement can be made like linking a serializable object to datanodeDetails and datanode keeps updating the new pipeline ids to the serializable object instead the details file. On the other hand, since the pipeline ids are stored only in datanode locally, there will be no global view in SCM. (or we can store a lazy copy?)
- Stored in SCM. SCM can maintain a large mapping between datanode ids and pipeline ids. But this way will lead to an exponentially increasing frequency in SCM updates since the pipeline mapping changes are way more complex and happen all the time. Obviously this gives SCM too much pressure, but it can also give SCM a global view on the management over datanodes and multi raft pipelines.
Attachments
Issue Links
- Blocked
-
HDDS-1564 Ozone multi-raft support
- Resolved