diff options
| author | Stefan Boberg <[email protected]> | 2025-11-01 14:04:35 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-11-01 14:04:35 +0100 |
| commit | a58da97f98697580bf128ed5723ba720cc30f0dc (patch) | |
| tree | 798e392ddf76128a506293dc0803aaf852203dcd /src/zenremotestore/builds | |
| parent | fix use-after-free in TEST_CASE("compactcas.threadedinsert") (#620) (diff) | |
| download | zen-a58da97f98697580bf128ed5723ba720cc30f0dc.tar.xz zen-a58da97f98697580bf128ed5723ba720cc30f0dc.zip | |
Various fixes to address issues flagged by gcc / non-UE toolchain build (#621)
* gcc: avoid using memset on nontrivial struct
* redundant `return std::move`
* fixed various compilation issues flagged by gcc
* fix issue in xmake.lua detecting whether we are building with the UE toolchain or not
* add GCC ignore -Wundef (comment is inaccurate)
* remove redundant std::move
* don't catch exceptions by value
* unreferenced variables
* initialize "by the book" instead of memset
* remove unused exception reference
* add #include <cstring> to fix gcc build
* explicitly poulate KeyValueMap by traversing input spans fixes gcc compilation
* remove unreferenced variable
* eliminate redundant `std::move` which gcc complains about
* fix gcc compilation by including <cstring>
* tag unreferenced variable to fix gcc compilation
* fixes for various cases of naming members the same as their type
Diffstat (limited to 'src/zenremotestore/builds')
| -rw-r--r-- | src/zenremotestore/builds/buildstorageoperations.cpp | 22 | ||||
| -rw-r--r-- | src/zenremotestore/builds/filebuildstorage.cpp | 32 | ||||
| -rw-r--r-- | src/zenremotestore/builds/jupiterbuildstorage.cpp | 18 |
3 files changed, 40 insertions, 32 deletions
diff --git a/src/zenremotestore/builds/buildstorageoperations.cpp b/src/zenremotestore/builds/buildstorageoperations.cpp index f106b7b18..ecf5853b8 100644 --- a/src/zenremotestore/builds/buildstorageoperations.cpp +++ b/src/zenremotestore/builds/buildstorageoperations.cpp @@ -180,7 +180,7 @@ namespace { return SB.ToString(); } - void DownloadLargeBlob(BuildStorage& Storage, + void DownloadLargeBlob(BuildStorageBase& Storage, const std::filesystem::path& DownloadFolder, const Oid& BuildId, const IoHash& ChunkHash, @@ -6804,7 +6804,7 @@ BuildsOperationUploadFolder::CompressChunk(const ChunkedFolderContent& Content, } BuildsOperationValidateBuildPart::BuildsOperationValidateBuildPart(BuildOpLogOutput& LogOutput, - BuildStorage& Storage, + BuildStorageBase& Storage, std::atomic<bool>& AbortFlag, std::atomic<bool>& PauseFlag, WorkerThreadPool& IOWorkerPool, @@ -6883,15 +6883,23 @@ BuildsOperationValidateBuildPart::Execute() ZEN_CONSOLE("Validating build part {}/{} ({})", m_BuildId, m_BuildPartId, NiceBytes(BuildPart.GetSize())); } std::vector<IoHash> ChunkAttachments; - for (CbFieldView LooseFileView : BuildPart["chunkAttachments"sv].AsObjectView()["rawHashes"sv]) + if (const CbObjectView ChunkAttachmentsView = BuildPart["chunkAttachments"sv].AsObjectView()) { - ChunkAttachments.push_back(LooseFileView.AsBinaryAttachment()); + for (CbFieldView LooseFileView : ChunkAttachmentsView["rawHashes"sv]) + { + ChunkAttachments.push_back(LooseFileView.AsBinaryAttachment()); + } } m_ValidateStats.ChunkAttachmentCount = ChunkAttachments.size(); std::vector<IoHash> BlockAttachments; - for (CbFieldView BlocksView : BuildPart["blockAttachments"sv].AsObjectView()["rawHashes"sv]) + if (const CbObjectView BlockAttachmentsView = BuildPart["blockAttachments"sv].AsObjectView()) { - BlockAttachments.push_back(BlocksView.AsBinaryAttachment()); + { + for (CbFieldView BlocksView : BlockAttachmentsView["rawHashes"sv]) + { + BlockAttachments.push_back(BlocksView.AsBinaryAttachment()); + } + } } m_ValidateStats.BlockAttachmentCount = BlockAttachments.size(); @@ -7375,7 +7383,7 @@ BuildsOperationPrimeCache::Execute() CompositeBuffer ValidateBlob(std::atomic<bool>& AbortFlag, - BuildStorage& Storage, + BuildStorageBase& Storage, const Oid& BuildId, const IoHash& BlobHash, uint64_t& OutCompressedSize, diff --git a/src/zenremotestore/builds/filebuildstorage.cpp b/src/zenremotestore/builds/filebuildstorage.cpp index 3cda5f00f..96d81b281 100644 --- a/src/zenremotestore/builds/filebuildstorage.cpp +++ b/src/zenremotestore/builds/filebuildstorage.cpp @@ -14,14 +14,14 @@ namespace zen { using namespace std::literals; -class FileBuildStorage : public BuildStorage +class FileBuildStorage : public BuildStorageBase { public: - explicit FileBuildStorage(const std::filesystem::path& StoragePath, - BuildStorage::Statistics& Stats, - bool EnableJsonOutput, - double LatencySec, - double DelayPerKBSec) + explicit FileBuildStorage(const std::filesystem::path& StoragePath, + BuildStorageBase::Statistics& Stats, + bool EnableJsonOutput, + double LatencySec, + double DelayPerKBSec) : m_StoragePath(StoragePath) , m_Stats(Stats) , m_EnableJsonOutput(EnableJsonOutput) @@ -788,21 +788,21 @@ private: } } - const std::filesystem::path m_StoragePath; - BuildStorage::Statistics& m_Stats; - const bool m_EnableJsonOutput = false; - std::atomic<uint64_t> m_WrittenBytes; + const std::filesystem::path m_StoragePath; + BuildStorageBase::Statistics& m_Stats; + const bool m_EnableJsonOutput = false; + std::atomic<uint64_t> m_WrittenBytes; const double m_LatencySec = 0.0; const double m_DelayPerKBSec = 0.0; }; -std::unique_ptr<BuildStorage> -CreateFileBuildStorage(const std::filesystem::path& StoragePath, - BuildStorage::Statistics& Stats, - bool EnableJsonOutput, - double LatencySec, - double DelayPerKBSec) +std::unique_ptr<BuildStorageBase> +CreateFileBuildStorage(const std::filesystem::path& StoragePath, + BuildStorageBase::Statistics& Stats, + bool EnableJsonOutput, + double LatencySec, + double DelayPerKBSec) { return std::make_unique<FileBuildStorage>(StoragePath, Stats, EnableJsonOutput, LatencySec, DelayPerKBSec); } diff --git a/src/zenremotestore/builds/jupiterbuildstorage.cpp b/src/zenremotestore/builds/jupiterbuildstorage.cpp index 14a5ecc85..fe8067905 100644 --- a/src/zenremotestore/builds/jupiterbuildstorage.cpp +++ b/src/zenremotestore/builds/jupiterbuildstorage.cpp @@ -30,7 +30,7 @@ namespace { } } // namespace -class JupiterBuildStorage : public BuildStorage +class JupiterBuildStorage : public BuildStorageBase { public: JupiterBuildStorage(LoggerRef InLog, @@ -499,14 +499,14 @@ private: const std::filesystem::path m_TempFolderPath; }; -std::unique_ptr<BuildStorage> -CreateJupiterBuildStorage(LoggerRef InLog, - HttpClient& InHttpClient, - BuildStorage::Statistics& Stats, - std::string_view Namespace, - std::string_view Bucket, - bool AllowRedirect, - const std::filesystem::path& TempFolderPath) +std::unique_ptr<BuildStorageBase> +CreateJupiterBuildStorage(LoggerRef InLog, + HttpClient& InHttpClient, + BuildStorageBase::Statistics& Stats, + std::string_view Namespace, + std::string_view Bucket, + bool AllowRedirect, + const std::filesystem::path& TempFolderPath) { ZEN_TRACE_CPU("CreateJupiterBuildStorage"); |