aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBulat Gayazov <brgayazov@yandex-team.ru>2023-07-07 16:01:56 +0000
committerbrgayazov <bulat@ydb.tech>2023-07-07 19:01:56 +0300
commit16e5be364061b70335dd3a382647fbf96ec52686 (patch)
treece8e9d168098497a1216ee046493b08e09049e85
parent6f6c640f81808c8000f6068a8ec5dbb5af5bce62 (diff)
downloadydb-16e5be364061b70335dd3a382647fbf96ec52686.tar.gz
Fixed bug with progress bar in tools dump/restore
Fixed bug with progress bar in tools dump/restore Pull Request resolved: #296
-rw-r--r--ydb/library/backup/backup.cpp2
-rw-r--r--ydb/public/lib/ydb_cli/common/recursive_remove.cpp24
-rw-r--r--ydb/public/lib/ydb_cli/common/recursive_remove.h6
-rw-r--r--ydb/public/lib/ydb_cli/dump/restore_impl.cpp2
4 files changed, 22 insertions, 12 deletions
diff --git a/ydb/library/backup/backup.cpp b/ydb/library/backup/backup.cpp
index 0919e2ec9a8..d21fd19ac47 100644
--- a/ydb/library/backup/backup.cpp
+++ b/ydb/library/backup/backup.cpp
@@ -508,7 +508,7 @@ void RemoveClusterDirectory(const TDriver& driver, const TString& path) {
void RemoveClusterDirectoryRecursive(const TDriver& driver, const TString& path) {
NScheme::TSchemeClient schemeClient(driver);
NTable::TTableClient tableClient(driver);
- TStatus status = NConsoleClient::RemoveDirectoryRecursive(schemeClient, tableClient, path);
+ TStatus status = NConsoleClient::RemoveDirectoryRecursive(schemeClient, tableClient, path, {}, true, false);
VerifyStatus(status, TStringBuilder() << "RemoveDirectoryRecursive, path: " << path.Quote());
LOG_DEBUG("Directory is removed recursively, path: " << path.Quote());
}
diff --git a/ydb/public/lib/ydb_cli/common/recursive_remove.cpp b/ydb/public/lib/ydb_cli/common/recursive_remove.cpp
index 07833902f9e..697684b3602 100644
--- a/ydb/public/lib/ydb_cli/common/recursive_remove.cpp
+++ b/ydb/public/lib/ydb_cli/common/recursive_remove.cpp
@@ -99,7 +99,8 @@ TStatus RemoveDirectoryRecursive(
const TString& path,
ERecursiveRemovePrompt prompt,
const TRemoveDirectorySettings& settings,
- bool removeSelf)
+ bool removeSelf,
+ bool createProgressBar)
{
auto recursiveListResult = RecursiveList(schemeClient, path, {}, removeSelf);
if (!recursiveListResult.Status.IsSuccess()) {
@@ -111,8 +112,11 @@ TStatus RemoveDirectoryRecursive(
return TStatus(EStatus::SUCCESS, {});
}
}
-
- TProgressBar bar(recursiveListResult.Entries.size());
+
+ std::unique_ptr<TProgressBar> bar;
+ if (createProgressBar) {
+ bar = std::make_unique<TProgressBar>(recursiveListResult.Entries.size());
+ }
// output order is: Root, Recursive(children)...
// we need to reverse it to delete recursively
for (auto it = recursiveListResult.Entries.rbegin(); it != recursiveListResult.Entries.rend(); ++it) {
@@ -147,7 +151,9 @@ TStatus RemoveDirectoryRecursive(
return TStatus(EStatus::UNSUPPORTED, MakeIssues(TStringBuilder()
<< "Unsupported entry type: " << entry.Type));
}
- bar.AddProgress(1);
+ if (createProgressBar) {
+ bar->AddProgress(1);
+ }
}
return TStatus(EStatus::SUCCESS, {});
@@ -158,9 +164,10 @@ TStatus RemoveDirectoryRecursive(
TTableClient& tableClient,
const TString& path,
const TRemoveDirectorySettings& settings,
- bool removeSelf)
+ bool removeSelf,
+ bool createProgressBar)
{
- return RemoveDirectoryRecursive(schemeClient, &tableClient, nullptr, path, ERecursiveRemovePrompt::Never, settings, removeSelf);
+ return RemoveDirectoryRecursive(schemeClient, &tableClient, nullptr, path, ERecursiveRemovePrompt::Never, settings, removeSelf, createProgressBar);
}
TStatus RemoveDirectoryRecursive(
@@ -170,9 +177,10 @@ TStatus RemoveDirectoryRecursive(
const TString& path,
ERecursiveRemovePrompt prompt,
const TRemoveDirectorySettings& settings,
- bool removeSelf)
+ bool removeSelf,
+ bool createProgressBar)
{
- return RemoveDirectoryRecursive(schemeClient, &tableClient, &topicClient, path, prompt, settings, removeSelf);
+ return RemoveDirectoryRecursive(schemeClient, &tableClient, &topicClient, path, prompt, settings, removeSelf, createProgressBar);
}
}
diff --git a/ydb/public/lib/ydb_cli/common/recursive_remove.h b/ydb/public/lib/ydb_cli/common/recursive_remove.h
index 392da273d73..d72007a4c6c 100644
--- a/ydb/public/lib/ydb_cli/common/recursive_remove.h
+++ b/ydb/public/lib/ydb_cli/common/recursive_remove.h
@@ -19,7 +19,8 @@ TStatus RemoveDirectoryRecursive(
NTable::TTableClient& tableClient,
const TString& path,
const NScheme::TRemoveDirectorySettings& settings = {},
- bool removeSelf = true);
+ bool removeSelf = true,
+ bool createProgressBar = true);
TStatus RemoveDirectoryRecursive(
NScheme::TSchemeClient& schemeClient,
@@ -28,6 +29,7 @@ TStatus RemoveDirectoryRecursive(
const TString& path,
ERecursiveRemovePrompt prompt,
const NScheme::TRemoveDirectorySettings& settings = {},
- bool removeSelf = true);
+ bool removeSelf = true,
+ bool createProgressBar = true);
}
diff --git a/ydb/public/lib/ydb_cli/dump/restore_impl.cpp b/ydb/public/lib/ydb_cli/dump/restore_impl.cpp
index 6ee86826fc8..4ef2444e16b 100644
--- a/ydb/public/lib/ydb_cli/dump/restore_impl.cpp
+++ b/ydb/public/lib/ydb_cli/dump/restore_impl.cpp
@@ -161,7 +161,7 @@ TRestoreResult TRestoreClient::Restore(const TString& fsPath, const TString& dbP
switch (entry.Type) {
case ESchemeEntryType::Directory: {
- auto result = NConsoleClient::RemoveDirectoryRecursive(SchemeClient, TableClient, fullPath);
+ auto result = NConsoleClient::RemoveDirectoryRecursive(SchemeClient, TableClient, fullPath, {}, true, false);
if (!result.IsSuccess()) {
return restoreResult;
}