diff --git a/src/OutputFile.cc b/src/OutputFile.cc index f4832ac4e655028db2678b80767bf9f882e472e0..80f3fd1a5ec860e16442369609d4aeb872515062 100644 --- a/src/OutputFile.cc +++ b/src/OutputFile.cc @@ -49,7 +49,7 @@ std::string Detail::LumisectionMetadata::MakeFooter(uint32_t run_number) const { return footer.str(); } -void Detail::RunMetadata::AddLumisectionMetadata(LumisectionMetadata& ls) { +void Detail::RunMetadata::AddLumisectionMetadata(const LumisectionMetadata& ls) { std::lock_guard<std::mutex> l(mutex_); num_orbits += ls.num_orbits; num_files += ls.num_files; diff --git a/src/OutputFile.h b/src/OutputFile.h index 8f2369ca4a80a7617d1131f6c3b126022138610c..c9585f6ffbbfe174e1b1368cdde10fc5762638d7 100644 --- a/src/OutputFile.h +++ b/src/OutputFile.h @@ -92,7 +92,7 @@ struct RunMetadata { num_orbits = num_files = 0; number = run_number; } - void AddLumisectionMetadata(LumisectionMetadata& ls); + void AddLumisectionMetadata(const LumisectionMetadata& ls); std::string MakeFooter(uint32_t ls_index) const; }; @@ -110,23 +110,23 @@ class Output { Output() = default; ~Output() {} - auto GetHandle() const { return handle_; } + [[maybe_unused]] auto GetHandle() const { return handle_; } auto GetMetadata() const { return md_; } - auto GetLumisection() const { return md_.lumisection; } - auto GetLumisectionFooter() const { return ls_footer_; } + [[maybe_unused]] auto GetLumisection() const { return md_.lumisection; } + [[maybe_unused]] auto GetLumisectionFooter() const { return ls_footer_; } auto HasPayload() const { auto min_val = header_.has_value() ? sizeof(HeaderType) : 0; return md_.size > min_val; } - auto HasLumisectionFooter() const { return ls_footer_.lumisection != 0; } + [[maybe_unused]] auto HasLumisectionFooter() const { return ls_footer_.lumisection != 0; } auto HasHeader() const { return reserved_header_; }; - auto GetHeader() const -> std::optional<HeaderType> { return header_; } + [[maybe_unused]] auto GetHeader() const -> std::optional<HeaderType> { return header_; } void UpdateHeader() { header_ = HeaderType(md_.source_id, md_.num_orbits, md_.run_number, md_.lumisection, md_.size); } - void SetLumisectionFooter(Detail::LumisectionMetadata ls) { + void SetLumisectionFooter(const Detail::LumisectionMetadata& ls) { // The last file in a lumisection carries an LS metadata footer ls_footer_ = ls; } @@ -136,14 +136,15 @@ class Output { virtual bool Open() = 0; virtual int Write(const char*& buffer, size_t size_bytes, uint32_t size_orbits) = 0; - [[maybe_unused]] virtual int WriteAt(const char*& data, size_t size_bytes, std::optional<off_t> abs_seek) = 0; + [[maybe_unused]] virtual int WriteAt(const char*& data, size_t size_bytes, + std::optional<off_t> abs_seek) = 0; virtual bool Close() = 0; virtual bool IsOpen() const = 0; protected: OutputHandleType handle_; std::optional<HeaderType> header_; - Detail::FileMetadata md_; + Detail::FileMetadata md_{}; Detail::LumisectionMetadata ls_footer_{}; bool reserved_header_{false}; diff --git a/src/OutputFileHandler.cc b/src/OutputFileHandler.cc index a0d0c0f5ffdab2f66fe0290440cd0b6a1d572b27..873ac4eb94d8094c9e1f0ea43b80f6191118c5c9 100644 --- a/src/OutputFileHandler.cc +++ b/src/OutputFileHandler.cc @@ -50,6 +50,7 @@ void OutputFileHandler::UpdateRunInfo(uint32_t next_run, uint32_t next_index) { } void OutputFileHandler::CommitFile() { + assert(ls_); ls_->AddFileMetadata(outputFile_.GetMetadata()); Detail::FileMetadata file_meta = outputFile_.GetMetadata(); if (ls_->IsLastIndex(file_meta.index_in_ls) && IsMainPipeline() && HasCmsswHeaders()) { diff --git a/src/sink.cc b/src/sink.cc index 5555cbc48e0eaa6e9e2fffa4b16fc29b02c8be1e..319bfb829ee8bf0a11b3b8adab08b78a6cbd066b 100644 --- a/src/sink.cc +++ b/src/sink.cc @@ -26,9 +26,9 @@ void Sink<TOutput>::CommitFileHeader(TOutput &file) { } template <typename TOutput> -void Sink<TOutput>::CommitOutput(TOutput &f) { +void Sink<TOutput>::CommitOutput(const TOutput &f) { if constexpr (std::is_same<TOutput, FileOutput>()) { - auto file = reinterpret_cast<FileOutput &>(f); + auto file = reinterpret_cast<const FileOutput &>(f); auto filename = file.GetFilename(); LOG(TRACE) << "Closing file '" << filename << "'"; assert(file.Close()); diff --git a/src/sink.h b/src/sink.h index f9bfccc8ece3600d6196bfc9b00f922842ce58bc..0205568cdc24414c220b47599fbe8b4922d8e682 100644 --- a/src/sink.h +++ b/src/sink.h @@ -50,10 +50,11 @@ class Sink { } } } - void CommitOutput(TOutput &f); + void CommitOutput(const TOutput &f); + // CommitFileHeader: updates header void CommitFileHeader(TOutput &f); - Sink(std::string rp, std::string mp) : root_path_(rp), metadata_path_(mp) { + Sink(const std::string &rp, const std::string &mp) : root_path_(rp), metadata_path_(mp) { commit_thread_ = std::thread(&Sink::ProcessQueue, this); } @@ -65,7 +66,7 @@ class Sink { commit_thread_.join(); } - void WriteLumisectionFooter(uint32_t run_number, Detail::LumisectionMetadata &ls) { + void WriteLumisectionFooter(uint32_t run_number, const Detail::LumisectionMetadata &ls) { auto footer = ls.MakeFooter(run_number); auto filename = Detail::FormatRun(run_number) + "_" +