Skip to content

[Blockstore] Support externally owned volume tablets - #7591

Open
Maximus5 wants to merge 1 commit into
users/maximus5/erase-connection-fixfrom
users/maximus5/external-volume-ownership
Open

Maximus5 wants to merge 1 commit into
users/maximus5/erase-connection-fixfrom
users/maximus5/external-volume-ownership

Conversation

@Maximus5

@Maximus5 Maximus5 commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Notes

Issue: #6959

Fastshard owns volume Tablets that are not registered in NBS SchemeShard.
DiskRegistry did not store the owner Tablet ID. Reallocation notifications
could not reach that Tablet, and cleanup could treat external disks as
native NBS volumes.

Solution
Store ExternalVolumeTabletId with each disk and check it during allocation,
cleanup, and deallocation. Pass the ID in reallocation notifications and
route them directly through VolumeProxy. Select an external connection by
both DiskId and Tablet ID, so a changed owner does not reuse the old route.
Skip native-only volume operations for external disks.

Testing

The selected VolumeProxy, DiskRegistry, and Filestore suites passed:
35 tests.

./ya make -tA \
    cloud/blockstore/libs/storage/volume_proxy/ut \
    cloud/blockstore/libs/storage/disk_registry/ut \
    cloud/blockstore/libs/storage/disk_registry/ut_external_volume \
    cloud/filestore/libs/storage/disk_registry_proxy/impl/ut \
    -F '*TVolumeProxyTest*' \
    -F '*ExternalVolume*' \
    -F '*ShouldMatchReallocateDiskWireFormat*'

After the final notification change, both external and native
notification tests passed.

./ya make -tA \
    cloud/blockstore/libs/storage/disk_registry/ut_external_volume \
    cloud/blockstore/libs/storage/disk_registry/ut_lifecycle \
    -F '*ShouldNotifyExternalVolumeTablet*' \
    -F '*ShouldNotifyDisks*'

@Maximus5
Maximus5 added this pull request to stack #7592 October 21, 2026 15:43
@Maximus5 Maximus5 added the recheck Add this label to relaunch checks, it will be automatically removed label Oct 21, 2026
@github-actions github-actions Bot removed the recheck Add this label to relaunch checks, it will be automatically removed label Oct 21, 2026
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-relwithdebinfo have completed.

Tip

Planned checks for linux-x86_64-relwithdebinfo.

@Maximus5
Maximus5 force-pushed the users/maximus5/external-volume-ownership branch from e060247 to 0c40358 Compare October 21, 2026 15:48
@Maximus5 Maximus5 added the recheck Add this label to relaunch checks, it will be automatically removed label Oct 21, 2026
@Maximus5
Maximus5 force-pushed the users/maximus5/external-volume-ownership branch from 0c40358 to b1a571c Compare October 21, 2026 15:51
@github-actions github-actions Bot removed the recheck Add this label to relaunch checks, it will be automatically removed label Oct 21, 2026
@Maximus5
Maximus5 force-pushed the users/maximus5/external-volume-ownership branch from b1a571c to b73fc57 Compare October 21, 2026 18:19
@Maximus5 Maximus5 added the recheck Add this label to relaunch checks, it will be automatically removed label Oct 21, 2026
@github-actions github-actions Bot removed the recheck Add this label to relaunch checks, it will be automatically removed label Oct 21, 2026
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-relwithdebinfo have completed.

Tip

Planned checks for linux-x86_64-relwithdebinfo.

🟢 linux-x86_64-relwithdebinfo target: cloud/disk_manager/ (test time: 308s): all tests PASSED for commit b73fc57.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
1849 1849 0 0 0 0 0

🟢 linux-x86_64-relwithdebinfo target: cloud/blockstore/ (test time: 1767s): all tests PASSED for commit b73fc57.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
7704 7703 0 0 0 1 0

🔴 linux-x86_64-relwithdebinfo target: cloud/filestore/ (test time: 5460s) Test run completed, no test results found for commit b73fc57.
Please check build logs.

🟢 linux-x86_64-relwithdebinfo target: cloud/filestore/ (test time: 5202s): all tests PASSED for commit b73fc57.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
5047 5046 0 0 0 1 0

