diff options
author | alexvru <alexvru@ydb.tech> | 2023-02-03 14:26:54 +0300 |
---|---|---|
committer | alexvru <alexvru@ydb.tech> | 2023-02-03 14:26:54 +0300 |
commit | 19d375b572297a224fabbfc454176d875353c8dc (patch) | |
tree | 65cf122feb8b9e6d5d261619950998f04d9ce247 | |
parent | e065e7c5cb370a04d6ac774d107d76b115f6115a (diff) | |
download | ydb-19d375b572297a224fabbfc454176d875353c8dc.tar.gz |
Some fixes for BlobDepot
-rw-r--r-- | ydb/core/blob_depot/agent/query.cpp | 6 | ||||
-rw-r--r-- | ydb/core/blob_depot/agent/resolved_value.cpp | 5 | ||||
-rw-r--r-- | ydb/core/blob_depot/data_resolve.cpp | 11 |
3 files changed, 16 insertions, 6 deletions
diff --git a/ydb/core/blob_depot/agent/query.cpp b/ydb/core/blob_depot/agent/query.cpp index 947ea8b027c..0ab4456ca00 100644 --- a/ydb/core/blob_depot/agent/query.cpp +++ b/ydb/core/blob_depot/agent/query.cpp @@ -28,7 +28,11 @@ namespace NKikimr::NBlobDepot { } if (doForward) { - TActivationContext::Send(ev->Forward(ProxyId)); + if (ProxyId) { + TActivationContext::Send(ev->Forward(ProxyId)); + } else { + CreateQuery<0>(std::unique_ptr<IEventHandle>(ev.Release()))->EndWithError(NKikimrProto::ERROR, "proxy has vanished"); + } return; } diff --git a/ydb/core/blob_depot/agent/resolved_value.cpp b/ydb/core/blob_depot/agent/resolved_value.cpp index a4564c5d75e..901e56345b6 100644 --- a/ydb/core/blob_depot/agent/resolved_value.cpp +++ b/ydb/core/blob_depot/agent/resolved_value.cpp @@ -35,8 +35,9 @@ namespace NKikimr::NBlobDepot { } else if (Version < old.Version) { return false; } else if (Version == old.Version) { - Y_VERIFY(Chain == old.Chain && ReliablyWritten == old.ReliablyWritten); - return false; + Y_VERIFY(Chain == old.Chain); + Y_VERIFY(old.ReliablyWritten <= ReliablyWritten); // value may not become 'unreliably written' + return old.ReliablyWritten < ReliablyWritten; } else { Y_VERIFY(old.ReliablyWritten <= ReliablyWritten); // item can't suddenly become unreliably written return true; diff --git a/ydb/core/blob_depot/data_resolve.cpp b/ydb/core/blob_depot/data_resolve.cpp index 68856636ed1..233924a275d 100644 --- a/ydb/core/blob_depot/data_resolve.cpp +++ b/ydb/core/blob_depot/data_resolve.cpp @@ -237,9 +237,14 @@ namespace NKikimr::NBlobDepot { if (!ResolutionErrors.empty() && ResolutionErrors.contains(key.GetBlobId())) { item.SetErrorReason("item resolution error"); item.ClearValueChain(); - } else if (!item.ValueChainSize()) { - STLOG(PRI_WARN, BLOB_DEPOT, BDT48, "empty ValueChain on Resolve", (Id, Self->GetLogId()), - (Key, key), (Value, value), (Item, item), (Sender, Request->Sender), (Cookie, Request->Cookie)); + } else { + if (!item.ValueChainSize()) { + STLOG(PRI_WARN, BLOB_DEPOT, BDT48, "empty ValueChain on Resolve", (Id, Self->GetLogId()), + (Key, key), (Value, value), (Item, item), (Sender, Request->Sender), (Cookie, Request->Cookie)); + } + if (item.GetValueVersion() != value.ValueVersion) { + item.SetValueVersion(value.ValueVersion); + } } Result.AddItem(std::move(item), Self->Config); |