Skip to content

Commit feb5f11

Browse files
authored
Merge 1cd2433 into 7606d98
2 parents 7606d98 + 1cd2433 commit feb5f11

32 files changed

+347
-6
lines changed

ydb/core/backup/tablet.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#include "tablet.h"
2+
#include "tablet_impl.h"
3+
#include "tx_init_schema.h"
4+
#include "tx_init.h"
5+
6+
namespace NKikimr::NBackup {
7+
8+
IActor* CreateBackupControllerTablet(const TActorId& tablet, TTabletStorageInfo* info) {
9+
return new TBackupControllerTablet(tablet, info);
10+
}
11+
12+
} // namespace NKikimr::NBackup

ydb/core/backup/tablet.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#pragma once
2+
3+
#include <ydb/library/actors/core/actor.h>
4+
#include <ydb/core/base/blobstorage.h>
5+
6+
namespace NKikimr::NBackup {
7+
8+
using namespace NActors;
9+
10+
IActor* CreateBackupControllerTablet(const TActorId& tablet, TTabletStorageInfo* info);
11+
12+
} // namespace NKikimr::NBackup

ydb/core/backup/tablet_impl.h

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
#pragma once
2+
3+
#include <ydb/core/base/blobstorage.h>
4+
#include <ydb/core/base/defs.h>
5+
#include <ydb/core/protos/counters_backup.pb.h>
6+
#include <ydb/core/tablet_flat/tablet_flat_executed.h>
7+
#include <ydb/core/tx/replication/service/service.h>
8+
#include <ydb/library/actors/core/interconnect.h>
9+
#include <ydb/library/yverify_stream/yverify_stream.h>
10+
#include <ydb/core/engine/minikql/flat_local_tx_factory.h>
11+
#include <ydb/core/tablet_flat/flat_cxx_database.h>
12+
13+
namespace NKikimr::NBackup {
14+
15+
struct TBackupControllerTabletSchema : NIceDb::Schema {
16+
struct BackupCollections : Table<1> {
17+
struct ID : Column<1, NScheme::NTypeIds::Uint32> {};
18+
19+
using TKey = TableKey<ID>;
20+
using TColumns = TableColumns<ID>;
21+
};
22+
23+
using TTables = SchemaTables<BackupCollections>;
24+
using TSettings = SchemaSettings<ExecutorLogBatching<true>, ExecutorLogFlushPeriod<TDuration::MicroSeconds(512).GetValue()>>;
25+
};
26+
27+
class TBackupControllerTablet
28+
: public TActor<TBackupControllerTablet>
29+
, public NTabletFlatExecutor::TTabletExecutedFlat
30+
{
31+
public:
32+
class TTxBase
33+
: public NTabletFlatExecutor::TTransactionBase<TBackupControllerTablet>
34+
{
35+
public:
36+
TTxBase(const TString& name, TBackupControllerTablet* self)
37+
: TTransactionBase(self)
38+
, LogPrefix(name)
39+
{
40+
}
41+
42+
protected:
43+
const TString LogPrefix;
44+
};
45+
using Schema = TBackupControllerTabletSchema;
46+
47+
// local transactions
48+
class TTxInitSchema;
49+
class TTxInit;
50+
51+
// tx runners
52+
void RunTxInitSchema(const TActorContext& ctx);
53+
void RunTxInit(const TActorContext& ctx);
54+
55+
static constexpr NKikimrServices::TActivity::EType ActorActivityType() {
56+
return NKikimrServices::TActivity::REPLICATION_CONTROLLER_ACTOR; //FIXME
57+
}
58+
59+
explicit TBackupControllerTablet(const TActorId& tablet, TTabletStorageInfo* info)
60+
: TActor(&TThis::StateInit)
61+
, TTabletExecutedFlat(info, tablet, new NMiniKQL::TMiniKQLFactory)
62+
{
63+
Y_UNUSED(tablet, info);
64+
}
65+
66+
STFUNC(StateInit) {
67+
StateInitImpl(ev, SelfId());
68+
}
69+
70+
STFUNC(StateWork) {
71+
HandleDefaultEvents(ev, SelfId());
72+
}
73+
74+
void OnDetach(const TActorContext& ctx) override {
75+
Die(ctx);
76+
}
77+
78+
void OnTabletDead(TEvTablet::TEvTabletDead::TPtr& ev, const TActorContext& ctx) override {
79+
Y_UNUSED(ev);
80+
Die(ctx);
81+
}
82+
83+
void OnActivateExecutor(const TActorContext& ctx) override {
84+
RunTxInitSchema(ctx);
85+
}
86+
87+
void DefaultSignalTabletActive(const TActorContext& ctx) override {
88+
Y_UNUSED(ctx);
89+
}
90+
91+
92+
void SwitchToWork(const TActorContext& ctx) {
93+
SignalTabletActive(ctx);
94+
Become(&TThis::StateWork);
95+
}
96+
97+
void Reset() {
98+
99+
}
100+
};
101+
102+
} // namespace NKikimr::NBackup

