Skip to content

Commit 21d6fd5

Browse files
authored
Merge f7bd921 into 805fb4b
2 parents 805fb4b + f7bd921 commit 21d6fd5

File tree

4 files changed

+50
-24
lines changed

4 files changed

+50
-24
lines changed

ydb/core/change_exchange/change_sender_common_ops.h

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,12 @@ class ISenderFactory {
7070
virtual IActor* CreateSender(ui64 partitionId) const = 0;
7171
};
7272

73+
class IChangeSenderIdentity {
74+
public:
75+
virtual ~IChangeSenderIdentity() = default;
76+
virtual TPathId GetChangeSenderIdentity() const = 0;
77+
};
78+
7379
template <typename TChangeRecord>
7480
class TBaseChangeSender {
7581
using TIncompleteRecord = TEvChangeExchange::TEvRequestRecords::TRecordInfo;
@@ -470,8 +476,8 @@ class TBaseChangeSender {
470476

471477
void EnqueueRecords(TVector<TEvChangeExchange::TEvEnqueueRecords::TRecordInfo>&& records) {
472478
for (auto& record : records) {
473-
Y_VERIFY_S(PathId == record.PathId, "Unexpected record's path id"
474-
<< ": expected# " << PathId
479+
Y_VERIFY_S(Identity->GetChangeSenderIdentity() == record.PathId, "Unexpected record's path id"
480+
<< ": expected# " << Identity->GetChangeSenderIdentity()
475481
<< ", got# " << record.PathId);
476482
Enqueued.emplace(record.Order, record.BodySize);
477483
}
@@ -561,15 +567,15 @@ class TBaseChangeSender {
561567

562568
explicit TBaseChangeSender(
563569
IActorOps* const actorOps,
570+
IChangeSenderIdentity* const identity,
564571
IChangeSenderResolver* const resolver,
565572
ISenderFactory* const senderFactory,
566-
const TActorId changeServer,
567-
const TPathId& pathId)
573+
const TActorId changeServer)
568574
: ActorOps(actorOps)
575+
, Identity(identity)
569576
, Resolver(resolver)
570577
, SenderFactory(senderFactory)
571578
, ChangeServer(changeServer)
572-
, PathId(pathId)
573579
, MemLimit(192_KB)
574580
, MemUsage(0)
575581
{}
@@ -585,7 +591,7 @@ class TBaseChangeSender {
585591
ctx.Send(ev->Forward(to));
586592
} else {
587593
ActorOps->Send(ev->Sender, new NMon::TEvRemoteHttpInfoRes(TStringBuilder()
588-
<< "Change sender '" << PathId << ":" << partitionId << "' is not running"));
594+
<< "Change sender '" << Identity->GetChangeSenderIdentity() << ":" << partitionId << "' is not running"));
589595
}
590596
} else {
591597
ActorOps->Send(ev->Sender, new NMon::TEvRemoteBinaryInfoRes(NMonitoring::HTTPNOTFOUND));
@@ -635,7 +641,7 @@ class TBaseChangeSender {
635641
TABLED() { html << sender.Pending.size(); }
636642
TABLED() { html << sender.Prepared.size(); }
637643
TABLED() { html << sender.Broadcasting.size(); }
638-
TABLED() { ActorLink(html, tabletId, PathId, partitionId); }
644+
TABLED() { ActorLink(html, tabletId, Identity->GetChangeSenderIdentity(), partitionId); }
639645
}
640646
}
641647
}
@@ -763,13 +769,13 @@ class TBaseChangeSender {
763769

764770
private:
765771
IActorOps* const ActorOps;
772+
IChangeSenderIdentity* const Identity;
766773
IChangeSenderResolver* const Resolver;
767774
ISenderFactory* const SenderFactory;
768775
THolder<IChangeSenderPartitioner<TChangeRecord>> Partitioner;
769776

770777
protected:
771778
TActorId ChangeServer;
772-
const TPathId PathId;
773779

774780
private:
775781
const ui64 MemLimit;

ydb/core/tx/datashard/change_sender_async_index.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ class TAsyncIndexChangeSenderShard: public TActorBootstrapped<TAsyncIndexChangeS
330330

331331
class TAsyncIndexChangeSenderMain
332332
: public TActorBootstrapped<TAsyncIndexChangeSenderMain>
333+
, public NChangeExchange::IChangeSenderIdentity
333334
, public NChangeExchange::TBaseChangeSender<TChangeRecord>
334335
, public NChangeExchange::IChangeSenderResolver
335336
, public NChangeExchange::ISenderFactory
@@ -502,7 +503,7 @@ class TAsyncIndexChangeSenderMain
502503

503504
void ResolveIndex() {
504505
auto request = MakeHolder<TNavigate>();
505-
request->ResultSet.emplace_back(MakeNavigateEntry(PathId, TNavigate::OpList));
506+
request->ResultSet.emplace_back(MakeNavigateEntry(IndexPathId, TNavigate::OpList));
506507

507508
Send(MakeSchemeCacheID(), new TEvNavigate(request.Release()));
508509
Become(&TThis::StateResolveIndex);
@@ -533,7 +534,7 @@ class TAsyncIndexChangeSenderMain
533534

534535
const auto& entry = result->ResultSet.at(0);
535536

536-
if (!CheckTableId(entry, PathId)) {
537+
if (!CheckTableId(entry, IndexPathId)) {
537538
return;
538539
}
539540

@@ -746,7 +747,7 @@ class TAsyncIndexChangeSenderMain
746747

747748
void Handle(TEvChangeExchange::TEvRemoveSender::TPtr& ev) {
748749
LOG_D("Handle " << ev->Get()->ToString());
749-
Y_ABORT_UNLESS(ev->Get()->PathId == PathId);
750+
Y_ABORT_UNLESS(ev->Get()->PathId == GetChangeSenderIdentity());
750751

751752
RemoveRecords();
752753
PassAway();
@@ -773,7 +774,8 @@ class TAsyncIndexChangeSenderMain
773774

774775
explicit TAsyncIndexChangeSenderMain(const TDataShardId& dataShard, const TTableId& userTableId, const TPathId& indexPathId)
775776
: TActorBootstrapped()
776-
, TBaseChangeSender(this, this, this, dataShard.ActorId, indexPathId)
777+
, TBaseChangeSender(this, this, this, this, dataShard.ActorId)
778+
, IndexPathId(indexPathId)
777779
, DataShard(dataShard)
778780
, UserTableId(userTableId)
779781
, IndexTableVersion(0)
@@ -806,7 +808,12 @@ class TAsyncIndexChangeSenderMain
806808
}
807809
}
808810

811+
TPathId GetChangeSenderIdentity() const override final {
812+
return IndexPathId;
813+
}
814+
809815
private:
816+
const TPathId IndexPathId;
810817
const TDataShardId DataShard;
811818
const TTableId UserTableId;
812819
mutable TMaybe<TString> LogPrefix;
@@ -817,7 +824,6 @@ class TAsyncIndexChangeSenderMain
817824
TPathId IndexTablePathId;
818825
ui64 IndexTableVersion;
819826
THolder<TKeyDesc> KeyDesc;
820-
821827
}; // TAsyncIndexChangeSenderMain
822828

823829
IActor* CreateAsyncIndexChangeSender(const TDataShardId& dataShard, const TTableId& userTableId, const TPathId& indexPathId) {

ydb/core/tx/datashard/change_sender_cdc_stream.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ class TBoundaryPartitioner final : public NChangeExchange::IChangeSenderPartitio
325325

326326
class TCdcChangeSenderMain
327327
: public TActorBootstrapped<TCdcChangeSenderMain>
328+
, public NChangeExchange::IChangeSenderIdentity
328329
, public NChangeExchange::TBaseChangeSender<TChangeRecord>
329330
, public NChangeExchange::IChangeSenderResolver
330331
, public NChangeExchange::ISenderFactory
@@ -474,7 +475,7 @@ class TCdcChangeSenderMain
474475

475476
void ResolveCdcStream() {
476477
auto request = MakeHolder<TNavigate>();
477-
request->ResultSet.emplace_back(MakeNavigateEntry(PathId, TNavigate::OpList));
478+
request->ResultSet.emplace_back(MakeNavigateEntry(StreamPathId, TNavigate::OpList));
478479

479480
Send(MakeSchemeCacheID(), new TEvNavigate(request.Release()));
480481
Become(&TThis::StateResolveCdcStream);
@@ -505,7 +506,7 @@ class TCdcChangeSenderMain
505506

506507
const auto& entry = result->ResultSet.at(0);
507508

508-
if (!CheckTableId(entry, PathId)) {
509+
if (!CheckTableId(entry, StreamPathId)) {
509510
return;
510511
}
511512

@@ -718,7 +719,7 @@ class TCdcChangeSenderMain
718719

719720
void Handle(TEvChangeExchange::TEvRemoveSender::TPtr& ev) {
720721
LOG_D("Handle " << ev->Get()->ToString());
721-
Y_ABORT_UNLESS(ev->Get()->PathId == PathId);
722+
Y_ABORT_UNLESS(ev->Get()->PathId == GetChangeSenderIdentity());
722723

723724
RemoveRecords();
724725
PassAway();
@@ -745,7 +746,8 @@ class TCdcChangeSenderMain
745746

746747
explicit TCdcChangeSenderMain(const TDataShardId& dataShard, const TPathId& streamPathId)
747748
: TActorBootstrapped()
748-
, TBaseChangeSender(this, this, this, dataShard.ActorId, streamPathId)
749+
, TBaseChangeSender(this, this, this, this, dataShard.ActorId)
750+
, StreamPathId(streamPathId)
749751
, DataShard(dataShard)
750752
, TopicVersion(0)
751753
{
@@ -777,7 +779,12 @@ class TCdcChangeSenderMain
777779
}
778780
}
779781

782+
TPathId GetChangeSenderIdentity() const override final {
783+
return StreamPathId;
784+
}
785+
780786
private:
787+
const TPathId StreamPathId;
781788
const TDataShardId DataShard;
782789
mutable TMaybe<TString> LogPrefix;
783790

ydb/core/tx/replication/service/table_writer_impl.h

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ class TTablePartitionWriter: public TActorBootstrapped<TTablePartitionWriter<TCh
214214
template <typename TChangeRecord>
215215
class TLocalTableWriter
216216
: public TActor<TLocalTableWriter<TChangeRecord>>
217+
, public NChangeExchange::IChangeSenderIdentity
217218
, public NChangeExchange::TBaseChangeSender<TChangeRecord>
218219
, public NChangeExchange::IChangeSenderResolver
219220
, public NChangeExchange::ISenderFactory
@@ -227,7 +228,7 @@ class TLocalTableWriter
227228
if (!LogPrefix) {
228229
LogPrefix = TStringBuilder()
229230
<< "[LocalTableWriter]"
230-
<< this->PathId
231+
<< TablePathId
231232
<< TBase::SelfId() << " ";
232233
}
233234

@@ -318,7 +319,7 @@ class TLocalTableWriter
318319
Resolving = true;
319320

320321
auto request = MakeHolder<TNavigate>();
321-
request->ResultSet.emplace_back(MakeNavigateEntry(this->PathId, TNavigate::OpTable));
322+
request->ResultSet.emplace_back(MakeNavigateEntry(TablePathId, TNavigate::OpTable));
322323
this->Send(MakeSchemeCacheID(), new TEvNavigate(request.Release()));
323324
}
324325

@@ -338,7 +339,7 @@ class TLocalTableWriter
338339

339340
const auto& entry = result->ResultSet.at(0);
340341

341-
if (!CheckTableId(entry, this->PathId)) {
342+
if (!CheckTableId(entry, TablePathId)) {
342343
return;
343344
}
344345

@@ -407,7 +408,7 @@ class TLocalTableWriter
407408

408409
auto& entry = result->ResultSet.at(0);
409410

410-
if (!CheckTableId(entry, this->PathId)) {
411+
if (!CheckTableId(entry, TablePathId)) {
411412
return;
412413
}
413414

@@ -437,7 +438,7 @@ class TLocalTableWriter
437438
return new TTablePartitionWriter<TChangeRecord>(
438439
this->SelfId(),
439440
partitionId,
440-
TTableId(this->PathId, Schema->Version),
441+
TTableId(TablePathId, Schema->Version),
441442
BuilderContext);
442443
}
443444

@@ -448,7 +449,7 @@ class TLocalTableWriter
448449
TVector<NChangeExchange::TEvChangeExchange::TEvEnqueueRecords::TRecordInfo> records(::Reserve(ev->Get()->Records.size()));
449450

450451
for (auto& record : ev->Get()->Records) {
451-
records.emplace_back(record.Offset, this->PathId, record.Data.size());
452+
records.emplace_back(record.Offset, TablePathId, record.Data.size());
452453
auto res = PendingRecords.emplace(record.Offset, TChangeRecordBuilderTrait<TChangeRecord>()
453454
.WithSourceId(ev->Get()->Source)
454455
.WithOrder(record.Offset)
@@ -528,11 +529,16 @@ class TLocalTableWriter
528529
template <class... TArgs>
529530
explicit TLocalTableWriter(const TPathId& tablePathId, TArgs&&... args)
530531
: TBase(&TThis::StateWork)
531-
, TBaseSender(this, this, this, TActorId(), tablePathId)
532+
, TBaseSender(this, this, this, this, TActorId())
533+
, TablePathId(tablePathId)
532534
, BuilderContext(std::forward<TArgs>(args)...)
533535
{
534536
}
535537

538+
TPathId GetChangeSenderIdentity() const override final {
539+
return TablePathId;
540+
}
541+
536542
STFUNC(StateWork) {
537543
switch (ev->GetTypeRewrite()) {
538544
hFunc(TEvWorker::TEvHandshake, Handle);
@@ -550,6 +556,7 @@ class TLocalTableWriter
550556

551557
private:
552558
mutable TMaybe<TString> LogPrefix;
559+
const TPathId TablePathId;
553560
TChangeRecordBuilderContextTrait<TChangeRecord> BuilderContext;
554561

555562
TActorId Worker;

0 commit comments

Comments
 (0)