issue-1350: multitablet filesystems api, follower configuration code, automatic session creation in followers, node creation in followers via requests to leader, service uts #1420
Implementing only happy path in the first version. Leaving TODOs in the places where I took shortcuts.
Private API:
ConfigureFollowers - tells the tablet that it has "follower" tablets - effectively, followers are file node shards
ConfigureAsFollower - tells the follower tablet that it is the shard with ShardNo=X
ShardNo is needed to split the NodeId and HandleId spaces between the leader and the followers so that they do not intersect. Follower tablets store regular files (attributes and data) directly under RootNode, names in NodeRefs are guids. Leader tablet stores all the other node types (the most important thing which it stores is the directory structure).
The current PR describes the intended purpose of all these changes via the UTs in service_ut.cpp. My next PR will contain the usage of the things implemented in this PR in TStorageServiceActor.
I left several TODOs regarding the "unhappy" path. Will implement them after successful performance tests of the happy path. Will implement follower metrics aggregation in the leader after that as well.
Implementing only happy path in the first version. Leaving TODOs in the places where I took shortcuts.
Private API:
ShardNo is needed to split the NodeId and HandleId spaces between the leader and the followers so that they do not intersect. Follower tablets store regular files (attributes and data) directly under RootNode, names in NodeRefs are guids. Leader tablet stores all the other node types (the most important thing which it stores is the directory structure).
The current PR describes the intended purpose of all these changes via the UTs in service_ut.cpp. My next PR will contain the usage of the things implemented in this PR in TStorageServiceActor.
I left several TODOs regarding the "unhappy" path. Will implement them after successful performance tests of the happy path. Will implement follower metrics aggregation in the leader after that as well.
1350