From 7a7ed40c76e7a6ba3dcbabfeffa81aebb7ed340f Mon Sep 17 00:00:00 2001 From: Michal Simon Date: Wed, 16 Dec 2020 21:59:40 +0100 Subject: [PATCH] [XrdEc] StrmWriter: correctly calc written bytes. --- src/XrdCl/XrdClLocalFileHandler.cc | 1 - src/XrdEc/XrdEcStrmWriter.hh | 14 ++++---------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/XrdCl/XrdClLocalFileHandler.cc b/src/XrdCl/XrdClLocalFileHandler.cc index 5d8688ffc00..1a232e12080 100644 --- a/src/XrdCl/XrdClLocalFileHandler.cc +++ b/src/XrdCl/XrdClLocalFileHandler.cc @@ -32,7 +32,6 @@ #include #include #include -#include #include #include diff --git a/src/XrdEc/XrdEcStrmWriter.hh b/src/XrdEc/XrdEcStrmWriter.hh index 4a678b21c4d..f9aa1687685 100644 --- a/src/XrdEc/XrdEcStrmWriter.hh +++ b/src/XrdEc/XrdEcStrmWriter.hh @@ -27,7 +27,6 @@ #include #include - namespace XrdEc { //--------------------------------------------------------------------------- @@ -324,12 +323,6 @@ namespace XrdEc catch( const buff_queue::wait_interrupted& ){ } } - struct spare_files - { - std::mutex mtx; - std::vector> files; - }; - void WriteBuff( std::unique_ptr buff ) { //--------------------------------------------------------------------- @@ -355,13 +348,15 @@ namespace XrdEc const size_t nbchunks = objcfg.nbchunks; std::vector writes; writes.reserve( nbchunks ); - size_t blknb = next_blknb++; + size_t blknb = next_blknb++; + uint64_t blksize = 0; for( size_t strpnb = 0; strpnb < nbchunks; ++strpnb ) { std::string fn = objcfg.obj + '.' + std::to_string( blknb ) + '.' + std::to_string( strpnb ); uint32_t crc32c = wrtbuff->GetCrc32c( strpnb ); uint64_t strpsize = wrtbuff->GetStrpSize( strpnb ); char* strpbuff = wrtbuff->GetStrpBuff( strpnb ); + if( strpnb < objcfg.nbdata ) blksize += strpsize; //------------------------------------------------------------------- // Find a server where we can append the next data chunk @@ -421,12 +416,11 @@ namespace XrdEc { zip->CloseFile(); wrtbuff.reset(); - global_status.report_wrt( st, strpsize ); } ); writes.emplace_back( std::move( p ) ); } - XrdCl::Async( XrdCl::Parallel( writes ) ); + XrdCl::Async( XrdCl::Parallel( writes ) >> [=]( XrdCl::XRootDStatus &st ){ global_status.report_wrt( st, blksize ); } ); } void CloseImpl( XrdCl::ResponseHandler *handler )