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.
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-apiinterface — 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_tableandunfreeze_tablehave 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/UnfreezeTableonIClient, 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_stateuntil 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, withcell_id,freeze, and first/last tablet indexreshard_table, by tablet count and by pivot keysfreeze_table/unfreeze_tablewait_for_tablet_statehelper, and an option on the commands that uses itrpc_e2edrop its raw setup