Skip to content

Commit 4d8de26

Browse files
UgnineSirdisblinkov
authored andcommitted
Fix database field in audit log move operations (#14652)
1 parent 52848b0 commit 4d8de26

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

ydb/core/tx/schemeshard/schemeshard_audit_log.cpp

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,26 @@ TPath DatabasePathFromWorkingDir(TSchemeShard* SS, const TString &opWorkingDir)
7979
return databasePath;
8080
}
8181

82+
TPath DatabasePathFromModifySchemeOperation(TSchemeShard* SS, const NKikimrSchemeOp::TModifyScheme& operation) {
83+
if (operation.GetWorkingDir().empty()) {
84+
// Moving operations does not have working directory. It is valid to take src or dst as directory for database
85+
if (operation.HasMoveTable()) {
86+
return DatabasePathFromWorkingDir(SS, operation.GetMoveTable().GetSrcPath());
87+
}
88+
if (operation.HasMoveSequence()) {
89+
return DatabasePathFromWorkingDir(SS, operation.GetMoveSequence().GetSrcPath());
90+
}
91+
if (operation.HasMoveIndex()) {
92+
return DatabasePathFromWorkingDir(SS, operation.GetMoveIndex().GetTablePath());
93+
}
94+
if (operation.HasMoveTableIndex()) {
95+
return DatabasePathFromWorkingDir(SS, operation.GetMoveTableIndex().GetSrcPath());
96+
}
97+
}
98+
99+
return DatabasePathFromWorkingDir(SS, operation.GetWorkingDir());
100+
}
101+
82102
} // anonymous namespace
83103

84104
void AuditLogModifySchemeOperation(const NKikimrSchemeOp::TModifyScheme& operation,
@@ -87,7 +107,7 @@ void AuditLogModifySchemeOperation(const NKikimrSchemeOp::TModifyScheme& operati
87107
ui64 txId, const TParts& additionalParts) {
88108
auto logEntry = MakeAuditLogFragment(operation);
89109

90-
TPath databasePath = DatabasePathFromWorkingDir(SS, operation.GetWorkingDir());
110+
TPath databasePath = DatabasePathFromModifySchemeOperation(SS, operation);
91111
auto [cloud_id, folder_id, database_id] = GetDatabaseCloudIds(databasePath);
92112
auto address = NKikimr::NAddressClassifier::ExtractAddress(peerName);
93113

@@ -140,7 +160,7 @@ void AuditLogModifySchemeOperation(const NKikimrSchemeOp::TModifyScheme& operati
140160

141161
void AuditLogModifySchemeTransaction(const NKikimrScheme::TEvModifySchemeTransaction& request,
142162
const NKikimrScheme::TEvModifySchemeTransactionResult& response, TSchemeShard* SS,
143-
const TString& peerName, const TString& userSID, const TString& sanitizedToken) {
163+
const TString& peerName, const TString& userSID, const TString& sanitizedToken) {
144164
// Each TEvModifySchemeTransaction.Transaction is a self sufficient operation and should be logged independently
145165
// (even if it was packed into a single TxProxy transaction with some other operations).
146166
const auto txId = request.GetTxId();
@@ -163,7 +183,7 @@ void AuditLogModifySchemeTransactionDeprecated(const NKikimrScheme::TEvModifySch
163183
for (const auto& operation : request.GetTransaction()) {
164184
auto logEntry = MakeAuditLogFragment(operation);
165185

166-
TPath databasePath = DatabasePathFromWorkingDir(SS, operation.GetWorkingDir());
186+
TPath databasePath = DatabasePathFromModifySchemeOperation(SS, operation);
167187
auto peerName = request.GetPeerName();
168188

169189
auto entry = TStringBuilder();

0 commit comments

Comments
 (0)