Skip to content

Commit 9b1bec2

Browse files
committed
Fixed possible crash on creating the transfer (#28895)
1 parent ad6aeae commit 9b1bec2

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
@@ -1479,7 +1479,6 @@ Y_UNIT_TEST_SUITE(Transfer)
14791479
)");
14801480
testCase.CreateTopic(1);
14811481

1482-
testCase.CreateDirectory("/local/subdir");
14831482
testCase.CreateTransfer(TStringBuilder() << "subdir/" << testCase.TransferName, Sprintf(R"(
14841483
$l = ($x) -> {
14851484
return [

ydb/core/tx/schemeshard/schemeshard__op_traits.h

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

183+
template <>
184+
struct TSchemeTxTraits<NKikimrSchemeOp::EOperationType::ESchemeOpCreateTransfer>
185+
: public TSchemeTxTraitsFallback
186+
{
187+
constexpr inline static bool CreateDirsFromName = true;
188+
};
189+
183190
namespace NOperation {
184191

185192
template <class TTraits>

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)