File tree 6 files changed +59
-20
lines changed
6 files changed +59
-20
lines changed Original file line number Diff line number Diff line change @@ -803,13 +803,11 @@ TFuture<ICheckpointStorage::TCreateCheckpointResult> TCheckpointStorage::CreateC
803
803
return CreateCheckpointWrapper (future, checkpointContext);
804
804
});
805
805
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));
813
811
});
814
812
}
815
813
@@ -1097,9 +1095,10 @@ TFuture<ICheckpointStorage::TGetTotalCheckpointsStateSizeResult> TCheckpointStor
1097
1095
return status;
1098
1096
});
1099
1097
});
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 ()));
1103
1102
});
1104
1103
}
1105
1104
Original file line number Diff line number Diff line change @@ -286,6 +286,7 @@ TFuture<IStateStorage::TGetStateResult> TStateStorage::GetState(
286
286
return MakeFuture<IStateStorage::TGetStateResult>(result);
287
287
}
288
288
289
+
289
290
auto context = MakeIntrusive<TContext>(
290
291
YdbConnection->TablePathPrefix ,
291
292
taskIds,
@@ -362,15 +363,9 @@ TFuture<IStateStorage::TCountStatesResult> TStateStorage::CountStates(
362
363
});
363
364
});
364
365
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 ())};
374
369
});
375
370
}
376
371
TExecDataQuerySettings TStateStorage::DefaultExecDataQuerySettings () {
Original file line number Diff line number Diff line change
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
+
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change @@ -24,3 +24,7 @@ GENERATE_ENUM_SERIALIZATION(ydb.h)
24
24
YQL_LAST_ABI_VERSION()
25
25
26
26
END()
27
+
28
+ RECURSE_FOR_TESTS(
29
+ ut
30
+ )
Original file line number Diff line number Diff line change @@ -210,7 +210,13 @@ NYql::TIssues StatusToIssues(const NYdb::TStatus& status) {
210
210
TFuture<TIssues> StatusToIssues (const TFuture<TStatus>& future) {
211
211
return future.Apply (
212
212
[] (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
+ }
214
220
});
215
221
}
216
222
You can’t perform that action at this time.
0 commit comments