Skip to content

Commit d9e4188

Browse files
authored
Merge ccb11f8 into 432eaac
2 parents 432eaac + ccb11f8 commit d9e4188

File tree

6 files changed

+59
-20
lines changed

6 files changed

+59
-20
lines changed

ydb/core/fq/libs/checkpoint_storage/ydb_checkpoint_storage.cpp

+9-10
Original file line numberDiff line numberDiff line change
@@ -803,13 +803,11 @@ TFuture<ICheckpointStorage::TCreateCheckpointResult> TCheckpointStorage::CreateC
803803
return CreateCheckpointWrapper(future, checkpointContext);
804804
});
805805

806-
return future.Apply(
807-
[checkpointContext](const TFuture<NYdb::TStatus>& future) {
808-
if (NYql::TIssues issues = StatusToIssues(future.GetValue())) {
809-
return TCreateCheckpointResult(TString(), std::move(issues));
810-
} else {
811-
return TCreateCheckpointResult(checkpointContext->CheckpointGraphDescriptionContext->GraphDescId, NYql::TIssues());
812-
}
806+
return StatusToIssues(future).Apply(
807+
[checkpointContext] (const TFuture<TIssues>& future) {
808+
NYql::TIssues issues = future.GetValue();
809+
TString descId = !issues ? checkpointContext->CheckpointGraphDescriptionContext->GraphDescId : TString();
810+
return TCreateCheckpointResult(descId, std::move(issues));
813811
});
814812
}
815813

@@ -1097,9 +1095,10 @@ TFuture<ICheckpointStorage::TGetTotalCheckpointsStateSizeResult> TCheckpointStor
10971095
return status;
10981096
});
10991097
});
1100-
return future.Apply(
1101-
[result](const TFuture<TStatus>& status) {
1102-
return std::make_pair(std::move(result->Size), std::move(status.GetValue().GetIssues()));
1098+
1099+
return StatusToIssues(future).Apply(
1100+
[result] (const TFuture<TIssues>& future) {
1101+
return std::make_pair(std::move(result->Size), std::move(future.GetValue()));
11031102
});
11041103
}
11051104

ydb/core/fq/libs/checkpoint_storage/ydb_state_storage.cpp

+4-9
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ TFuture<IStateStorage::TGetStateResult> TStateStorage::GetState(
286286
return MakeFuture<IStateStorage::TGetStateResult>(result);
287287
}
288288

289+
289290
auto context = MakeIntrusive<TContext>(
290291
YdbConnection->TablePathPrefix,
291292
taskIds,
@@ -362,15 +363,9 @@ TFuture<IStateStorage::TCountStatesResult> TStateStorage::CountStates(
362363
});
363364
});
364365

365-
return future.Apply(
366-
[context] (const TFuture<TStatus>& future) {
367-
TCountStatesResult countResult;
368-
countResult.first = context->Count;
369-
const auto& status = future.GetValue();
370-
if (!status.IsSuccess()) {
371-
countResult.second = status.GetIssues();
372-
}
373-
return countResult;
366+
return StatusToIssues(future).Apply(
367+
[context] (const TFuture<TIssues>& future) {
368+
return TCountStatesResult{context->Count, std::move(future.GetValue())};
374369
});
375370
}
376371
TExecDataQuerySettings TStateStorage::DefaultExecDataQuerySettings() {

ydb/core/fq/libs/ydb/ut/ya.make

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
UNITTEST_FOR(ydb/core/fq/libs/ydb)
2+
3+
SRCS(
4+
ydb_ut.cpp
5+
)
6+
7+
PEERDIR(
8+
ydb/core/fq/libs/ydb
9+
)
10+
11+
END()
12+

ydb/core/fq/libs/ydb/ut/ydb_ut.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#include <ydb/core/fq/libs/ydb/ydb.h>
2+
3+
#include <library/cpp/testing/unittest/registar.h>
4+
5+
namespace NFq {
6+
7+
Y_UNIT_TEST_SUITE(TFqYdbTest) {
8+
9+
Y_UNIT_TEST(ShouldStatusToIssuesProcessExceptions)
10+
{
11+
auto promise = NThreading::NewPromise<NYdb::TStatus>();
12+
auto future = promise.GetFuture();
13+
TString text("Test exception");
14+
promise.SetException(text);
15+
NThreading::TFuture<NYql::TIssues> future2 = NFq::StatusToIssues(future);
16+
17+
NYql::TIssues issues = future2.GetValueSync();
18+
UNIT_ASSERT(issues.Size() == 1);
19+
UNIT_ASSERT(issues.ToString().Contains(text));
20+
}
21+
};
22+
23+
} // namespace NFq

ydb/core/fq/libs/ydb/ya.make

+4
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,7 @@ GENERATE_ENUM_SERIALIZATION(ydb.h)
2424
YQL_LAST_ABI_VERSION()
2525

2626
END()
27+
28+
RECURSE_FOR_TESTS(
29+
ut
30+
)

ydb/core/fq/libs/ydb/ydb.cpp

+7-1
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,13 @@ NYql::TIssues StatusToIssues(const NYdb::TStatus& status) {
210210
TFuture<TIssues> StatusToIssues(const TFuture<TStatus>& future) {
211211
return future.Apply(
212212
[] (const TFuture<TStatus>& future) {
213-
return StatusToIssues(future.GetValue());
213+
try {
214+
return StatusToIssues(future.GetValue());
215+
} catch (...) {
216+
TIssues issues;
217+
issues.AddIssue("StatusToIssues failed with exception: " + CurrentExceptionMessage());
218+
return issues;
219+
}
214220
});
215221
}
216222

0 commit comments

Comments
 (0)