Repository navigation
Conversation
|
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.
|
|
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/blockstore/ (test time: 1396s): all tests PASSED for commit 81f3385.
|
|
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/blockstore/ (test time: 11891s): all tests PASSED for commit 46fb28b.
|
46fb28b to
3a112ba
Compare
|
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/blockstore/ (test time: 1796s): some tests FAILED for commit 3a112ba.
🟢 linux-x86_64-relwithdebinfo target: cloud/blockstore/ (test time: 1015s): all tests PASSED for commit 3a112ba.
|
3a112ba to
c06f4a0
Compare
|
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.
|
|
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.
|
c06f4a0 to
a1c764e
Compare
|
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.
|
|
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/blockstore/ (test time: 1430s): all tests PASSED for commit a1c764e.
|
a1c764e to
f04738e
Compare
264362b to
65256ca
Compare
|
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.
|
65256ca to
1c2b0b5
Compare
1c2b0b5 to
6c5cb37
Compare
6c5cb37 to
eb6f25a
Compare
|
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/blockstore/ (test time: 1362s): all tests PASSED for commit eb6f25a.
|
eb6f25a to
0222e07
Compare
|
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/blockstore/ (test time: 1418s): all tests PASSED for commit 0222e07.
|
0222e07 to
4d00f80
Compare
|
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/blockstore/ (test time: 1457s): all tests PASSED for commit 4d00f80.
|
4d00f80 to
9bccefc
Compare
|
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/blockstore/ (test time: 1501s): all tests PASSED for commit 9bccefc.
|
|
AI Review: https://claude.ai/share/797b9730-72fd-4ca9-9dae-cdb5463166ba comments fixed |
VolumeProxy kept only one connection per Tablet. When two disk connections shared a Tablet, removing one could close their pipe too early or leave it open after both connections were gone. A disconnect could also leave requests on the other connection waiting. Store all connection IDs for each Tablet and close the shared pipe only when the last connection is removed. Handle pipe connect and disconnect events for every connection on that Tablet. Track active requests per connection so they can be cancelled without scanning requests for other Tablets. Tested with: * tests for both expiry orders * closing the pipe after the last connection expires * cancelling requests on both connections ``` ./ya make -tA cloud/blockstore/libs/storage/volume_proxy/ut -F '*TVolumeProxyTest*' ```
**Problem** After disconnect, an idle VolumeProxy connection could remain without a cleanup timer and keep a shared replacement pipe open. This happened when its timer expired during a pending request, or when its first request was cancelled before any successful response. **Solution** - Schedule cleanup after disconnect when the connection has no requests and no cleanup timer. - Remove idle connections after the inactivity timeout. - Close the shared pipe when its last connection is removed. **Testing** Added regression tests for both scenarios. Both reproduced the leak without the fix. All 27 VolumeProxy tests passed with the fix. ```bash ./ya make -tA cloud/blockstore/libs/storage/volume_proxy/ut ```
9bccefc to
ef6643c
Compare
|
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
VolumeProxy kept only one connection for each Tablet, although several disk
connections can share it. Removing one connection could close a pipe still
in use. Removing the last connection could leave the pipe open. A disconnect
could leave requests on another connection waiting.
After a disk was resolved to a different real DiskId, the old mapping could
still point to its connection. This could leave a stale pointer when that
connection was removed.
Issue: #7418
Solution
Track all connections for each Tablet and close the shared pipe only when
the last connection is removed. Apply pipe connect and disconnect events to
the connections that use the pipe, while leaving connections that are still
resolving alone. Track active requests per connection so they can be
cancelled without scanning requests for other Tablets.
Remove old real DiskId mappings when a disk resolves to a new name. Handle
broken VolumeProxy state with an error instead of aborting the server.
Testing
All 25 VolumeProxy tests passed. They cover both connection expiry orders,
pipe shutdown after the last connection expires, request cancellation for
connections sharing a Tablet, re-describe with a changed real DiskId, and
pipe events while another connection is resolving.
./ya make -tA \ cloud/blockstore/libs/storage/volume_proxy/ut \ -F '*TVolumeProxyTest*'