@@ -79,6 +79,26 @@ TPath DatabasePathFromWorkingDir(TSchemeShard* SS, const TString &opWorkingDir)
79
79
return databasePath;
80
80
}
81
81
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
+
82
102
} // anonymous namespace
83
103
84
104
void AuditLogModifySchemeOperation (const NKikimrSchemeOp::TModifyScheme& operation,
@@ -87,7 +107,7 @@ void AuditLogModifySchemeOperation(const NKikimrSchemeOp::TModifyScheme& operati
87
107
ui64 txId, const TParts& additionalParts) {
88
108
auto logEntry = MakeAuditLogFragment (operation);
89
109
90
- TPath databasePath = DatabasePathFromWorkingDir (SS, operation. GetWorkingDir () );
110
+ TPath databasePath = DatabasePathFromModifySchemeOperation (SS, operation);
91
111
auto [cloud_id, folder_id, database_id] = GetDatabaseCloudIds (databasePath);
92
112
auto address = NKikimr::NAddressClassifier::ExtractAddress (peerName);
93
113
@@ -140,7 +160,7 @@ void AuditLogModifySchemeOperation(const NKikimrSchemeOp::TModifyScheme& operati
140
160
141
161
void AuditLogModifySchemeTransaction (const NKikimrScheme::TEvModifySchemeTransaction& request,
142
162
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) {
144
164
// Each TEvModifySchemeTransaction.Transaction is a self sufficient operation and should be logged independently
145
165
// (even if it was packed into a single TxProxy transaction with some other operations).
146
166
const auto txId = request.GetTxId ();
@@ -163,7 +183,7 @@ void AuditLogModifySchemeTransactionDeprecated(const NKikimrScheme::TEvModifySch
163
183
for (const auto & operation : request.GetTransaction ()) {
164
184
auto logEntry = MakeAuditLogFragment (operation);
165
185
166
- TPath databasePath = DatabasePathFromWorkingDir (SS, operation. GetWorkingDir () );
186
+ TPath databasePath = DatabasePathFromModifySchemeOperation (SS, operation);
167
187
auto peerName = request.GetPeerName ();
168
188
169
189
auto entry = TStringBuilder ();
0 commit comments