aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgalaxycrab <UgnineSirdis@ydb.tech>2023-05-16 23:06:49 +0300
committergalaxycrab <UgnineSirdis@ydb.tech>2023-05-16 23:06:49 +0300
commite95347322acfd16b2fd57c40f30718d6b3e42631 (patch)
tree6f0cbde243da1ba1f1bb534683c86f3d4caa1a63
parent6273318769e6d741aaa31de686826fd8c091ebe8 (diff)
downloadydb-e95347322acfd16b2fd57c40f30718d6b3e42631.tar.gz
Fix error in renaming udf files
Фикс ошибки при запуске dqrun с udf ``` <main>: Fatal: ydb/library/yql/core/file_storage/storage.cpp:279: Failed to rename file from /home/vartmp/tmpZJvcwn/396539/9efe93e8-2946e964-8f95ea47-3 to /home/vartmp/tmpZJvcwn/ydb/library/yql/udfs/common/re2/libre2_udf.so.stripped_meta. 2: No such file or directory ```
-rw-r--r--ydb/library/yql/core/file_storage/file_storage.cpp4
-rw-r--r--ydb/library/yql/core/file_storage/storage.cpp2
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/CMakeLists.darwin-x86_64.txt1
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/CMakeLists.linux-aarch64.txt1
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/CMakeLists.linux-x86_64.txt1
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/CMakeLists.windows-x86_64.txt1
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.cpp12
7 files changed, 18 insertions, 4 deletions
diff --git a/ydb/library/yql/core/file_storage/file_storage.cpp b/ydb/library/yql/core/file_storage/file_storage.cpp
index 5fbb183566a..c705ae37420 100644
--- a/ydb/library/yql/core/file_storage/file_storage.cpp
+++ b/ydb/library/yql/core/file_storage/file_storage.cpp
@@ -77,7 +77,7 @@ public:
}
TFileLinkPtr PutFileStripped(const TString& file, const TString& originalMd5 = {}) final {
- YQL_LOG(INFO) << "PutFileStripped to cache: " << file;
+ YQL_LOG(INFO) << "PutFileStripped to cache: " << file << ". Provided MD5: " << originalMd5;
if (originalMd5.empty()) {
YQL_LOG(WARN) << "Empty md5 for: " << file;
}
@@ -101,7 +101,7 @@ public:
TShellCommand cmd("strip", {file, "-o", dstPath.GetPath()});
cmd.Run().Wait();
if (*cmd.GetExitCode() != 0) {
- ythrow yexception() << "'strip' exited with " << *cmd.GetExitCode() << "code. Stedrr: " << cmd.GetError();
+ ythrow yexception() << "'strip' exited with code " << *cmd.GetExitCode() << ". Stderr: " << cmd.GetError();
}
md5 = MD5::File(dstPath.GetPath());
size = TFile(dstPath.GetPath(), OpenExisting | RdOnly).GetLength();
diff --git a/ydb/library/yql/core/file_storage/storage.cpp b/ydb/library/yql/core/file_storage/storage.cpp
index be25eb42564..a3a39c0dacd 100644
--- a/ydb/library/yql/core/file_storage/storage.cpp
+++ b/ydb/library/yql/core/file_storage/storage.cpp
@@ -276,7 +276,7 @@ public:
const i64 prevFileSize = Max<i64>(0, GetFileLength(dstStorageFile.c_str()));
if (!NFs::Rename(src, dstStorageFile)) {
- ythrow yexception() << "Failed to rename file from " << src << " to " << dstStorageFile;
+ ythrow TSystemError() << "Failed to rename file from " << src << " to " << dstStorageFile;
}
SetCacheFilePermissionsNoThrow(dstStorageFile);
diff --git a/ydb/library/yql/providers/common/udf_resolve/CMakeLists.darwin-x86_64.txt b/ydb/library/yql/providers/common/udf_resolve/CMakeLists.darwin-x86_64.txt
index cd09e608e61..77ba8d72e5f 100644
--- a/ydb/library/yql/providers/common/udf_resolve/CMakeLists.darwin-x86_64.txt
+++ b/ydb/library/yql/providers/common/udf_resolve/CMakeLists.darwin-x86_64.txt
@@ -14,6 +14,7 @@ target_compile_options(providers-common-udf_resolve PRIVATE
target_link_libraries(providers-common-udf_resolve PUBLIC
contrib-libs-cxxsupp
yutil
+ cpp-digest-md5
cpp-protobuf-util
yql-core-file_storage
library-yql-minikql
diff --git a/ydb/library/yql/providers/common/udf_resolve/CMakeLists.linux-aarch64.txt b/ydb/library/yql/providers/common/udf_resolve/CMakeLists.linux-aarch64.txt
index d9beed0ae58..557d2db701f 100644
--- a/ydb/library/yql/providers/common/udf_resolve/CMakeLists.linux-aarch64.txt
+++ b/ydb/library/yql/providers/common/udf_resolve/CMakeLists.linux-aarch64.txt
@@ -15,6 +15,7 @@ target_link_libraries(providers-common-udf_resolve PUBLIC
contrib-libs-linux-headers
contrib-libs-cxxsupp
yutil
+ cpp-digest-md5
cpp-protobuf-util
yql-core-file_storage
library-yql-minikql
diff --git a/ydb/library/yql/providers/common/udf_resolve/CMakeLists.linux-x86_64.txt b/ydb/library/yql/providers/common/udf_resolve/CMakeLists.linux-x86_64.txt
index d9beed0ae58..557d2db701f 100644
--- a/ydb/library/yql/providers/common/udf_resolve/CMakeLists.linux-x86_64.txt
+++ b/ydb/library/yql/providers/common/udf_resolve/CMakeLists.linux-x86_64.txt
@@ -15,6 +15,7 @@ target_link_libraries(providers-common-udf_resolve PUBLIC
contrib-libs-linux-headers
contrib-libs-cxxsupp
yutil
+ cpp-digest-md5
cpp-protobuf-util
yql-core-file_storage
library-yql-minikql
diff --git a/ydb/library/yql/providers/common/udf_resolve/CMakeLists.windows-x86_64.txt b/ydb/library/yql/providers/common/udf_resolve/CMakeLists.windows-x86_64.txt
index cd09e608e61..77ba8d72e5f 100644
--- a/ydb/library/yql/providers/common/udf_resolve/CMakeLists.windows-x86_64.txt
+++ b/ydb/library/yql/providers/common/udf_resolve/CMakeLists.windows-x86_64.txt
@@ -14,6 +14,7 @@ target_compile_options(providers-common-udf_resolve PRIVATE
target_link_libraries(providers-common-udf_resolve PUBLIC
contrib-libs-cxxsupp
yutil
+ cpp-digest-md5
cpp-protobuf-util
yql-core-file_storage
library-yql-minikql
diff --git a/ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.cpp b/ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.cpp
index ce190e0f41b..031ab4ddc67 100644
--- a/ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.cpp
+++ b/ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.cpp
@@ -9,6 +9,8 @@
#include <ydb/library/yql/minikql/mkql_utils.h>
#include <ydb/library/yql/minikql/computation/mkql_computation_node.h>
+#include <library/cpp/digest/md5/md5.h>
+
#include <util/generic/vector.h>
#include <util/generic/hash_set.h>
#include <util/generic/hash.h>
@@ -31,10 +33,18 @@ public:
, UseFakeMD5_(useFakeMD5)
{}
+ TString GetMD5(const TString& path) const {
+ if (UseFakeMD5_) {
+ return MD5::Calc(path);
+ } else {
+ return {};
+ }
+ }
+
TMaybe<TFilePathWithMd5> GetSystemModulePath(const TStringBuf& moduleName) const override {
with_lock(Lock_) {
auto path = FunctionRegistry_->FindUdfPath(moduleName);
- return path ? MakeMaybe<TFilePathWithMd5>(*path, UseFakeMD5_ ? *path : TString()) : Nothing();
+ return path ? MakeMaybe<TFilePathWithMd5>(*path, GetMD5(*path)) : Nothing();
}
}