Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tablet splitting: support splitting on the tserver side #1459

Closed
ttyusupov opened this issue May 31, 2019 · 0 comments
Closed

Tablet splitting: support splitting on the tserver side #1459

ttyusupov opened this issue May 31, 2019 · 0 comments
Assignees
Labels
kind/new-feature This is a request for a completely new feature

Comments

@ttyusupov
Copy link
Contributor

ttyusupov commented May 31, 2019

Parent ticket: "Tablet splitting" #1004.

Depends on #1458.

@ttyusupov ttyusupov added the kind/new-feature This is a request for a completely new feature label May 31, 2019
@ttyusupov ttyusupov self-assigned this May 31, 2019
@ttyusupov ttyusupov changed the title Tablet splitting: implement splitting on tserver side Tablet splitting: support splitting on tserver side May 31, 2019
@ttyusupov ttyusupov changed the title Tablet splitting: support splitting on tserver side Tablet splitting: support splitting on the tserver side May 31, 2019
@ttyusupov ttyusupov added this to To Do in YBase features via automation Jun 25, 2019
ttyusupov added a commit that referenced this issue Apr 9, 2020
Summary:
Implemented t-server side tablet splitting according to https://github.com/yugabyte/yugabyte-db/blob/master/architecture/design/docdb-automatic-tablet-splitting.md#tablet-splitting-on-tserver-side.

This revision includes following changes:
- `consensus/consensus.proto`: added `SPLIT_OP` operation type.
- ReplicaState: added split_op_id_ field which tracks ID of the split operation added to the RAFT log; after a split operation is added to the RAFT log - tablet peer will reject any incoming write requests, which should be later retried to new after-split tablets.
- `tablet/metadata.proto`: added `TABLET_DATA_SPLIT` `TabletDataState` value which means tablet split has been started or already completed.
- `tablet/operations`: added `SplitOperationState`
- added `TabletSplitApplier` interface which is implemented by `TSTabletManager` and passed to `TabletPeer`, so it can ask `TSTabletManager` to do the actual split during the processing of `SplitOperation`.
- `RemoteBootstrapClient`: support remote bootstrapping from tablet peer in `TABLET_DATA_SPLIT` state in addition to `TABLET_DATA_READY`.
- Added `SplitTabletRequestPB`/`SplitTabletResponsePB` and supported handling this request in `TabletServiceAdminImpl`.
- Other classes: added support for handling `SplitOperation`.
- Extracted `CopyDirectory` template utility function, common for `yb` and `rocksdb` codebases.
- Added tablet-split-itest.

Test Plan: Jenkins

Reviewers: mikhail, bogdan, sergei

Reviewed By: bogdan, sergei

Subscribers: bogdan, ybase

Differential Revision: https://phabricator.dev.yugabyte.com/D7234
YBase features automation moved this from To Do to Done Jun 22, 2020
@ttyusupov ttyusupov added this to To do in Tablet splitting via automation Jun 23, 2020
@ttyusupov ttyusupov moved this from To do to Done in Tablet splitting Jun 23, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/new-feature This is a request for a completely new feature
Projects
Development

No branches or pull requests

1 participant