From fbc9b4f782333a6d60e243ef3f826cc2653d0adf Mon Sep 17 00:00:00 2001 From: Michal Simon Date: Wed, 20 Jan 2021 15:13:59 +0100 Subject: [PATCH] [XrdEc] Make sure the global status is checked before closing the data object. --- src/XrdEc/XrdEcReader.cc | 1 - src/XrdEc/XrdEcStrmWriter.cc | 8 +++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/XrdEc/XrdEcReader.cc b/src/XrdEc/XrdEcReader.cc index 996ddb79522..4ac02b78db6 100644 --- a/src/XrdEc/XrdEcReader.cc +++ b/src/XrdEc/XrdEcReader.cc @@ -42,7 +42,6 @@ #include #include #include -#include namespace XrdEc { diff --git a/src/XrdEc/XrdEcStrmWriter.cc b/src/XrdEc/XrdEcStrmWriter.cc index 4d4922e8f2f..611861bd5ff 100644 --- a/src/XrdEc/XrdEcStrmWriter.cc +++ b/src/XrdEc/XrdEcStrmWriter.cc @@ -172,7 +172,6 @@ namespace XrdEc //---------------------------------------------- // Select another server //---------------------------------------------- - size_t srvid; if( !servers->dequeue( srvid ) ) return; // if there are no more servers we simply fail zip = *dataarchs[srvid]; //---------------------------------------------- @@ -253,6 +252,13 @@ namespace XrdEc //--------------------------------------------------------------------------- void StrmWriter::CloseImpl( XrdCl::ResponseHandler *handler ) { + //------------------------------------------------------------------------- + // First, check the global status, if we are in an error state just + // fail the request. + //------------------------------------------------------------------------- + XrdCl::XRootDStatus gst = global_status.get(); + if( !gst.IsOK() ) return ScheduleHandler( handler, gst ); + const size_t size = objcfg.plgr.size(); //------------------------------------------------------------------------- // prepare the metadata (the Central Directory of each data ZIP)