ydb/core/backup/tx_init.h

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#pragma once
2+
#include "tablet_impl.h"
3+
4+
namespace NKikimr::NBackup {
5+
6+
class TBackupControllerTablet::TTxInit
7+
: public TTxBase
8+
{
9+
inline bool Load(NIceDb::TNiceDb& db) {
10+
Y_UNUSED(db);
11+
Self->Reset();
12+
return true;
13+
}
14+
15+
inline bool Load(NTable::TDatabase& toughDb) {
16+
NIceDb::TNiceDb db(toughDb);
17+
return Load(db);
18+
}
19+
20+
public:
21+
explicit TTxInit(TSelf* self)
22+
: TTxBase("TxInit", self)
23+
{
24+
}
25+
26+
TTxType GetTxType() const override {
27+
return TXTYPE_INIT;
28+
}
29+
30+
bool Execute(TTransactionContext& txc, const TActorContext& ctx) override {
31+
Y_UNUSED(ctx);
32+
// CLOG_D(ctx, "Execute");
33+
return Load(txc.DB);
34+
}
35+
36+
void Complete(const TActorContext& ctx) override {
37+
// CLOG_D(ctx, "Complete");
38+
Self->SwitchToWork(ctx);
39+
}
40+
}; // TTxInit
41+
42+
void TBackupControllerTablet::RunTxInit(const TActorContext& ctx) {
43+
Execute(new TTxInit(this), ctx);
44+
}
45+
46+
}

ydb/core/backup/tx_init_schema.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#pragma once
2+
3+
#include "tablet_impl.h"
4+
5+
namespace NKikimr::NBackup {
6+
7+
class TBackupControllerTablet::TTxInitSchema
8+
: public TTxBase
9+
{
10+
public:
11+
explicit TTxInitSchema(TBackupControllerTablet* self)
12+
: TTxBase("TxInitSchema", self)
13+
{
14+
}
15+
16+
TTxType GetTxType() const override {
17+
return TXTYPE_INIT_SCHEMA;
18+
}
19+
20+
bool Execute(TTransactionContext& txc, const TActorContext& ctx) override {
21+
Y_UNUSED(ctx);
22+
//CLOG_D(ctx, "Execute");
23+
24+
NIceDb::TNiceDb db(txc.DB);
25+
db.Materialize<Schema>();
26+
27+
return true;
28+
}
29+
30+
void Complete(const TActorContext& ctx) override {
31+
//CLOG_D(ctx, "Complete");
32+
Self->RunTxInit(ctx);
33+
}
34+
35+
}; // TTxInitSchema
36+
37+
void TBackupControllerTablet::RunTxInitSchema(const TActorContext& ctx) {
38+
Execute(new TTxInitSchema(this), ctx);
39+
}
40+
41+
}

ydb/core/backup/ya.make

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
LIBRARY()
2+
3+
SRCS(
4+
tablet.cpp
5+
)
6+
7+
PEERDIR(
8+
library/cpp/lwtrace/protos
9+
ydb/core/tablet_flat
10+
ydb/core/protos
11+
ydb/core/scheme/protos
12+
)
13+
14+
END()

ydb/core/cms/console/console__create_tenant.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ class TTenantsManager::TTxCreateTenant : public TTransactionBase<TTenantsManager
127127
Tenant->IsExternalHive = Self->FeatureFlags.GetEnableExternalHive();
128128
Tenant->IsExternalSysViewProcessor = Self->FeatureFlags.GetEnableSystemViews();
129129
Tenant->IsExternalStatisticsAggregator = Self->FeatureFlags.GetEnableStatistics();
130+
Tenant->IsExternalBackupControllerTablet = Self->FeatureFlags.GetEnableBackupService();
130131

