Skip to content

Commit 942c0ac

Browse files
authored
Fixed possible crash on creating the transfer (#28895) (#28914)
2 parents e9fa551 + 23e9f0c commit 942c0ac

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

ydb/core/transfer/ut/functional/transfer_ut.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1519,7 +1519,6 @@ Y_UNIT_TEST_SUITE(Transfer)
15191519
)");
15201520
testCase.CreateTopic(1);
15211521

1522-
testCase.CreateDirectory("/local/subdir");
15231522
testCase.CreateTransfer(TStringBuilder() << "subdir/" << testCase.TransferName, Sprintf(R"(
15241523
$l = ($x) -> {
15251524
return [

ydb/core/tx/schemeshard/schemeshard__op_traits.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,13 @@ struct TSchemeTxTraits<NKikimrSchemeOp::EOperationType::ESchemeOpCreateReplicati
187187
constexpr inline static bool CreateDirsFromName = true;
188188
};
189189

190+
template <>
191+
struct TSchemeTxTraits<NKikimrSchemeOp::EOperationType::ESchemeOpCreateTransfer>
192+
: public TSchemeTxTraitsFallback
193+
{
194+
constexpr inline static bool CreateDirsFromName = true;
195+
};
196+
190197
template <>
191198
struct TSchemeTxTraits<NKikimrSchemeOp::EOperationType::ESchemeOpCreateSecret>
192199
: public TSchemeTxTraitsFallback

ydb/core/tx/schemeshard/schemeshard__operation_create_replication.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -543,17 +543,29 @@ class TCreateReplication: public TSubOperation {
543543

544544
} // anonymous
545545

546-
using TTag = TSchemeTxTraits<NKikimrSchemeOp::EOperationType::ESchemeOpCreateReplication>;
546+
using TReplicationTag = TSchemeTxTraits<NKikimrSchemeOp::EOperationType::ESchemeOpCreateReplication>;
547+
using TTransferTag = TSchemeTxTraits<NKikimrSchemeOp::EOperationType::ESchemeOpCreateTransfer>;
547548

548549
namespace NOperation {
549550

550551
template <>
551-
std::optional<TString> GetTargetName<TTag>(TTag, const TTxTransaction& tx) {
552+
std::optional<TString> GetTargetName<TReplicationTag>(TReplicationTag, const TTxTransaction& tx) {
552553
return tx.GetReplication().GetName();
553554
}
554555

555556
template <>
556-
bool SetName<TTag>(TTag, TTxTransaction& tx, const TString& name) {
557+
bool SetName<TReplicationTag>(TReplicationTag, TTxTransaction& tx, const TString& name) {
558+
tx.MutableReplication()->SetName(name);
559+
return true;
560+
}
561+
562+
template <>
563+
std::optional<TString> GetTargetName<TTransferTag>(TTransferTag, const TTxTransaction& tx) {
564+
return tx.GetReplication().GetName();
565+
}
566+
567+
template <>
568+
bool SetName<TTransferTag>(TTransferTag, TTxTransaction& tx, const TString& name) {
557569
tx.MutableReplication()->SetName(name);
558570
return true;
559571
}

0 commit comments

Comments
 (0)