diff options
author | Ilnaz Nizametdinov <i.nizametdinov@gmail.com> | 2022-03-16 13:29:46 +0300 |
---|---|---|
committer | Ilnaz Nizametdinov <i.nizametdinov@gmail.com> | 2022-03-16 13:29:46 +0300 |
commit | ae686a55ca68128bcd0a99823796b5c8b0bb38c7 (patch) | |
tree | e5f80ad5fa8166559a4ed6fdca5a875441d67e77 | |
parent | 85c7cbf3d4a8929b676f73e7d885400112d245dd (diff) | |
download | ydb-ae686a55ca68128bcd0a99823796b5c8b0bb38c7.tar.gz |
Enrich issues with object's path YDB-1562
ref:c9c5588370b3adcd37ac6ecb2d72a588fedf2922
-rw-r--r-- | ydb/public/lib/ydb_cli/dump/dump_impl.cpp | 2 | ||||
-rw-r--r-- | ydb/public/lib/ydb_cli/dump/restore_impl.cpp | 26 | ||||
-rw-r--r-- | ydb/public/lib/ydb_cli/dump/util/util.h | 23 |
3 files changed, 34 insertions, 17 deletions
diff --git a/ydb/public/lib/ydb_cli/dump/dump_impl.cpp b/ydb/public/lib/ydb_cli/dump/dump_impl.cpp index a02f7facae5..96a439a6115 100644 --- a/ydb/public/lib/ydb_cli/dump/dump_impl.cpp +++ b/ydb/public/lib/ydb_cli/dump/dump_impl.cpp @@ -18,7 +18,7 @@ TDumpResult TDumpClient::Dump(const TString& dbPath, const TString& fsPath, cons Y_UNUSED(TableClient); Y_UNUSED(fsPath); Y_UNUSED(settings); - return Result<TDumpResult>(EStatus::CLIENT_CALL_UNIMPLEMENTED); + return Result<TDumpResult>(EStatus::CLIENT_CALL_UNIMPLEMENTED, "Not implemented"); } } // NDump diff --git a/ydb/public/lib/ydb_cli/dump/restore_impl.cpp b/ydb/public/lib/ydb_cli/dump/restore_impl.cpp index 74f4ffd18c9..39ba3a6c699 100644 --- a/ydb/public/lib/ydb_cli/dump/restore_impl.cpp +++ b/ydb/public/lib/ydb_cli/dump/restore_impl.cpp @@ -230,7 +230,7 @@ TRestoreResult TRestoreClient::RestoreFolder(const TFsPath& fsPath, const TStrin } if (!result) { - return Result<TRestoreResult>(EStatus::SUCCESS); + return Result<TRestoreResult>(); } return *result; @@ -273,7 +273,7 @@ TRestoreResult TRestoreClient::CheckSchema(const TString& dbPath, const TTableDe TMaybe<TTableDescription> actualDesc; auto descResult = DescribeTable(TableClient, dbPath, actualDesc); if (!descResult.IsSuccess()) { - return Result<TRestoreResult>(std::move(descResult)); + return Result<TRestoreResult>(dbPath, std::move(descResult)); } auto unorderedColumns = [](const TVector<TColumn>& orderedColumns) { @@ -293,19 +293,19 @@ TRestoreResult TRestoreClient::CheckSchema(const TString& dbPath, const TTableDe }; if (unorderedColumns(desc.GetColumns()) != unorderedColumns(actualDesc->GetColumns())) { - return Result<TRestoreResult>(EStatus::SCHEME_ERROR, TStringBuilder() << "Columns differ" + return Result<TRestoreResult>(dbPath, EStatus::SCHEME_ERROR, TStringBuilder() << "Columns differ" << ": dumped# " << JoinSeq(", ", desc.GetColumns()) << ", actual# " << JoinSeq(", ", actualDesc->GetColumns())); } if (desc.GetPrimaryKeyColumns() != actualDesc->GetPrimaryKeyColumns()) { - return Result<TRestoreResult>(EStatus::SCHEME_ERROR, TStringBuilder() << "Primary key columns differ" + return Result<TRestoreResult>(dbPath, EStatus::SCHEME_ERROR, TStringBuilder() << "Primary key columns differ" << ": dumped# " << JoinSeq(", ", desc.GetPrimaryKeyColumns()) << ", actual# " << JoinSeq(", ", actualDesc->GetPrimaryKeyColumns())); } if (unorderedIndexes(desc.GetIndexDescriptions()) != unorderedIndexes(actualDesc->GetIndexDescriptions())) { - return Result<TRestoreResult>(EStatus::SCHEME_ERROR, TStringBuilder() << "Indexes differ" + return Result<TRestoreResult>(dbPath, EStatus::SCHEME_ERROR, TStringBuilder() << "Indexes differ" << ": dumped# " << JoinSeq(", ", desc.GetIndexDescriptions()) << ", actual# " << JoinSeq(", ", actualDesc->GetIndexDescriptions())); } @@ -323,7 +323,7 @@ TRestoreResult TRestoreClient::RestoreData(const TFsPath& fsPath, const TString& TCreateTableSettings().RequestType(DOC_API_REQUEST_TYPE)).GetValueSync(); }); if (!createResult.IsSuccess()) { - return Result<TRestoreResult>(std::move(createResult)); + return Result<TRestoreResult>(dbPath, std::move(createResult)); } THolder<NPrivate::IDataAccumulator> accumulator; @@ -342,7 +342,7 @@ TRestoreResult TRestoreClient::RestoreData(const TFsPath& fsPath, const TString& TMaybe<TTableDescription> actualDesc; auto descResult = DescribeTable(TableClient, dbPath, actualDesc); if (!descResult.IsSuccess()) { - return Result<TRestoreResult>(std::move(descResult)); + return Result<TRestoreResult>(dbPath, std::move(descResult)); } accumulator.Reset(CreateImportDataAccumulator(desc, *actualDesc, settings)); @@ -362,18 +362,18 @@ TRestoreResult TRestoreClient::RestoreData(const TFsPath& fsPath, const TString& while (input.ReadLine(line)) { while (!accumulator->Fits(line)) { if (!accumulator->Ready(true)) { - return Result<TRestoreResult>(EStatus::INTERNAL_ERROR, "Data is not ready"); + return Result<TRestoreResult>(dbPath, EStatus::INTERNAL_ERROR, "Data is not ready"); } if (!writer->Push(accumulator->GetData(true))) { - return Result<TRestoreResult>(EStatus::GENERIC_ERROR, "Cannot write data #1"); + return Result<TRestoreResult>(dbPath, EStatus::GENERIC_ERROR, "Cannot write data #1"); } } accumulator->Feed(std::move(line)); if (accumulator->Ready()) { if (!writer->Push(accumulator->GetData())) { - return Result<TRestoreResult>(EStatus::GENERIC_ERROR, "Cannot write data #2"); + return Result<TRestoreResult>(dbPath, EStatus::GENERIC_ERROR, "Cannot write data #2"); } } } @@ -383,7 +383,7 @@ TRestoreResult TRestoreClient::RestoreData(const TFsPath& fsPath, const TString& while (accumulator->Ready(true)) { if (!writer->Push(accumulator->GetData(true))) { - return Result<TRestoreResult>(EStatus::GENERIC_ERROR, "Cannot write data #3"); + return Result<TRestoreResult>(dbPath, EStatus::GENERIC_ERROR, "Cannot write data #3"); } } @@ -405,7 +405,7 @@ TRestoreResult TRestoreClient::RestoreIndexes(const TString& dbPath, const TTabl if (!actualDesc) { auto descResult = DescribeTable(TableClient, dbPath, actualDesc); if (!descResult.IsSuccess()) { - return Result<TRestoreResult>(std::move(descResult)); + return Result<TRestoreResult>(dbPath, std::move(descResult)); } } @@ -418,7 +418,7 @@ TRestoreResult TRestoreClient::RestoreIndexes(const TString& dbPath, const TTabl return session.AlterTableLong(dbPath, settings).GetValueSync().Status(); }); if (!status.IsSuccess() && status.GetStatus() != EStatus::STATUS_UNDEFINED) { - return Result<TRestoreResult>(std::move(status)); + return Result<TRestoreResult>(dbPath, std::move(status)); } // wait for expected index build diff --git a/ydb/public/lib/ydb_cli/dump/util/util.h b/ydb/public/lib/ydb_cli/dump/util/util.h index d5e8fc3b97d..ae3635431f1 100644 --- a/ydb/public/lib/ydb_cli/dump/util/util.h +++ b/ydb/public/lib/ydb_cli/dump/util/util.h @@ -5,13 +5,22 @@ #include <ydb/public/sdk/cpp/client/ydb_table/table.h> #include <util/generic/maybe.h> +#include <util/string/builder.h> namespace NYdb { namespace NDump { +inline void AddPath(NYql::TIssues& issues, const TString& path) { + issues.AddIssue(NYql::TIssue(TStringBuilder() << "Path: " << path) + .SetCode(NYql::DEFAULT_ERROR, NYql::TSeverityIds::S_INFO)); +} + template <typename TResult> -inline TResult Result(EStatus code = EStatus::SUCCESS, const TString& error = {}) { +inline TResult Result(const TMaybe<TString>& path = Nothing(), EStatus code = EStatus::SUCCESS, const TString& error = {}) { NYql::TIssues issues; + if (path) { + AddPath(issues, *path); + } if (error) { issues.AddIssue(NYql::TIssue(error)); } @@ -19,8 +28,16 @@ inline TResult Result(EStatus code = EStatus::SUCCESS, const TString& error = {} } template <typename TResult> -inline TResult Result(TStatus&& status) { - return TResult(std::move(status)); +inline TResult Result(EStatus code, const TString& error) { + return Result<TResult>(Nothing(), code, error); +} + +template <typename TResult> +inline TResult Result(const TString& path, TStatus&& status) { + NYql::TIssues issues; + AddPath(issues, path); + issues.AddIssues(status.GetIssues()); + return TResult(TStatus(status.GetStatus(), std::move(issues))); } TStatus DescribeTable(NTable::TTableClient& tableClient, const TString& path, TMaybe<NTable::TTableDescription>& out); |