Fix taped uncaught exception when tape drive does not exist in catalogue
Currently taped crashes with an uncaught exception if a drive does not exist in the catalogue. This is of course an unrecoverable scenario from the taped point of view, but it should crash gracefully :)
To reproduce:
- Run the
test_cta_admin.sh
test - Check the logs of
cta-tpsrv02-0
Part of the logs:
{"epoch_time":1737128121.897687645,"local_time":"2025-01-17T16:35:21+0100","hostname":"cta-tpsrv02-0","program":"cta-taped","log_level":"ERROR","pid":18400,"tid":18400,"message":"Aborting cta-taped on uncaught exception. Stack trace follows.","drive_name":"VDSTK02","instance":"CI","sched_backend":"VFS","exceptionMessage":"Cannot update status for drive VDSTK02. Drive not found."}
{"epoch_time":1737128121.897769347,"local_time":"2025-01-17T16:35:21+0100","hostname":"cta-tpsrv02-0","program":"cta-taped","log_level":"INFO","pid":18400,"tid":18400,"message":"Stack trace","drive_name":"VDSTK02","instance":"CI","sched_backend":"VFS","traceFrameNumber":0,"traceFrame":"/lib64/libctacommon.so.0(cta::exception::Backtrace::Backtrace(bool)+0x6b) [0x7fd7b54263d1]"}
{"epoch_time":1737128121.897802894,"local_time":"2025-01-17T16:35:21+0100","hostname":"cta-tpsrv02-0","program":"cta-taped","log_level":"INFO","pid":18400,"tid":18400,"message":"Stack trace","drive_name":"VDSTK02","instance":"CI","sched_backend":"VFS","traceFrameNumber":1,"traceFrame":"/lib64/libctacommon.so.0(cta::exception::Exception::Exception(std::basic_string_view<char, std::char_traits<char> >, bool)+0x91) [0x7fd7b54273e9]"}
{"epoch_time":1737128121.897839785,"local_time":"2025-01-17T16:35:21+0100","hostname":"cta-tpsrv02-0","program":"cta-taped","log_level":"INFO","pid":18400,"tid":18400,"message":"Stack trace","drive_name":"VDSTK02","instance":"CI","sched_backend":"VFS","traceFrameNumber":2,"traceFrame":"/lib64/libctacommon.so.0(cta::exception::UserError::UserError(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)+0x53) [0x7fd7b54288dd]"}
{"epoch_time":1737128121.897868110,"local_time":"2025-01-17T16:35:21+0100","hostname":"cta-tpsrv02-0","program":"cta-taped","log_level":"INFO","pid":18400,"tid":18400,"message":"Stack trace","drive_name":"VDSTK02","instance":"CI","sched_backend":"VFS","traceFrameNumber":3,"traceFrame":"/lib64/libctacatalogue.so.0(cta::catalogue::RdbmsDriveStateCatalogue::updateTapeDriveStatus(cta::common::dataStructures::TapeDrive const&)+0x19ab) [0x7fd7bbbcf7a9]"}
{"epoch_time":1737128121.897905753,"local_time":"2025-01-17T16:35:21+0100","hostname":"cta-tpsrv02-0","program":"cta-taped","log_level":"INFO","pid":18400,"tid":18400,"message":"Stack trace","drive_name":"VDSTK02","instance":"CI","sched_backend":"VFS","traceFrameNumber":4,"traceFrame":"/lib64/libctacatalogue.so.0(+0x3caa96) [0x7fd7bbc75a96]"}
{"epoch_time":1737128121.897931743,"local_time":"2025-01-17T16:35:21+0100","hostname":"cta-tpsrv02-0","program":"cta-taped","log_level":"INFO","pid":18400,"tid":18400,"message":"Stack trace","drive_name":"VDSTK02","instance":"CI","sched_backend":"VFS","traceFrameNumber":5,"traceFrame":"/lib64/libctacatalogue.so.0(+0x3ccc93) [0x7fd7bbc77c93]"}
{"epoch_time":1737128121.897982777,"local_time":"2025-01-17T16:35:21+0100","hostname":"cta-tpsrv02-0","program":"cta-taped","log_level":"INFO","pid":18400,"tid":18400,"message":"Stack trace","drive_name":"VDSTK02","instance":"CI","sched_backend":"VFS","traceFrameNumber":6,"traceFrame":"/lib64/libctacatalogue.so.0(cta::catalogue::DriveStateCatalogueRetryWrapper::updateTapeDriveStatus(cta::common::dataStructures::TapeDrive const&)+0x4d) [0x7fd7bbc75afb]"}
{"epoch_time":1737128121.898011192,"local_time":"2025-01-17T16:35:21+0100","hostname":"cta-tpsrv02-0","program":"cta-taped","log_level":"INFO","pid":18400,"tid":18400,"message":"Stack trace","drive_name":"VDSTK02","instance":"CI","sched_backend":"VFS","traceFrameNumber":7,"traceFrame":"/lib64/libctacatalogue.so.0(cta::TapeDrivesCatalogueState::updateDriveStatus(cta::common::dataStructures::DriveInfo const&, cta::ReportDriveStatusInputs const&, cta::log::LogContext&)+0x47b) [0x7fd7bbb203d1]"}
{"epoch_time":1737128121.898048352,"local_time":"2025-01-17T16:35:21+0100","hostname":"cta-tpsrv02-0","program":"cta-taped","log_level":"INFO","pid":18400,"tid":18400,"message":"Stack trace","drive_name":"VDSTK02","instance":"CI","sched_backend":"VFS","traceFrameNumber":8,"traceFrame":"/lib64/libctacatalogue.so.0(cta::TapeDrivesCatalogueState::reportDriveStatus(cta::common::dataStructures::DriveInfo const&, cta::common::dataStructures::MountType, cta::common::dataStructures::DriveStatus, long, cta::log::LogContext&, unsigned long, unsigned long, unsigned long, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >)+0x180) [0x7fd7bbb1ff0e]"}
{"epoch_time":1737128121.898082305,"local_time":"2025-01-17T16:35:21+0100","hostname":"cta-tpsrv02-0","program":"cta-taped","log_level":"INFO","pid":18400,"tid":18400,"message":"Stack trace","drive_name":"VDSTK02","instance":"CI","sched_backend":"VFS","traceFrameNumber":9,"traceFrame":"/lib64/libctascheduler.so.0(cta::Scheduler::reportDriveStatus(cta::common::dataStructures::DriveInfo const&, cta::common::dataStructures::MountType, cta::common::dataStructures::DriveStatus, cta::log::LogContext&)+0x12f) [0x7fd7bd239a6d]"}