Skip to content

Typed tablet management: mount, unmount, remount, reshard, freeze are raw-command-only #65

Description

@sshaplygin

Part of #63.

Half the dynamic-table lifecycle is missing. Rows can be looked up, selected, inserted and deleted over both transports, behind one ytsaurus-api interface — but the table they live in can only be mounted through the raw-command door #7 opened. mount_table, unmount_table, remount_table, reshard_table, freeze_table and unfreeze_table have no typed form, which means the escape hatch is doing routine work it was not built for: no validation, no typed options, no help from the compiler.

Both official clients have the whole set — C++ MountTable / UnmountTable / RemountTable / ReshardTable / FreezeTable / UnfreezeTable on IClient, Go the same on its mount client. These are light commands. Days of work, not weeks.

The part that is not mechanical is waiting. A mount returns before the tablets are mounted, and every caller then polls @tablet_state until it settles; both official clients ship that wait rather than leaving it to each user to rediscover. The RPC end-to-end example is the proof it is needed — it creates and mounts its table raw, then waits by hand.

  • mount_table / unmount_table / remount_table, with cell_id, freeze, and first/last tablet index
  • reshard_table, by tablet count and by pivot keys
  • freeze_table / unfreeze_table
  • a wait_for_tablet_state helper, and an option on the commands that uses it
  • exercise them in the local-cluster e2e, and let rpc_e2e drop its raw setup

Metadata

Metadata

Assignees

No one assigned

    Labels

    apiPublic API designenhancementNew feature or requestparityClosing a gap against the official C++/Go clients

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions