From 1780bd097a185055201b60f24baa173473e9756b Mon Sep 17 00:00:00 2001 From: Green Sky Date: Fri, 24 Jan 2025 00:27:58 +0100 Subject: [PATCH] error checks around performing the resize this throws on windows and causes undefined mappings on linux --- solanaceae/ngc_ft1_sha1/file_rw_mapped.hpp | 14 ++++++++++++-- solanaceae/ngc_ft1_sha1/sha1_ngcft1.cpp | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/solanaceae/ngc_ft1_sha1/file_rw_mapped.hpp b/solanaceae/ngc_ft1_sha1/file_rw_mapped.hpp index b2b4f20..5bb9649 100644 --- a/solanaceae/ngc_ft1_sha1/file_rw_mapped.hpp +++ b/solanaceae/ngc_ft1_sha1/file_rw_mapped.hpp @@ -24,8 +24,18 @@ struct File2RWMapped : public File2I { _file_size = std::filesystem::file_size(native_file_path); if (file_size >= 0 && _file_size != file_size) { - _file_size = file_size; - std::filesystem::resize_file(native_file_path, file_size); // ensure size, usually sparse + try { + std::filesystem::resize_file(native_file_path, file_size); // ensure size, usually sparse + } catch (...) { + std::cerr << "FileRWMapped error: resizing file failed\n"; + return; + } + + _file_size = std::filesystem::file_size(native_file_path); + if (_file_size != file_size) { + std::cerr << "FileRWMapped error: resizing file failed (size mismatch)\n"; + return; + } } std::error_code err; diff --git a/solanaceae/ngc_ft1_sha1/sha1_ngcft1.cpp b/solanaceae/ngc_ft1_sha1/sha1_ngcft1.cpp index 2d3c940..8000862 100644 --- a/solanaceae/ngc_ft1_sha1/sha1_ngcft1.cpp +++ b/solanaceae/ngc_ft1_sha1/sha1_ngcft1.cpp @@ -28,7 +28,6 @@ #include "./re_announce_systems.hpp" #include "./chunk_picker_systems.hpp" #include "./transfer_stats_systems.hpp" -#include "solanaceae/object_store/object_store.hpp" #include #include @@ -185,6 +184,7 @@ File2I* SHA1_NGCFT1::objGetFile2Write(ObjectHandle o) { File2I* SHA1_NGCFT1::objGetFile2Read(ObjectHandle o) { auto* file2_comp_ptr = o.try_get(); if (file2_comp_ptr == nullptr || !file2_comp_ptr->file || !file2_comp_ptr->file->can_read || !file2_comp_ptr->file->isGood()) { + std::cout << "SHA1_NGCFT1: (re)opening object " << entt::to_integral(entt::to_entity(o.entity())) << " for reading\n"; // (re)request file2 from backend auto new_file = _mfb.file2(o, StorageBackendIFile2::FILE2_READ); if (!new_file || !new_file->can_read || !new_file->isGood()) {