aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralexvru <alexvru@ydb.tech>2023-02-03 14:26:54 +0300
committeralexvru <alexvru@ydb.tech>2023-02-03 14:26:54 +0300
commit19d375b572297a224fabbfc454176d875353c8dc (patch)
tree65cf122feb8b9e6d5d261619950998f04d9ce247
parente065e7c5cb370a04d6ac774d107d76b115f6115a (diff)
downloadydb-19d375b572297a224fabbfc454176d875353c8dc.tar.gz
Some fixes for BlobDepot
-rw-r--r--ydb/core/blob_depot/agent/query.cpp6
-rw-r--r--ydb/core/blob_depot/agent/resolved_value.cpp5
-rw-r--r--ydb/core/blob_depot/data_resolve.cpp11
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);