3333
3434// Third-party headers
3535#include " curl/curl.h"
36- #include " XrdCl/XrdClFile.hh"
3736
3837// LSST headers
3938#include " lsst/log/Log.h"
@@ -274,18 +273,14 @@ shared_ptr<http::ClientConnPool> const& MergingHandler::_getHttpConnPool() {
274273 return _httpConnPool;
275274}
276275
277- /* &&&
278- MergingHandler::MergingHandler(std::shared_ptr<rproc::InfileMerger> merger, std::string const& tableName)
279- : _infileMerger{merger}, _tableNameOld{tableName} {}
280- */
281- MergingHandler::MergingHandler (std::shared_ptr<rproc::InfileMerger> merger)
282- : _infileMerger{merger} {}
276+ MergingHandler::MergingHandler (std::shared_ptr<rproc::InfileMerger> const & merger,
277+ std::shared_ptr<qdisp::Executive> const & exec)
278+ : _infileMerger(merger), _executive(exec) {}
283279
284-
285- MergingHandler::~MergingHandler () { LOGS (_log, LOG_LVL_TRACE , __func__ ); }
280+ MergingHandler::~MergingHandler () { LOGS (_log, LOG_LVL_TRACE , __func__); }
286281
287282void MergingHandler::errorFlush (std::string const & msg, int code) {
288- _setError (code, msg);
283+ _setError (code, msg, util::ErrorCode:: RESULT_IMPORT );
289284 // Might want more info from result service.
290285 // Do something about the error. FIXME.
291286 LOGS (_log, LOG_LVL_ERROR , " Error receiving result." );
@@ -311,29 +306,17 @@ bool MergingHandler::_mergeHttp(shared_ptr<qdisp::UberJob> const& uberJob,
311306 if (!success) {
312307 LOGS (_log, LOG_LVL_WARN , __func__ << " failed" );
313308 util::Error const & err = _infileMerger->getError ();
314- _setError (ccontrol::MSG_RESULT_ERROR , err.getMsg ());
309+ _setError (ccontrol::MSG_RESULT_ERROR , err.getMsg (), util::ErrorCode:: RESULT_IMPORT );
315310 }
316311 return success;
317312}
318313
319- bool MergingHandler::_mergeHttp (shared_ptr<qdisp::UberJob> const & uberJob,
320- proto::ResponseData const & responseData) {
321- if (_flushed) {
322- throw util::Bug (ERR_LOC , " already flushed" );
323- }
324- bool const success = _infileMerger->mergeHttp (uberJob, responseData);
325- if (!success) {
326- LOGS (_log, LOG_LVL_WARN , __func__ << " failed" );
327- util::Error const & err = _infileMerger->getError ();
328- _setError (ccontrol::MSG_RESULT_ERROR , err.getMsg ());
329- }
330- return success;
331- }
332314
333- void MergingHandler::_setError (int code, std::string const & msg) {
315+ void MergingHandler::_setError (int code, std::string const & msg, int errorState ) {
334316 LOGS (_log, LOG_LVL_DEBUG , " _setError: code: " << code << " , message: " << msg);
335- std::lock_guard<std::mutex> lock (_errorMutex);
336- _error = Error (code, msg);
317+ auto exec = _executive.lock ();
318+ if (exec == nullptr ) return ;
319+ exec->addMultiError (code, msg, errorState);
337320}
338321
339322tuple<bool , bool > MergingHandler::flushHttp (string const & fileUrl, uint64_t expectedRows,
@@ -383,10 +366,9 @@ tuple<bool, bool> MergingHandler::flushHttp(string const& fileUrl, uint64_t expe
383366 return {success, shouldCancel};
384367}
385368
386- void MergingHandler::flushHttpError (int errorCode, std::string const & errorMsg, int status ) {
369+ void MergingHandler::flushHttpError (int errorCode, std::string const & errorMsg, int errState ) {
387370 if (!_errorSet.exchange (true )) {
388- _error = util::Error (errorCode, errorMsg, util::ErrorCode::MYSQLEXEC );
389- _setError (ccontrol::MSG_RESULT_ERROR , _error.getMsg ());
371+ _setError (errorCode, errorMsg, errState);
390372 }
391373}
392374
0 commit comments