diff options
| author | Alexey Efimov <[email protected]> | 2024-08-07 16:06:47 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-08-07 09:06:47 +0000 |
| commit | 91c61a7b7fd894eaaa0877d9bcfe30e5e4dd2fe9 (patch) | |
| tree | 38d199e13e73965ca8a2766f95275749ee6c03e4 | |
| parent | 47a1e069d781dd95bcff3be54fe382b7d06b8bf7 (diff) | |
correctly check WB requests requirement, improve swagger description (#7521)
| -rw-r--r-- | ydb/core/viewer/storage_groups.h | 50 |
1 files changed, 44 insertions, 6 deletions
diff --git a/ydb/core/viewer/storage_groups.h b/ydb/core/viewer/storage_groups.h index 7284cc01666..55734db86da 100644 --- a/ydb/core/viewer/storage_groups.h +++ b/ydb/core/viewer/storage_groups.h @@ -130,7 +130,6 @@ public: // BSC bool FallbackToWhiteboard = false; - bool FillDisksFromWhiteboard = false; std::optional<TRequestResponse<NSysView::TEvSysView::TEvGetGroupsResponse>> GetGroupsResponse; std::optional<TRequestResponse<NSysView::TEvSysView::TEvGetStoragePoolsResponse>> GetStoragePoolsResponse; std::optional<TRequestResponse<NSysView::TEvSysView::TEvGetVSlotsResponse>> GetVSlotsResponse; @@ -657,7 +656,6 @@ public: FieldsRequired |= FieldsBsVSlots; FieldsRequired |= FieldsBsPDisks; } - FillDisksFromWhiteboard = FromStringWithDefault<bool>(params.Get("fill_disks_from_whiteboard"), FillDisksFromWhiteboard); TString fieldsRequired = params.Get("fields_required"); if (!fieldsRequired.empty()) { if (fieldsRequired == "all") { @@ -1169,6 +1167,13 @@ public: NKikimrBlobStorage::EVDiskStatus_Parse(info.GetStatusV2(), &vDisk.VDiskStatus); } + bool AreBSControllerRequestsDone() const { + return (!GetGroupsResponse || GetGroupsResponse->IsDone()) && + (!GetStoragePoolsResponse || GetStoragePoolsResponse->IsDone()) && + (!GetVSlotsResponse || GetVSlotsResponse->IsDone()) && + (!GetPDisksResponse || GetPDisksResponse->IsDone()); + } + void ProcessBSControllerResponses() { int requestsDone = 0; if (GetGroupsResponse && GetGroupsResponse->IsOk() && FieldsNeeded(FieldsBsGroups)) { @@ -1306,7 +1311,7 @@ public: } } } - if (NoMoreRequests(requestsDone) && FieldsNeeded(FieldsWbDisks)) { + if (AreBSControllerRequestsDone() && FieldsNeeded(FieldsWbDisks)) { for (TGroup& group : Groups) { for (TNodeId nodeId : group.VDiskNodeIds) { SendWhiteboardDisksRequest(nodeId); @@ -1748,9 +1753,11 @@ public: void HandleTimeout(TEvents::TEvWakeup::TPtr& ev) { switch (ev->Get()->Tag) { case TimeoutBSC: - OnBscError("timeout"); - Problems.emplace_back("bsc-timeout"); - RequestDone(FailPipeConnect(GetBSControllerId())); + if (!AreBSControllerRequestsDone()) { + OnBscError("timeout"); + Problems.emplace_back("bsc-timeout"); + RequestDone(FailPipeConnect(GetBSControllerId())); + } break; case TimeoutFinal: // bread crumbs @@ -1762,6 +1769,12 @@ public: Problems.emplace_back("wb-incomplete-disks"); ProcessWhiteboardDisks(); } + if (HiveStorageStatsInFlight > 0) { + Problems.emplace_back("hive-incomplete"); + } + if (!AreBSControllerRequestsDone()) { + Problems.emplace_back("bsc-incomplete"); + } ReplyAndPassAway(); break; } @@ -2019,6 +2032,31 @@ public: * `State` required: false type: string + - name: fields_required + in: query + description: > + list of fields required in response (the more - the heavier could be request): + * `GroupId` (always required) + * `PoolName` + * `Kind` + * `MediaType` + * `Erasure` + * `MissingDisks` + * `State` + * `Usage` + * `Used` + * `Limit` + * `Usage` + * `Available` + * `DiskSpaceUsage` + * `Encryption` + * `AllocationUnits` + * `Read` + * `Write` + * `PDisk` + * `VDisk` + required: false + type: string - name: offset in: query description: skip N nodes |