@Maximus5
Maximus5 force-pushed the users/maximus5/external-volume-ownership branch from b73fc57 to 0dc5b50 Compare October 23, 2026 15:19
@Maximus5 Maximus5 added the recheck Add this label to relaunch checks, it will be automatically removed label Oct 23, 2026
@github-actions github-actions Bot removed the recheck Add this label to relaunch checks, it will be automatically removed label Oct 23, 2026
@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-relwithdebinfo have completed.

Tip

Planned checks for linux-x86_64-relwithdebinfo.

🟢 linux-x86_64-relwithdebinfo target: cloud/tasks/,cloud/storage/,cloud/fastshard/ (test time: 278s): all tests PASSED for commit 0dc5b50.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
1798 1798 0 0 0 0 0

🟢 linux-x86_64-relwithdebinfo target: cloud/disk_manager/ (test time: 327s): all tests PASSED for commit 0dc5b50.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
1849 1849 0 0 0 0 0

🔴 linux-x86_64-relwithdebinfo target: cloud/blockstore/ (test time: 1655s): some tests FAILED for commit 0dc5b50.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
7691 7683 0 7 0 1 0

🔴 linux-x86_64-relwithdebinfo target: cloud/blockstore/ (test time: 27s): some tests FAILED for commit 0dc5b50.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
4 2 0 2 0 0 0

🔴 linux-x86_64-relwithdebinfo target: cloud/blockstore/ (test time: 14s): some tests FAILED for commit 0dc5b50.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
4 2 0 2 0 0 0

@Maximus5
Maximus5 force-pushed the users/maximus5/external-volume-ownership branch from 0dc5b50 to e74164c Compare October 23, 2026 17:20
@Maximus5
Maximus5 removed this pull request from stack #7592 October 23, 2026 17:21
@Maximus5
Maximus5 added this pull request to stack #7613 October 23, 2026 17:22
@Maximus5
Maximus5 force-pushed the users/maximus5/external-volume-ownership branch from e74164c to 4ebfd48 Compare October 23, 2026 17:30
@Maximus5 Maximus5 added the recheck Add this label to relaunch checks, it will be automatically removed label Oct 23, 2026
@github-actions github-actions Bot removed the recheck Add this label to relaunch checks, it will be automatically removed label Oct 23, 2026
@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-relwithdebinfo have completed.

Tip

Planned checks for linux-x86_64-relwithdebinfo.

Problem:
Fastshard owns volume Tablets that are not registered in NBS SchemeShard.
DiskRegistry did not store the owner Tablet ID. Reallocation notifications
could not reach that Tablet, and cleanup could treat external disks as
native NBS volumes.

Solution:
Store ExternalVolumeTabletId with each disk and check it during allocation,
cleanup, and deallocation. Pass the ID in reallocation notifications and
route them directly through VolumeProxy. Select an external connection by
both DiskId and Tablet ID, so a changed owner does not reuse the old route.
Skip native-only volume operations for external disks.

Testing:
The selected VolumeProxy, DiskRegistry, and Filestore suites passed:
35 tests.

```bash
./ya make -tA \
    cloud/blockstore/libs/storage/volume_proxy/ut \
    cloud/blockstore/libs/storage/disk_registry/ut \
    cloud/blockstore/libs/storage/disk_registry/ut_external_volume \
    cloud/filestore/libs/storage/disk_registry_proxy/impl/ut \
    -F '*TVolumeProxyTest*' \
    -F '*ExternalVolume*' \
    -F '*ShouldMatchReallocateDiskWireFormat*'
```

After the final notification change, both external and native
notification tests passed.

```bash
./ya make -tA \
    cloud/blockstore/libs/storage/disk_registry/ut_external_volume \
    cloud/blockstore/libs/storage/disk_registry/ut_lifecycle \
    -F '*ShouldNotifyExternalVolumeTablet*' \
    -F '*ShouldNotifyDisks*'
```
@Maximus5
Maximus5 force-pushed the users/maximus5/external-volume-ownership branch from 4ebfd48 to 23ee696 Compare October 23, 2026 17:53
@Maximus5
Maximus5 removed this pull request from stack #7613 October 23, 2026 17:53
@Maximus5
Maximus5 added this pull request to stack #7615 October 23, 2026 17:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant