@@ -24,7 +24,7 @@ const THashSet<ui32>& TProgramContainer::GetEarlyFilterColumns() const {
24
24
return Program->GetFilterColumns ();
25
25
}
26
26
27
- TConclusionStatus TProgramContainer::Init (const NArrow::NSSA::IColumnResolver& columnResolver, const NKikimrSSA::TProgram& programProto) {
27
+ TConclusionStatus TProgramContainer::Init (const NArrow::NSSA::IColumnResolver& columnResolver, const NKikimrSSA::TProgram& programProto) noexcept {
28
28
ProgramProto = programProto;
29
29
if (IS_DEBUG_LOG_ENABLED (NKikimrServices::TX_COLUMNSHARD)) {
30
30
TString out;
@@ -33,20 +33,26 @@ TConclusionStatus TProgramContainer::Init(const NArrow::NSSA::IColumnResolver& c
33
33
}
34
34
35
35
if (programProto.HasKernels ()) {
36
- KernelsRegistry.Parse (programProto.GetKernels ());
36
+ try {
37
+ if (!KernelsRegistry.Parse (programProto.GetKernels ())) {
38
+ return TConclusionStatus::Fail (" Can't parse kernels" );
39
+ }
40
+ } catch (...) {
41
+ AFL_ERROR (NKikimrServices::TX_COLUMNSHARD)(" event" , " program_parsed_error" )(" result" , CurrentExceptionMessage ());
42
+ return TConclusionStatus::Fail (TStringBuilder () << " Can't initialize program, exception thrown: " << CurrentExceptionMessage ());
43
+ }
37
44
}
38
45
39
46
auto parseStatus = ParseProgram (columnResolver, programProto);
40
47
if (parseStatus.IsFail ()) {
41
48
return parseStatus;
42
49
}
43
50
AFL_DEBUG (NKikimrServices::TX_COLUMNSHARD)(" event" , " program_parsed" )(" result" , DebugString ());
44
-
45
51
return TConclusionStatus::Success ();
46
52
}
47
53
48
54
TConclusionStatus TProgramContainer::Init (
49
- const NArrow::NSSA::IColumnResolver& columnResolver, const NKikimrSSA::TOlapProgram& olapProgramProto) {
55
+ const NArrow::NSSA::IColumnResolver& columnResolver, const NKikimrSSA::TOlapProgram& olapProgramProto) noexcept {
50
56
NKikimrSSA::TProgram programProto;
51
57
if (!programProto.ParseFromString (olapProgramProto.GetProgram ())) {
52
58
return TConclusionStatus::Fail (" Can't parse TProgram protobuf" );
@@ -76,7 +82,7 @@ TConclusionStatus TProgramContainer::Init(
76
82
}
77
83
78
84
TConclusionStatus TProgramContainer::Init (
79
- const NArrow::NSSA::IColumnResolver& columnResolver, NKikimrSchemeOp::EOlapProgramType programType, TString serializedProgram) {
85
+ const NArrow::NSSA::IColumnResolver& columnResolver, NKikimrSchemeOp::EOlapProgramType programType, TString serializedProgram) noexcept {
80
86
Y_ABORT_UNLESS (serializedProgram);
81
87
Y_ABORT_UNLESS (!OverrideProcessingColumnsVector);
82
88
0 commit comments