diff --git a/ReleaseNotes.md b/ReleaseNotes.md index cf63e5f910d941712f56264e3ed43f1b3d80f255..8453f32ae7edbd0561f680643a274a5864cf9343 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -8,6 +8,7 @@ - cta/CTA#153 - Allow verification status to be cleared with cta-admin - cta/CTA#173 - Update release notes and small changes to refactoring of operation tools cmd line parsing - Compatible with operations 0.4-95 or later - cta/CTA#180 - Allow to submit multiple files for verification +- cta/CTA#94 - Remove tape session error codes ### Continuous Integration - cta/CTA#118 - Add unit tests for OSM label - cta/CTA#191 - Block merge until cta_valgrind success diff --git a/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.cpp b/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.cpp index 7954e00d98531a3335774c169e437adf2d300958..cb84cfbdd0fac0176aca643ef002b5ee79d8729d 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.cpp @@ -111,7 +111,7 @@ void DiskReadTask::execute(cta::log::LogContext& lc, cta::disk::DiskFileFactory .add("BytesNotYetRead", migratingFileSize); lc.log(cta::log::ERR, "Error while reading a file: memory block not filled up, but the file is not fully read yet"); // Mark the block as failed - mb->markAsFailed(erroMsg,666); + mb->markAsFailed(erroMsg); // Transmit to the tape write task, which will finish the session m_nextTask.pushDataBlock(mb); // Fail the disk side. @@ -155,7 +155,7 @@ void DiskReadTask::execute(cta::log::LogContext& lc, cta::disk::DiskFileFactory mb=m_nextTask.getFreeBlock(); ++blockId; } - mb->markAsFailed(e.getMessageValue(), 666); // TODO - Drop error code + mb->markAsFailed(e.getMessageValue()); m_nextTask.pushDataBlock(mb); mb = nullptr; diff --git a/tapeserver/castor/tape/tapeserver/daemon/DiskReadTaskTest.cpp b/tapeserver/castor/tape/tapeserver/daemon/DiskReadTaskTest.cpp index b572886a5a2b53d84b25d9b2cfb57961b63c3498..456dd33795923d7b7bfdf41e9ec82e8f23e0e29f 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/DiskReadTaskTest.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/DiskReadTaskTest.cpp @@ -51,7 +51,7 @@ namespace unitTests{ void reportFailedJob(std::unique_ptr<cta::ArchiveJob> failedArchiveJob, const cta::exception::Exception& ex, cta::log::LogContext & lc) override {} void reportEndOfSession(cta::log::LogContext & lc) override {} - void reportEndOfSessionWithErrors(const std::string msg, int error_code, cta::log::LogContext & lc) override {} + void reportEndOfSessionWithErrors(const std::string& msg, bool isTapeFull, cta::log::LogContext & lc) override {} void disableBulk() override {} MockMigrationReportPacker(cta::ArchiveMount *rm,cta::log::LogContext lc): MigrationReportPacker(rm,lc) {} diff --git a/tapeserver/castor/tape/tapeserver/daemon/DiskWriteTask.cpp b/tapeserver/castor/tape/tapeserver/daemon/DiskWriteTask.cpp index 6e3b100dd412d5f6fdc9aa675659ae45f6884fce..5ea738019b8919f21573256835c841f5adeda265 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/DiskWriteTask.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/DiskWriteTask.cpp @@ -225,16 +225,11 @@ void DiskWriteTask::releaseAllBlock(){ }; tape::utils::suppresUnusedVariable(sp); std::string errorMsg; - //int errCode; if(mb->isFailed()){ errorMsg=mb->errorMsg(); - - //disabled temporarily (see comment in MemBlock) - //errCode=mb->errorCode(); } else{ errorMsg="Mismatch between expected and received fileid or blockid"; - //errCode=666; } lc.log(cta::log::ERR,errorMsg); throw cta::exception::Exception(errorMsg); diff --git a/tapeserver/castor/tape/tapeserver/daemon/DiskWriteTaskTest.cpp b/tapeserver/castor/tape/tapeserver/daemon/DiskWriteTaskTest.cpp index c8b5bb457c1e132ce28e812575c858d0f90dddcf..76a93764729d06a77f3d51692be3f0738deb0c74 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/DiskWriteTaskTest.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/DiskWriteTaskTest.cpp @@ -85,7 +85,7 @@ namespace unitTests{ cta::threading::MutexLocker ml(m_mutex); endSessions++; } - void reportEndOfSessionWithErrors(const std::string& msg, int error_code, cta::log::LogContext& lc) override { + void reportEndOfSessionWithErrors(const std::string& msg, cta::log::LogContext& lc) override { cta::threading::MutexLocker ml(m_mutex); endSessionsWithError++; } @@ -143,7 +143,7 @@ namespace unitTests{ mb->m_fileid=0; mb->m_fileBlock=i; if(5==i){ - mb->markAsFailed("Test error",666); + mb->markAsFailed("Test error"); } t.pushDataBlock(mb); } diff --git a/tapeserver/castor/tape/tapeserver/daemon/DiskWriteThreadPool.cpp b/tapeserver/castor/tape/tapeserver/daemon/DiskWriteThreadPool.cpp index c2a9e22f0cd22dd9fc7739b6b903fc636e652202..1ec845f148525f10f603ffcc1463581efd44c5e3 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/DiskWriteThreadPool.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/DiskWriteThreadPool.cpp @@ -187,7 +187,7 @@ void DiskWriteThreadPool::DiskWriteWorkerThread::run() { "As last exiting DiskWriteWorkerThread, reported a successful end of session"); } else { - m_parentThreadPool.m_reporter.reportEndOfSessionWithErrors("End of recall session with error(s)", 666, m_lc); + m_parentThreadPool.m_reporter.reportEndOfSessionWithErrors("End of recall session with error(s)", m_lc); m_parentThreadPool.logWithStat(cta::log::INFO, "As last exiting DiskWriteWorkerThread, reported an end of session with errors"); } diff --git a/tapeserver/castor/tape/tapeserver/daemon/DiskWriteThreadPoolTest.cpp b/tapeserver/castor/tape/tapeserver/daemon/DiskWriteThreadPoolTest.cpp index 37619a3675bce6dff56b3deb017770c6820c69de..7ef08167e30c1046d94b4f93e4f6a1b708d7d376 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/DiskWriteThreadPoolTest.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/DiskWriteThreadPoolTest.cpp @@ -80,7 +80,7 @@ namespace unitTests{ cta::threading::MutexLocker ml(m_mutex); endSessions++; } - void reportEndOfSessionWithErrors(const std::string& msg, int error_code, cta::log::LogContext& lc) override { + void reportEndOfSessionWithErrors(const std::string& msg, cta::log::LogContext& lc) override { cta::threading::MutexLocker ml(m_mutex); endSessionsWithError++; } diff --git a/tapeserver/castor/tape/tapeserver/daemon/MemBlock.hpp b/tapeserver/castor/tape/tapeserver/daemon/MemBlock.hpp index baf21e40813e32c96f45f558d3c1b30365b6aa36..cf0e035869e59a4359e601f303556fd4c7270234 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/MemBlock.hpp +++ b/tapeserver/castor/tape/tapeserver/daemon/MemBlock.hpp @@ -60,19 +60,14 @@ class MemBlock { */ std::string m_errorMsg; - /** - * in case of error, the error message - */ - int m_errorCode; - - AlterationContext(const std::string& msg,int errorCode,Failed_t): - m_failed(true),m_cancelled(false),m_verifyonly(false),m_errorMsg(msg),m_errorCode(errorCode){} + AlterationContext(const std::string& msg,Failed_t): + m_failed(true),m_cancelled(false),m_verifyonly(false),m_errorMsg(msg){} AlterationContext(Cancelled_t): - m_failed(false),m_cancelled(true),m_verifyonly(false),m_errorMsg(""),m_errorCode(0){} + m_failed(false),m_cancelled(true),m_verifyonly(false),m_errorMsg(""){} AlterationContext(VerifyOnly_t): - m_failed(false),m_cancelled(false),m_verifyonly(true),m_errorMsg(""),m_errorCode(0){} + m_failed(false),m_cancelled(false),m_verifyonly(true),m_errorMsg(""){} }; std::unique_ptr<AlterationContext> m_context; @@ -101,20 +96,6 @@ public: " no error message to give"); } - /** - * Get the error code from the context, - * Throw an exception if there is no context - * @return - */ - int errorCode() const { - if(m_context.get()) { - return m_context->m_errorCode; - } - - throw cta::exception::Exception("Error Context is not set =" - " no error code to give"); - } - /** * Return true if the block has been marked as failed * @return @@ -144,8 +125,8 @@ public: * m_failed is true, m_fileBlock and m_tapeFileBlock are set at -1 * Other members do not change */ - void markAsFailed(const std::string msg,int errCode){ - m_context.reset(new AlterationContext(msg,errCode,AlterationContext::Failed)); + void markAsFailed(const std::string msg){ + m_context.reset(new AlterationContext(msg,AlterationContext::Failed)); m_fileBlock = -1; m_tapeFileBlock = -1; } diff --git a/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPacker.cpp b/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPacker.cpp index 641419945fbf1344c2909b2a254a5bea366e4d09..836bdd220a092e1239e28428926ad288e75c2e9b 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPacker.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPacker.cpp @@ -131,12 +131,12 @@ void MigrationReportPacker::reportEndOfSession(cta::log::LogContext& lc) { //------------------------------------------------------------------------------ //reportEndOfSessionWithErrors //------------------------------------------------------------------------------ -void MigrationReportPacker::reportEndOfSessionWithErrors(std::string msg, int errorCode, cta::log::LogContext& lc) { +void MigrationReportPacker::reportEndOfSessionWithErrors(const std::string& msg, bool isTapeFull, cta::log::LogContext& lc) { cta::log::ScopedParamContainer params(lc); params.add("type", "ReportEndofSessionWithErrors"); lc.log(cta::log::DEBUG, "In MigrationReportPacker::reportEndOfSessionWithErrors(), pushing a report."); cta::threading::MutexLocker ml(m_producterProtection); - std::unique_ptr<Report> rep(new ReportEndofSessionWithErrors(msg, errorCode)); + std::unique_ptr<Report> rep(new ReportEndofSessionWithErrors(msg, isTapeFull)); m_fifo.push(std::move(rep)); } @@ -152,39 +152,6 @@ void MigrationReportPacker::reportTestGoingToEnd(cta::log::LogContext& lc) { m_fifo.push(std::move(rep)); } -//------------------------------------------------------------------------------ -//synchronousReportEndWithErrors -//------------------------------------------------------------------------------ -void MigrationReportPacker::synchronousReportEndWithErrors(const std::string& msg, int errorCode, cta::log::LogContext& lc) { - cta::log::ScopedParamContainer params(lc); - params.add("type", "ReportEndofSessionWithErrors"); - lc.log(cta::log::DEBUG, "In MigrationReportPacker::synchronousReportEndWithErrors(), reporting asynchronously session complete."); - m_continue = false; - m_archiveMount->complete(); - if (m_errorHappened) { - cta::log::ScopedParamContainer sp(lc); - sp.add("errorMessage", msg) - .add("errorCode", errorCode); - lc.log(cta::log::INFO, "Reported end of session with error to client after sending file errors"); - } - else { - // As a measure of safety we censor any session error which is not ENOSPC into - // Meaningless 666 (used to be SEINTERNAL in CASTOR). ENOSPC is the only one interpreted by the tape gateway. - if (ENOSPC != errorCode) { - errorCode = 666; - } - lc.log(cta::log::INFO, "Reported end of session with error to client"); - } - if (m_watchdog) { - m_watchdog->addParameter(cta::log::Param("status", - ENOSPC == errorCode ? "success" : "failure")); - // We have a race condition here between the processing of this message by - // the initial process and the printing of the end-of-session log, triggered - // by the end our process. To delay the latter, we sleep half a second here. - usleep(500 * 1000); - } -} - //------------------------------------------------------------------------------ //ReportSuccessful::execute //------------------------------------------------------------------------------ @@ -377,21 +344,14 @@ void MigrationReportPacker::ReportEndofSessionWithErrors::execute(MigrationRepor if (reportPacker.m_errorHappened) { cta::log::ScopedParamContainer sp(reportPacker.m_lc); sp.add("errorMessage", m_message) - .add("errorCode", m_errorCode); + .add("isTapeFull", m_isTapeFull); reportPacker.m_lc.log(cta::log::INFO, "Reported end of session with error to client after sending file errors"); } else { - const std::string& msg = "Reported end of session with error to client"; - // As a measure of safety we censor any session error which is not ENOSPC into - // SEINTERNAL. ENOSPC is the only one interpreted by the tape gateway. - if (ENOSPC != m_errorCode) { - m_errorCode = 666; - } - reportPacker.m_lc.log(cta::log::INFO, msg); + reportPacker.m_lc.log(cta::log::INFO, "Reported end of session with error to client"); } if (reportPacker.m_watchdog) { - reportPacker.m_watchdog->addParameter(cta::log::Param("status", - ENOSPC == m_errorCode ? "success" : "failure")); + reportPacker.m_watchdog->addParameter(cta::log::Param("status", m_isTapeFull ? "success" : "failure")); // We have a race condition here between the processing of this message by // the initial process and the printing of the end-of-session log, triggered // by the end our process. To delay the latter, we sleep half a second here. diff --git a/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPacker.hpp b/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPacker.hpp index db7f52fa28675d107d6e472eccd7ece4d6228081..1910f4a885da817ccc6555069b3b492fd6c3ead1 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPacker.hpp +++ b/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPacker.hpp @@ -107,18 +107,10 @@ public: /** * Create into the MigrationReportPacker a report for an erroneous end of session * @param msg The error message - * @param error_code The error code given by the drive + * @param isTapeFull True if the drive returned ENOSPC code (end of space) * @param lc log context provided by the calling thread. */ - virtual void reportEndOfSessionWithErrors(std::string msg, int error_code, cta::log::LogContext& lc); - - /** - * Immediately report the end of session to the client. - * @param msg The error message - * @param error_code The error code given by the drive - * @param lc log context provided by the calling thread. - */ - virtual void synchronousReportEndWithErrors(const std::string& msg, int error_code, cta::log::LogContext& lc); + virtual void reportEndOfSessionWithErrors(const std::string& msg, bool isTapeFull, cta::log::LogContext& lc); void startThreads() { m_workerThread.start(); } @@ -220,10 +212,10 @@ private: class ReportEndofSessionWithErrors : public Report { std::string m_message; - int m_errorCode; + bool m_isTapeFull; public: - ReportEndofSessionWithErrors(std::string msg, int errorCode) : - m_message(std::move(msg)), m_errorCode(errorCode) {} + ReportEndofSessionWithErrors(std::string msg, bool isTapeFull) : + m_message(std::move(msg)), m_isTapeFull(isTapeFull) {} void execute(MigrationReportPacker& reportPacker) override; }; diff --git a/tapeserver/castor/tape/tapeserver/daemon/RecallReportPacker.cpp b/tapeserver/castor/tape/tapeserver/daemon/RecallReportPacker.cpp index 6a389a24a9636c11f9612f2457ffb8ed9663ad72..467c686429e29a83807bef0d2acb7524a7011805 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/RecallReportPacker.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/RecallReportPacker.cpp @@ -106,12 +106,12 @@ void RecallReportPacker::reportDriveStatus(cta::common::dataStructures::DriveSta //------------------------------------------------------------------------------ //reportEndOfSessionWithErrors //------------------------------------------------------------------------------ -void RecallReportPacker::reportEndOfSessionWithErrors(const std::string& msg, int error_code, cta::log::LogContext& lc) { +void RecallReportPacker::reportEndOfSessionWithErrors(const std::string& msg, cta::log::LogContext& lc) { cta::log::ScopedParamContainer params(lc); params.add("type", "ReportEndofSessionWithErrors"); lc.log(cta::log::DEBUG, "In RecallReportPacker::reportEndOfSessionWithErrors(), pushing a report."); cta::threading::MutexLocker ml(m_producterProtection); - m_fifo.push(new ReportEndofSessionWithErrors(msg, error_code)); + m_fifo.push(new ReportEndofSessionWithErrors(msg)); } //------------------------------------------------------------------------------ @@ -186,7 +186,6 @@ bool RecallReportPacker::ReportDriveStatus::goingToEnd() { //------------------------------------------------------------------------------ void RecallReportPacker::ReportEndofSessionWithErrors::execute(RecallReportPacker& parent) { if (parent.m_errorHappened) { - LogContext::ScopedParam sp(parent.m_lc, Param("errorCode", m_error_code)); parent.m_lc.log(cta::log::ERR, m_message); } else { diff --git a/tapeserver/castor/tape/tapeserver/daemon/RecallReportPacker.hpp b/tapeserver/castor/tape/tapeserver/daemon/RecallReportPacker.hpp index 084e6aacc1b8308085d67a9f1ada4af5d7c7c405..582cfc1f8dec52756f1662b3f2352d859c2ebe1e 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/RecallReportPacker.hpp +++ b/tapeserver/castor/tape/tapeserver/daemon/RecallReportPacker.hpp @@ -72,7 +72,7 @@ public: * @param error_code The error code given by the drive * @param lc log context provided by the calling thread. */ - virtual void reportEndOfSessionWithErrors(const std::string& msg, int error_code, cta::log::LogContext& lc); + virtual void reportEndOfSessionWithErrors(const std::string& msg, cta::log::LogContext& lc); /** * Report the drive state and set it in the central drive register. This @@ -182,10 +182,9 @@ private: class ReportEndofSessionWithErrors : public Report { std::string m_message; - int m_error_code; public: - ReportEndofSessionWithErrors(std::string msg, int error_code) : - m_message(std::move(msg)), m_error_code(error_code) {} + ReportEndofSessionWithErrors(std::string msg) : + m_message(std::move(msg)) {} void execute(RecallReportPacker& reportPacker) override; diff --git a/tapeserver/castor/tape/tapeserver/daemon/RecallTaskInjectorTest.cpp b/tapeserver/castor/tape/tapeserver/daemon/RecallTaskInjectorTest.cpp index 6284bee3ecd9d01ac1dea6e515a92bf88a71e9c7..c6de418bec883c0772fb217db7f2b887ae14d3b4 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/RecallTaskInjectorTest.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/RecallTaskInjectorTest.cpp @@ -65,7 +65,7 @@ namespace unitTests cta::threading::MutexLocker ml(m_mutex); endSessions++; } - void reportEndOfSessionWithErrors(const std::string& msg, int error_code, cta::log::LogContext& lc) override { + void reportEndOfSessionWithErrors(const std::string& msg, cta::log::LogContext& lc) override { cta::threading::MutexLocker ml(m_mutex); endSessionsWithError++; } diff --git a/tapeserver/castor/tape/tapeserver/daemon/ReportPackerInterface.hpp b/tapeserver/castor/tape/tapeserver/daemon/ReportPackerInterface.hpp index bc9b9875f117ea6325d0747b5ab11b74643b075d..21beadba849b96616c149b33121ab358e70f993b 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/ReportPackerInterface.hpp +++ b/tapeserver/castor/tape/tapeserver/daemon/ReportPackerInterface.hpp @@ -99,8 +99,7 @@ protected: .add("NSFSEQ", (*it)->fseq()) .add("NSHOST", (*it)->nshost()) .add("NSFILETRANSACTIONID", (*it)->fileTransactionId()) - .add("ErrorMessage", (*it)->errorMessage()) - .add("ErrorCode", (*it)->errorCode()); + .add("ErrorMessage", (*it)->errorMessage()); m_lc.log(cta::log::INFO, msg); } } diff --git a/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.cpp b/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.cpp index 138e9181a463f4cb43eb167dfe5ccecb52757c8e..47b1a68eeef75fef4ab0980ad1f8d5ef604e4b6a 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.cpp @@ -439,7 +439,7 @@ void castor::tape::tapeserver::daemon::TapeReadSingleThread::run() { "Both DiskWriteWorkerThread and TapeReadSingleThread existed, reported a successful end of session"); } else { - m_reportPacker.reportEndOfSessionWithErrors("End of recall session with error(s)", 666, m_logContext); + m_reportPacker.reportEndOfSessionWithErrors("End of recall session with error(s)", m_logContext); } } } catch (const cta::exception::Exception& e) { @@ -482,7 +482,7 @@ void castor::tape::tapeserver::daemon::TapeReadSingleThread::run() { "Both DiskWriteWorkerThread and TapeReadSingleThread existed, reported a successful end of session"); } else { - m_reportPacker.reportEndOfSessionWithErrors("End of recall session with error(s)", 666, m_logContext); + m_reportPacker.reportEndOfSessionWithErrors("End of recall session with error(s)", m_logContext); } } } diff --git a/tapeserver/castor/tape/tapeserver/daemon/TapeReadTask.hpp b/tapeserver/castor/tape/tapeserver/daemon/TapeReadTask.hpp index a7a9e96a6934c6542ee0e999aa7f1dc6b32df7e3..e90397dbee66f3ec5bc57564aa79ce506cc7fcef 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/TapeReadTask.hpp +++ b/tapeserver/castor/tape/tapeserver/daemon/TapeReadTask.hpp @@ -216,7 +216,7 @@ public: // mb might or might not be allocated at this point, but // reportErrorToDiskTask will deal with the allocation if required. - reportErrorToDiskTask(ex.getMessageValue(),666,mb); // TODO - Remove error code + reportErrorToDiskTask(ex.getMessageValue(), mb); } //end of catch watchdog.fileFinished(); } @@ -237,7 +237,7 @@ private: * @param errorMsg The error message we will give to the client * @param mb The mem block we will use */ - void reportErrorToDiskTask(const std::string& msg, int code, MemBlock* mb = nullptr) { + void reportErrorToDiskTask(const std::string& msg, MemBlock* mb = nullptr) { // If we are not provided with a block, allocate it and // fill it up if (!mb) { @@ -246,7 +246,7 @@ private: mb->m_fileid = m_retrieveJob->retrieveRequest.archiveFileID; } // mark the block failed and push it (plus signal the end) - mb->markAsFailed(msg, code); + mb->markAsFailed(msg); m_fifo.pushDataBlock(mb); m_fifo.pushDataBlock(nullptr); } diff --git a/tapeserver/castor/tape/tapeserver/daemon/TapeWriteSingleThread.cpp b/tapeserver/castor/tape/tapeserver/daemon/TapeWriteSingleThread.cpp index 8d172d7be73062cd8c67d7b594494b55b657a817..93e1366d7275957eb2b4eff8f1f7f253a42bec40 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/TapeWriteSingleThread.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/TapeWriteSingleThread.cpp @@ -499,15 +499,14 @@ void castor::tape::tapeserver::daemon::TapeWriteSingleThread::run() { // Prepare the standard error codes for the session std::string errorMessage(e.getMessageValue()); int logLevel = cta::log::ERR; - int errorCode(666); + bool isTapeFull = false; // Override if we got en ENOSPC error (end of tape) try { - const auto& errnum = - dynamic_cast<const cta::exception::Errnum&> (e); + const auto& errnum = dynamic_cast<const cta::exception::Errnum&> (e); if (ENOSPC == errnum.errorNumber()) { - errorCode = ENOSPC; + isTapeFull = true; errorMessage = "End of migration due to tape full"; - logLevel = cta::log::WARNING; + logLevel = cta::log::INFO; } } catch (...) {} // then log the end of write thread @@ -516,7 +515,7 @@ void castor::tape::tapeserver::daemon::TapeWriteSingleThread::run() { .add("ErrorMessage", errorMessage); m_stats.totalTime = totalTimer.secs(); logWithStats(logLevel, "Tape thread complete for writing", params); - m_reportPacker.reportEndOfSessionWithErrors(errorMessage, errorCode, m_logContext); + m_reportPacker.reportEndOfSessionWithErrors(errorMessage, isTapeFull, m_logContext); } } diff --git a/tapeserver/castor/tape/tapeserver/daemon/TapeWriteTask.cpp b/tapeserver/castor/tape/tapeserver/daemon/TapeWriteTask.cpp index 288440c5f43256ce5ab8323a222c21580f149854..a4645e7d8c160d48ef4cedcfb7b5ded05796430c 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/TapeWriteTask.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/TapeWriteTask.cpp @@ -244,19 +244,15 @@ namespace daemon { // if of type Errnum AND the errorCode is ENOSPC, we will propagate it. // This is how we communicate the fact that a tape is full to the client. // We also change the log level to INFO for the case of end of tape. - int errorCode = 666; // TODO - Remove error code int errorLevel = cta::log::ERR; bool doReportJobError = true; try { - const cta::exception::Errnum & errnum = - dynamic_cast<const cta::exception::Errnum &> (e); + const auto & errnum = dynamic_cast<const cta::exception::Errnum &> (e); if (ENOSPC == errnum.errorNumber()) { - errorCode = ENOSPC; errorLevel = cta::log::INFO; doReportJobError = false; } } catch (...) {} - LogContext::ScopedParam sp(lc, Param("exceptionCode",errorCode)); LogContext::ScopedParam sp1(lc, Param("exceptionMessage", e.getMessageValue())); lc.log(errorLevel,"An error occurred for this file. End of migrations."); circulateMemBlocks();