From 0c7e885d5bf333dfec2bd8dbf7c26d9f6d692107 Mon Sep 17 00:00:00 2001 From: Michal Simon Date: Thu, 21 Jan 2021 15:42:48 +0100 Subject: [PATCH] [XrdEc] Reader: use bundled close. --- src/XrdCl/XrdClFileStateHandler.cc | 1 + src/XrdCl/XrdClZipArchive.hh | 8 ++++++++ src/XrdEc/XrdEcReader.cc | 6 +++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/XrdCl/XrdClFileStateHandler.cc b/src/XrdCl/XrdClFileStateHandler.cc index e4a3f8f2c6f..6be2b5ba184 100644 --- a/src/XrdCl/XrdClFileStateHandler.cc +++ b/src/XrdCl/XrdClFileStateHandler.cc @@ -712,6 +712,7 @@ namespace XrdCl pFollowRedirects( true ), pUseVirtRedirector( true ), pIsChannelEncrypted( false ), + pAllowBundledClose( false ), pReOpenHandler( 0 ) { pFileHandle = new uint8_t[4]; diff --git a/src/XrdCl/XrdClZipArchive.hh b/src/XrdCl/XrdClZipArchive.hh index 1b55453efc0..04864b27a16 100644 --- a/src/XrdCl/XrdClZipArchive.hh +++ b/src/XrdCl/XrdClZipArchive.hh @@ -274,6 +274,14 @@ namespace XrdCl return openstage == Done; } + //----------------------------------------------------------------------- + //! Set property on the underlying File object + //----------------------------------------------------------------------- + inline bool SetProperty( const std::string &name, const std::string &value ) + { + return archive.SetProperty( name, value ); + } + private: //----------------------------------------------------------------------- diff --git a/src/XrdEc/XrdEcReader.cc b/src/XrdEc/XrdEcReader.cc index 35df14acc02..bf6c95d42ee 100644 --- a/src/XrdEc/XrdEcReader.cc +++ b/src/XrdEc/XrdEcReader.cc @@ -552,7 +552,11 @@ namespace XrdEc { auto &zipptr = itr->second; if( zipptr->IsOpen() ) - closes.emplace_back( XrdCl::CloseArchive( *zipptr ) >> [zipptr]( XrdCl::XRootDStatus& ){ } ); + { + zipptr->SetProperty( "BundledClose", "true"); + closes.emplace_back( XrdCl::CloseArchive( *zipptr ) >> + [zipptr]( XrdCl::XRootDStatus& ){ } ); + } } // if there is nothing to close just schedule the handler