131132
if (rec.options().disable_external_subdomain()) {
132133
Tenant->IsExternalSubdomain = false;
@@ -145,11 +146,13 @@ class TTenantsManager::TTxCreateTenant : public TTransactionBase<TTenantsManager
145146
Tenant->IsExternalHive = false;
146147
Tenant->IsExternalSysViewProcessor = false;
147148
Tenant->IsExternalStatisticsAggregator = false;
149+
Tenant->IsExternalBackupControllerTablet = false;
148150
}
149151

150152
Tenant->IsExternalHive &= Tenant->IsExternalSubdomain; // external hive without external sub domain is pointless
151153
Tenant->IsExternalSysViewProcessor &= Tenant->IsExternalSubdomain;
152154
Tenant->IsExternalStatisticsAggregator &= Tenant->IsExternalSubdomain;
155+
Tenant->IsExternalBackupControllerTablet &= Tenant->IsExternalSubdomain;
153156

154157
Tenant->StorageUnitsQuota = Self->Config.DefaultStorageUnitsQuota;
155158
Tenant->ComputationalUnitsQuota = Self->Config.DefaultComputationalUnitsQuota;

ydb/core/cms/console/console__scheme.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,15 @@ struct Schema : NIceDb::Schema {
4848
struct AlterIdempotencyKey : Column<26, NScheme::NTypeIds::Utf8> {};
4949
struct DatabaseQuotas : Column<27, NScheme::NTypeIds::String> {};
5050
struct IsExternalStatisticsAggregator : Column<28, NScheme::NTypeIds::Bool> {};
51+
struct IsExternalBackupControllerTablet : Column<29, NScheme::NTypeIds::Bool> {};
5152

5253
using TKey = TableKey<Path>;
5354
using TColumns = TableColumns<Path, State, Coordinators, Mediators, PlanResolution,
5455
Issue, TxId, UserToken, SubdomainVersion, ConfirmedSubdomain, TimeCastBucketsPerMediator,
5556
Attributes, Generation, SchemeShardId, PathId, ErrorCode, IsExternalSubDomain, IsExternalHive,
5657
AreResourcesShared, SharedDomainSchemeShardId, SharedDomainPathId, IsExternalSysViewProcessor,
57-
SchemaOperationQuotas, CreateIdempotencyKey, AlterIdempotencyKey, DatabaseQuotas, IsExternalStatisticsAggregator>;
58+
SchemaOperationQuotas, CreateIdempotencyKey, AlterIdempotencyKey, DatabaseQuotas, IsExternalStatisticsAggregator,
59+
IsExternalBackupControllerTablet>;
5860
};
5961

6062
struct TenantPools : Table<3> {

ydb/core/cms/console/console_tenants_manager.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,9 @@ class TSubDomainManip : public TActorBootstrapped<TSubDomainManip> {
461461
if (Tenant->IsExternalStatisticsAggregator) {
462462
subdomain.SetExternalStatisticsAggregator(true);
463463
}
464+
if (Tenant->IsExternalBackupControllerTablet) {
465+
subdomain.SetExternalBackupControllerTablet(true);
466+
}
464467
}
465468

466469
if (SharedTenant) {
@@ -486,6 +489,9 @@ class TSubDomainManip : public TActorBootstrapped<TSubDomainManip> {
486489
if (Tenant->IsExternalStatisticsAggregator) {
487490
subdomain.SetExternalStatisticsAggregator(true);
488491
}
492+
if (Tenant->IsExternalBackupControllerTablet) {
493+
subdomain.SetExternalBackupControllerTablet(true);
494+
}
489495
}
490496
if (tablets) {
491497
subdomain.SetCoordinators(Tenant->Coordinators);
@@ -1196,6 +1202,7 @@ TTenantsManager::TTenant::TTenant(const TString &path,
11961202
, IsExternalHive(false)
11971203
, IsExternalSysViewProcessor(false)
11981204
, IsExternalStatisticsAggregator(false)
1205+
, IsExternalBackupControllerTablet(false)
11991206
, AreResourcesShared(false)
12001207
{
12011208
}

ydb/core/cms/console/console_tenants_manager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,7 @@ class TTenantsManager : public TActorBootstrapped<TTenantsManager> {
529529
bool IsExternalHive;
530530
bool IsExternalSysViewProcessor;
531531
bool IsExternalStatisticsAggregator;
532+
bool IsExternalBackupControllerTablet;
532533
bool AreResourcesShared;
533534
THashSet<TTenant::TPtr> HostedTenants;
534535

0 commit comments

Comments
 (0)