@@ -70,6 +70,12 @@ TStatus RemoveTopic(TTopicClient& client, const TString& path, const TDropTopicS
70
70
});
71
71
}
72
72
73
+ TStatus RemoveCoordinationNode (NCoordination::TClient& client, const TString& path, const NCoordination::TDropNodeSettings& settings) {
74
+ return RetryFunction ([&]() -> TStatus {
75
+ return client.DropNode (path, settings).ExtractValueSync ();
76
+ });
77
+ }
78
+
73
79
NYdb::NIssue::TIssues MakeIssues (const TString& error) {
74
80
NYdb::NIssue::TIssues issues;
75
81
issues.AddIssue (NYdb::NIssue::TIssue (error));
@@ -121,8 +127,8 @@ TStatus Remove(TRemoveFunc<TClient, TSettings> func, TSchemeClient& schemeClient
121
127
}
122
128
123
129
TStatus Remove (
124
- TSchemeClient& schemeClient, TTableClient* tableClient, TTopicClient* topicClient, NQuery::TQueryClient* queryClient, const ESchemeEntryType type ,
125
- const TString& path, ERecursiveRemovePrompt prompt, const TRemoveDirectorySettings& settings)
130
+ TSchemeClient& schemeClient, TTableClient* tableClient, TTopicClient* topicClient, NQuery::TQueryClient* queryClient, NCoordination::TClient* coordinationClient ,
131
+ const ESchemeEntryType type, const TString& path, ERecursiveRemovePrompt prompt, const TRemoveDirectorySettings& settings)
126
132
{
127
133
switch (type) {
128
134
case ESchemeEntryType::Directory:
@@ -143,6 +149,8 @@ TStatus Remove(
143
149
return Remove (&RemoveExternalTable, schemeClient, tableClient, type, path, prompt, settings);
144
150
case ESchemeEntryType::View:
145
151
return Remove (&RemoveView, schemeClient, queryClient, type, path, prompt, settings);
152
+ case ESchemeEntryType::CoordinationNode:
153
+ return Remove (&RemoveCoordinationNode, schemeClient, coordinationClient, type, path, prompt, settings);
146
154
147
155
default :
148
156
return TStatus (EStatus::UNSUPPORTED, MakeIssues (TStringBuilder ()
@@ -155,6 +163,7 @@ TStatus RemoveDirectoryRecursive(
155
163
TTableClient* tableClient,
156
164
TTopicClient* topicClient,
157
165
NQuery::TQueryClient* queryClient,
166
+ NCoordination::TClient* coordinationClient,
158
167
const TString& path,
159
168
ERecursiveRemovePrompt prompt,
160
169
const TRemoveDirectorySettings& settings,
@@ -179,7 +188,7 @@ TStatus RemoveDirectoryRecursive(
179
188
// output order is: Root, Recursive(children)...
180
189
// we need to reverse it to delete recursively
181
190
for (auto it = recursiveListResult.Entries .rbegin (); it != recursiveListResult.Entries .rend (); ++it) {
182
- if (auto result = Remove (schemeClient, tableClient, topicClient, queryClient, it->Type , TString{it->Name }, prompt, settings); !result.IsSuccess ()) {
191
+ if (auto result = Remove (schemeClient, tableClient, topicClient, queryClient, coordinationClient, it->Type , TString{it->Name }, prompt, settings); !result.IsSuccess ()) {
183
192
return result;
184
193
}
185
194
if (createProgressBar) {
@@ -198,24 +207,25 @@ TStatus RemoveDirectoryRecursive(
198
207
bool removeSelf,
199
208
bool createProgressBar)
200
209
{
201
- return RemoveDirectoryRecursive (schemeClient, &tableClient, nullptr , nullptr , path, ERecursiveRemovePrompt::Never, settings, removeSelf, createProgressBar);
210
+ return RemoveDirectoryRecursive (schemeClient, &tableClient, nullptr , nullptr , nullptr , path, ERecursiveRemovePrompt::Never, settings, removeSelf, createProgressBar);
202
211
}
203
212
204
213
TStatus RemoveDirectoryRecursive (
205
214
TSchemeClient& schemeClient,
206
215
TTableClient& tableClient,
207
216
TTopicClient* topicClient,
208
217
NQuery::TQueryClient* queryClient,
218
+ NCoordination::TClient* coordinationClient,
209
219
const TString& path,
210
220
ERecursiveRemovePrompt prompt,
211
221
const TRemoveDirectorySettings& settings,
212
222
bool removeSelf,
213
223
bool createProgressBar)
214
224
{
215
- return RemoveDirectoryRecursive (schemeClient, &tableClient, topicClient, queryClient, path, prompt, settings, removeSelf, createProgressBar);
225
+ return RemoveDirectoryRecursive (schemeClient, &tableClient, topicClient, queryClient, coordinationClient, path, prompt, settings, removeSelf, createProgressBar);
216
226
}
217
227
218
- NYdb::TStatus RemovePathRecursive (NScheme::TSchemeClient& schemeClient, NTable::TTableClient& tableClient, NTopic::TTopicClient* topicClient, NQuery::TQueryClient* queryClient, const TString& path, ERecursiveRemovePrompt prompt, const TRemovePathRecursiveSettings& settings /* = {}*/ , bool createProgressBar /* = true*/ ) {
228
+ NYdb::TStatus RemovePathRecursive (NScheme::TSchemeClient& schemeClient, NTable::TTableClient& tableClient, NTopic::TTopicClient* topicClient, NQuery::TQueryClient* queryClient, NCoordination::TClient* coordinationClient, const TString& path, ERecursiveRemovePrompt prompt, const TRemovePathRecursiveSettings& settings /* = {}*/ , bool createProgressBar /* = true*/ ) {
219
229
auto entity = schemeClient.DescribePath (path).ExtractValueSync ();
220
230
if (!entity.IsSuccess ()) {
221
231
if (settings.NotExistsIsOk_ && entity.GetStatus () == EStatus::SCHEME_ERROR && entity.GetIssues ().ToString ().find (" Path not found" ) != TString::npos) {
@@ -226,9 +236,9 @@ NYdb::TStatus RemovePathRecursive(NScheme::TSchemeClient& schemeClient, NTable::
226
236
switch (entity.GetEntry ().Type ) {
227
237
case ESchemeEntryType::Directory:
228
238
case ESchemeEntryType::ColumnStore:
229
- return RemoveDirectoryRecursive (schemeClient, tableClient, topicClient, queryClient, path, prompt, settings, true , createProgressBar);
239
+ return RemoveDirectoryRecursive (schemeClient, tableClient, topicClient, queryClient, coordinationClient, path, prompt, settings, true , createProgressBar);
230
240
default :
231
- return Remove (schemeClient, &tableClient, topicClient, queryClient, entity.GetEntry ().Type , path, prompt, settings);
241
+ return Remove (schemeClient, &tableClient, topicClient, queryClient, coordinationClient, entity.GetEntry ().Type , path, prompt, settings);
232
242
}
233
243
}
234
244
}
0 commit comments