From 97581dee807db734b853f26020008d5c7683a447 Mon Sep 17 00:00:00 2001 From: Miguel Barros <miguel.veloso.barros@cern.ch> Date: Mon, 28 Feb 2022 14:42:08 +0100 Subject: [PATCH] Resolve "Remove deprecated tape drive tables." --- catalogue/5.0/oracle_catalogue_schema.sql | 63 +----- catalogue/5.0/postgres_catalogue_schema.sql | 63 +----- catalogue/5.0/sqlite_catalogue_schema.sql | 63 +----- catalogue/AllCatalogueSchema.hpp | 189 +----------------- catalogue/CatalogueTest.cpp | 28 +-- catalogue/DummyCatalogue.hpp | 21 +- catalogue/RdbmsCatalogue.cpp | 29 +-- catalogue/TapeDrivesCatalogueState.cpp | 5 +- catalogue/common_catalogue_schema.sql | 63 +----- .../migrations/liquibase/oracle/4.5to5.0.sql | 69 +++++++ common/dataStructures/TapeDrive.cpp | 17 +- common/dataStructures/TapeDrive.hpp | 6 +- xroot_plugins/XrdCtaDriveLs.hpp | 4 +- 13 files changed, 151 insertions(+), 469 deletions(-) diff --git a/catalogue/5.0/oracle_catalogue_schema.sql b/catalogue/5.0/oracle_catalogue_schema.sql index e5a9d1ab34..37bd86ea89 100644 --- a/catalogue/5.0/oracle_catalogue_schema.sql +++ b/catalogue/5.0/oracle_catalogue_schema.sql @@ -421,63 +421,6 @@ CREATE TABLE DRIVE_CONFIG ( CONSTRAINT DRIVE_CONFIG_DN_PK PRIMARY KEY(KEY_NAME, DRIVE_NAME) ); -CREATE TABLE TAPE_DRIVE ( - DRIVE_NAME VARCHAR2(100) CONSTRAINT DRIVE_STATE_DN_NN NOT NULL, - HOST VARCHAR2(100) CONSTRAINT DRIVE_STATE_H_NN NOT NULL, - LOGICAL_LIBRARY VARCHAR2(100) CONSTRAINT DRIVE_STATE_LL_NN NOT NULL, - SESSION_ID NUMERIC(20, 0), - BYTES_TRANSFERED_IN_SESSION NUMERIC(20, 0), - FILES_TRANSFERED_IN_SESSION NUMERIC(20, 0), - LATEST_BANDWIDTH VARCHAR2(100), - SESSION_START_TIME NUMERIC(20, 0), - MOUNT_START_TIME NUMERIC(20, 0), - TRANSFER_START_TIME NUMERIC(20, 0), - UNLOAD_START_TIME NUMERIC(20, 0), - UNMOUNT_START_TIME NUMERIC(20, 0), - DRAINING_START_TIME NUMERIC(20, 0), - DOWN_OR_UP_START_TIME NUMERIC(20, 0), - PROBE_START_TIME NUMERIC(20, 0), - CLEANUP_START_TIME NUMERIC(20, 0), - START_START_TIME NUMERIC(20, 0), - SHUTDOWN_TIME NUMERIC(20, 0), - MOUNT_TYPE NUMERIC(10, 0) CONSTRAINT DRIVE_STATE_MT_NN NOT NULL, - DRIVE_STATUS VARCHAR2(100) DEFAULT 'UNKNOWN' CONSTRAINT DRIVE_STATE_DS_NN NOT NULL, - DESIRED_UP CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DU_NN NOT NULL, - DESIRED_FORCE_DOWN CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DFD_NN NOT NULL, - REASON_UP_DOWN VARCHAR2(1000), - CURRENT_VID VARCHAR2(100), - CTA_VERSION VARCHAR2(100), - CURRENT_PRIORITY NUMERIC(20, 0), - CURRENT_ACTIVITY VARCHAR2(100), - CURRENT_ACTIVITY_WEIGHT VARCHAR2(100), - CURRENT_TAPE_POOL VARCHAR2(100), - NEXT_MOUNT_TYPE NUMERIC(10, 0), - NEXT_VID VARCHAR2(100), - NEXT_TAPE_POOL VARCHAR2(100), - NEXT_PRIORITY NUMERIC(20, 0), - NEXT_ACTIVITY VARCHAR2(100), - NEXT_ACTIVITY_WEIGHT VARCHAR2(100), - DEV_FILE_NAME VARCHAR2(100), - RAW_LIBRARY_SLOT VARCHAR2(100), - CURRENT_VO VARCHAR2(100), - NEXT_VO VARCHAR2(100), - USER_COMMENT VARCHAR2(1000), - CREATION_LOG_USER_NAME VARCHAR2(100), - CREATION_LOG_HOST_NAME VARCHAR2(100), - CREATION_LOG_TIME NUMERIC(20, 0), - LAST_UPDATE_USER_NAME VARCHAR2(100), - LAST_UPDATE_HOST_NAME VARCHAR2(100), - LAST_UPDATE_TIME NUMERIC(20, 0), - DISK_SYSTEM_NAME VARCHAR2(100) CONSTRAINT DRIVE_STATE_DSN_NN NOT NULL, - RESERVED_BYTES NUMERIC(20, 0) CONSTRAINT DRIVE_STATE_RB_NN NOT NULL, - CONSTRAINT DRIVE_STATE_DN_PK PRIMARY KEY(DRIVE_NAME), - CONSTRAINT DRIVE_STATE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1')), - CONSTRAINT DRIVE_STATE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1')), - CONSTRAINT DRIVE_STATE_DS_STRING_CK CHECK(DRIVE_STATUS IN ('DOWN', 'UP', 'PROBING', 'STARTING', - 'MOUNTING', 'TRANSFERING', 'UNLOADING', 'UNMOUNTING', 'DRAININGTODISK', 'CLEANINGUP', 'SHUTDOWN', - 'UNKNOWN')) -); - CREATE TABLE DRIVE_STATE ( DRIVE_NAME VARCHAR2(100) CONSTRAINT DRIVE_DN_NN NOT NULL, HOST VARCHAR2(100) CONSTRAINT DRIVE_H_NN NOT NULL, @@ -523,9 +466,9 @@ CREATE TABLE DRIVE_STATE ( LAST_UPDATE_USER_NAME VARCHAR2(100), LAST_UPDATE_HOST_NAME VARCHAR2(100), LAST_UPDATE_TIME NUMERIC(20, 0), - DISK_SYSTEM_NAME VARCHAR2(100) CONSTRAINT DRIVE_DSN_NN NOT NULL, - RESERVED_BYTES NUMERIC(20, 0) CONSTRAINT DRIVE_RB_NN NOT NULL, - RESERVATION_SESSION_ID NUMERIC(20, 0) CONSTRAINT DRIVE_RSI_NN NOT NULL, + DISK_SYSTEM_NAME VARCHAR2(100), + RESERVED_BYTES NUMERIC(20, 0), + RESERVATION_SESSION_ID NUMERIC(20, 0), CONSTRAINT DRIVE_DN_PK PRIMARY KEY(DRIVE_NAME), CONSTRAINT DRIVE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1')), CONSTRAINT DRIVE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1')), diff --git a/catalogue/5.0/postgres_catalogue_schema.sql b/catalogue/5.0/postgres_catalogue_schema.sql index 813a1e25ba..e7b5434a8c 100644 --- a/catalogue/5.0/postgres_catalogue_schema.sql +++ b/catalogue/5.0/postgres_catalogue_schema.sql @@ -403,63 +403,6 @@ CREATE TABLE DRIVE_CONFIG ( CONSTRAINT DRIVE_CONFIG_DN_PK PRIMARY KEY(KEY_NAME, DRIVE_NAME) ); -CREATE TABLE TAPE_DRIVE ( - DRIVE_NAME VARCHAR(100) CONSTRAINT DRIVE_STATE_DN_NN NOT NULL, - HOST VARCHAR(100) CONSTRAINT DRIVE_STATE_H_NN NOT NULL, - LOGICAL_LIBRARY VARCHAR(100) CONSTRAINT DRIVE_STATE_LL_NN NOT NULL, - SESSION_ID NUMERIC(20, 0), - BYTES_TRANSFERED_IN_SESSION NUMERIC(20, 0), - FILES_TRANSFERED_IN_SESSION NUMERIC(20, 0), - LATEST_BANDWIDTH VARCHAR(100), - SESSION_START_TIME NUMERIC(20, 0), - MOUNT_START_TIME NUMERIC(20, 0), - TRANSFER_START_TIME NUMERIC(20, 0), - UNLOAD_START_TIME NUMERIC(20, 0), - UNMOUNT_START_TIME NUMERIC(20, 0), - DRAINING_START_TIME NUMERIC(20, 0), - DOWN_OR_UP_START_TIME NUMERIC(20, 0), - PROBE_START_TIME NUMERIC(20, 0), - CLEANUP_START_TIME NUMERIC(20, 0), - START_START_TIME NUMERIC(20, 0), - SHUTDOWN_TIME NUMERIC(20, 0), - MOUNT_TYPE NUMERIC(10, 0) CONSTRAINT DRIVE_STATE_MT_NN NOT NULL, - DRIVE_STATUS VARCHAR(100) DEFAULT 'UNKNOWN' CONSTRAINT DRIVE_STATE_DS_NN NOT NULL, - DESIRED_UP CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DU_NN NOT NULL, - DESIRED_FORCE_DOWN CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DFD_NN NOT NULL, - REASON_UP_DOWN VARCHAR(1000), - CURRENT_VID VARCHAR(100), - CTA_VERSION VARCHAR(100), - CURRENT_PRIORITY NUMERIC(20, 0), - CURRENT_ACTIVITY VARCHAR(100), - CURRENT_ACTIVITY_WEIGHT VARCHAR(100), - CURRENT_TAPE_POOL VARCHAR(100), - NEXT_MOUNT_TYPE NUMERIC(10, 0), - NEXT_VID VARCHAR(100), - NEXT_TAPE_POOL VARCHAR(100), - NEXT_PRIORITY NUMERIC(20, 0), - NEXT_ACTIVITY VARCHAR(100), - NEXT_ACTIVITY_WEIGHT VARCHAR(100), - DEV_FILE_NAME VARCHAR(100), - RAW_LIBRARY_SLOT VARCHAR(100), - CURRENT_VO VARCHAR(100), - NEXT_VO VARCHAR(100), - USER_COMMENT VARCHAR(1000), - CREATION_LOG_USER_NAME VARCHAR(100), - CREATION_LOG_HOST_NAME VARCHAR(100), - CREATION_LOG_TIME NUMERIC(20, 0), - LAST_UPDATE_USER_NAME VARCHAR(100), - LAST_UPDATE_HOST_NAME VARCHAR(100), - LAST_UPDATE_TIME NUMERIC(20, 0), - DISK_SYSTEM_NAME VARCHAR(100) CONSTRAINT DRIVE_STATE_DSN_NN NOT NULL, - RESERVED_BYTES NUMERIC(20, 0) CONSTRAINT DRIVE_STATE_RB_NN NOT NULL, - CONSTRAINT DRIVE_STATE_DN_PK PRIMARY KEY(DRIVE_NAME), - CONSTRAINT DRIVE_STATE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1')), - CONSTRAINT DRIVE_STATE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1')), - CONSTRAINT DRIVE_STATE_DS_STRING_CK CHECK(DRIVE_STATUS IN ('DOWN', 'UP', 'PROBING', 'STARTING', - 'MOUNTING', 'TRANSFERING', 'UNLOADING', 'UNMOUNTING', 'DRAININGTODISK', 'CLEANINGUP', 'SHUTDOWN', - 'UNKNOWN')) -); - CREATE TABLE DRIVE_STATE ( DRIVE_NAME VARCHAR(100) CONSTRAINT DRIVE_DN_NN NOT NULL, HOST VARCHAR(100) CONSTRAINT DRIVE_H_NN NOT NULL, @@ -505,9 +448,9 @@ CREATE TABLE DRIVE_STATE ( LAST_UPDATE_USER_NAME VARCHAR(100), LAST_UPDATE_HOST_NAME VARCHAR(100), LAST_UPDATE_TIME NUMERIC(20, 0), - DISK_SYSTEM_NAME VARCHAR(100) CONSTRAINT DRIVE_DSN_NN NOT NULL, - RESERVED_BYTES NUMERIC(20, 0) CONSTRAINT DRIVE_RB_NN NOT NULL, - RESERVATION_SESSION_ID NUMERIC(20, 0) CONSTRAINT DRIVE_RSI_NN NOT NULL, + DISK_SYSTEM_NAME VARCHAR(100), + RESERVED_BYTES NUMERIC(20, 0), + RESERVATION_SESSION_ID NUMERIC(20, 0), CONSTRAINT DRIVE_DN_PK PRIMARY KEY(DRIVE_NAME), CONSTRAINT DRIVE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1')), CONSTRAINT DRIVE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1')), diff --git a/catalogue/5.0/sqlite_catalogue_schema.sql b/catalogue/5.0/sqlite_catalogue_schema.sql index 624b7fc78b..14dc362a62 100644 --- a/catalogue/5.0/sqlite_catalogue_schema.sql +++ b/catalogue/5.0/sqlite_catalogue_schema.sql @@ -375,63 +375,6 @@ CREATE TABLE DRIVE_CONFIG ( CONSTRAINT DRIVE_CONFIG_DN_PK PRIMARY KEY(KEY_NAME, DRIVE_NAME) ); -CREATE TABLE TAPE_DRIVE ( - DRIVE_NAME VARCHAR(100) CONSTRAINT DRIVE_STATE_DN_NN NOT NULL, - HOST VARCHAR(100) CONSTRAINT DRIVE_STATE_H_NN NOT NULL, - LOGICAL_LIBRARY VARCHAR(100) CONSTRAINT DRIVE_STATE_LL_NN NOT NULL, - SESSION_ID INTEGER, - BYTES_TRANSFERED_IN_SESSION INTEGER, - FILES_TRANSFERED_IN_SESSION INTEGER, - LATEST_BANDWIDTH VARCHAR(100), - SESSION_START_TIME INTEGER, - MOUNT_START_TIME INTEGER, - TRANSFER_START_TIME INTEGER, - UNLOAD_START_TIME INTEGER, - UNMOUNT_START_TIME INTEGER, - DRAINING_START_TIME INTEGER, - DOWN_OR_UP_START_TIME INTEGER, - PROBE_START_TIME INTEGER, - CLEANUP_START_TIME INTEGER, - START_START_TIME INTEGER, - SHUTDOWN_TIME INTEGER, - MOUNT_TYPE INTEGER CONSTRAINT DRIVE_STATE_MT_NN NOT NULL, - DRIVE_STATUS VARCHAR(100) DEFAULT 'UNKNOWN' CONSTRAINT DRIVE_STATE_DS_NN NOT NULL, - DESIRED_UP CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DU_NN NOT NULL, - DESIRED_FORCE_DOWN CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DFD_NN NOT NULL, - REASON_UP_DOWN VARCHAR(1000), - CURRENT_VID VARCHAR(100), - CTA_VERSION VARCHAR(100), - CURRENT_PRIORITY INTEGER, - CURRENT_ACTIVITY VARCHAR(100), - CURRENT_ACTIVITY_WEIGHT VARCHAR(100), - CURRENT_TAPE_POOL VARCHAR(100), - NEXT_MOUNT_TYPE INTEGER, - NEXT_VID VARCHAR(100), - NEXT_TAPE_POOL VARCHAR(100), - NEXT_PRIORITY INTEGER, - NEXT_ACTIVITY VARCHAR(100), - NEXT_ACTIVITY_WEIGHT VARCHAR(100), - DEV_FILE_NAME VARCHAR(100), - RAW_LIBRARY_SLOT VARCHAR(100), - CURRENT_VO VARCHAR(100), - NEXT_VO VARCHAR(100), - USER_COMMENT VARCHAR(1000), - CREATION_LOG_USER_NAME VARCHAR(100), - CREATION_LOG_HOST_NAME VARCHAR(100), - CREATION_LOG_TIME INTEGER, - LAST_UPDATE_USER_NAME VARCHAR(100), - LAST_UPDATE_HOST_NAME VARCHAR(100), - LAST_UPDATE_TIME INTEGER, - DISK_SYSTEM_NAME VARCHAR(100) CONSTRAINT DRIVE_STATE_DSN_NN NOT NULL, - RESERVED_BYTES INTEGER CONSTRAINT DRIVE_STATE_RB_NN NOT NULL, - CONSTRAINT DRIVE_STATE_DN_PK PRIMARY KEY(DRIVE_NAME), - CONSTRAINT DRIVE_STATE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1')), - CONSTRAINT DRIVE_STATE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1')), - CONSTRAINT DRIVE_STATE_DS_STRING_CK CHECK(DRIVE_STATUS IN ('DOWN', 'UP', 'PROBING', 'STARTING', - 'MOUNTING', 'TRANSFERING', 'UNLOADING', 'UNMOUNTING', 'DRAININGTODISK', 'CLEANINGUP', 'SHUTDOWN', - 'UNKNOWN')) -); - CREATE TABLE DRIVE_STATE ( DRIVE_NAME VARCHAR(100) CONSTRAINT DRIVE_DN_NN NOT NULL, HOST VARCHAR(100) CONSTRAINT DRIVE_H_NN NOT NULL, @@ -477,9 +420,9 @@ CREATE TABLE DRIVE_STATE ( LAST_UPDATE_USER_NAME VARCHAR(100), LAST_UPDATE_HOST_NAME VARCHAR(100), LAST_UPDATE_TIME INTEGER, - DISK_SYSTEM_NAME VARCHAR(100) CONSTRAINT DRIVE_DSN_NN NOT NULL, - RESERVED_BYTES INTEGER CONSTRAINT DRIVE_RB_NN NOT NULL, - RESERVATION_SESSION_ID INTEGER CONSTRAINT DRIVE_RSI_NN NOT NULL, + DISK_SYSTEM_NAME VARCHAR(100), + RESERVED_BYTES INTEGER, + RESERVATION_SESSION_ID INTEGER, CONSTRAINT DRIVE_DN_PK PRIMARY KEY(DRIVE_NAME), CONSTRAINT DRIVE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1')), CONSTRAINT DRIVE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1')), diff --git a/catalogue/AllCatalogueSchema.hpp b/catalogue/AllCatalogueSchema.hpp index ad52a5c523..8ebf83c13d 100644 --- a/catalogue/AllCatalogueSchema.hpp +++ b/catalogue/AllCatalogueSchema.hpp @@ -15222,63 +15222,6 @@ namespace catalogue{ " CONSTRAINT DRIVE_CONFIG_DN_PK PRIMARY KEY(KEY_NAME, DRIVE_NAME)" ");" "" - "CREATE TABLE TAPE_DRIVE (" - " DRIVE_NAME VARCHAR2(100) CONSTRAINT DRIVE_STATE_DN_NN NOT NULL," - " HOST VARCHAR2(100) CONSTRAINT DRIVE_STATE_H_NN NOT NULL," - " LOGICAL_LIBRARY VARCHAR2(100) CONSTRAINT DRIVE_STATE_LL_NN NOT NULL," - " SESSION_ID NUMERIC(20, 0)," - " BYTES_TRANSFERED_IN_SESSION NUMERIC(20, 0)," - " FILES_TRANSFERED_IN_SESSION NUMERIC(20, 0)," - " LATEST_BANDWIDTH VARCHAR2(100)," - " SESSION_START_TIME NUMERIC(20, 0)," - " MOUNT_START_TIME NUMERIC(20, 0)," - " TRANSFER_START_TIME NUMERIC(20, 0)," - " UNLOAD_START_TIME NUMERIC(20, 0)," - " UNMOUNT_START_TIME NUMERIC(20, 0)," - " DRAINING_START_TIME NUMERIC(20, 0)," - " DOWN_OR_UP_START_TIME NUMERIC(20, 0)," - " PROBE_START_TIME NUMERIC(20, 0)," - " CLEANUP_START_TIME NUMERIC(20, 0)," - " START_START_TIME NUMERIC(20, 0)," - " SHUTDOWN_TIME NUMERIC(20, 0)," - " MOUNT_TYPE NUMERIC(10, 0) CONSTRAINT DRIVE_STATE_MT_NN NOT NULL," - " DRIVE_STATUS VARCHAR2(100) DEFAULT 'UNKNOWN' CONSTRAINT DRIVE_STATE_DS_NN NOT NULL," - " DESIRED_UP CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DU_NN NOT NULL," - " DESIRED_FORCE_DOWN CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DFD_NN NOT NULL," - " REASON_UP_DOWN VARCHAR2(1000)," - " CURRENT_VID VARCHAR2(100)," - " CTA_VERSION VARCHAR2(100)," - " CURRENT_PRIORITY NUMERIC(20, 0)," - " CURRENT_ACTIVITY VARCHAR2(100)," - " CURRENT_ACTIVITY_WEIGHT VARCHAR2(100)," - " CURRENT_TAPE_POOL VARCHAR2(100)," - " NEXT_MOUNT_TYPE NUMERIC(10, 0)," - " NEXT_VID VARCHAR2(100)," - " NEXT_TAPE_POOL VARCHAR2(100)," - " NEXT_PRIORITY NUMERIC(20, 0)," - " NEXT_ACTIVITY VARCHAR2(100)," - " NEXT_ACTIVITY_WEIGHT VARCHAR2(100)," - " DEV_FILE_NAME VARCHAR2(100)," - " RAW_LIBRARY_SLOT VARCHAR2(100)," - " CURRENT_VO VARCHAR2(100)," - " NEXT_VO VARCHAR2(100)," - " USER_COMMENT VARCHAR2(1000)," - " CREATION_LOG_USER_NAME VARCHAR2(100)," - " CREATION_LOG_HOST_NAME VARCHAR2(100)," - " CREATION_LOG_TIME NUMERIC(20, 0)," - " LAST_UPDATE_USER_NAME VARCHAR2(100)," - " LAST_UPDATE_HOST_NAME VARCHAR2(100)," - " LAST_UPDATE_TIME NUMERIC(20, 0)," - " DISK_SYSTEM_NAME VARCHAR2(100) CONSTRAINT DRIVE_STATE_DSN_NN NOT NULL," - " RESERVED_BYTES NUMERIC(20, 0) CONSTRAINT DRIVE_STATE_RB_NN NOT NULL," - " CONSTRAINT DRIVE_STATE_DN_PK PRIMARY KEY(DRIVE_NAME)," - " CONSTRAINT DRIVE_STATE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1'))," - " CONSTRAINT DRIVE_STATE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1'))," - " CONSTRAINT DRIVE_STATE_DS_STRING_CK CHECK(DRIVE_STATUS IN ('DOWN', 'UP', 'PROBING', 'STARTING'," - " 'MOUNTING', 'TRANSFERING', 'UNLOADING', 'UNMOUNTING', 'DRAININGTODISK', 'CLEANINGUP', 'SHUTDOWN'," - " 'UNKNOWN'))" - ");" - "" "CREATE TABLE DRIVE_STATE (" " DRIVE_NAME VARCHAR2(100) CONSTRAINT DRIVE_DN_NN NOT NULL," " HOST VARCHAR2(100) CONSTRAINT DRIVE_H_NN NOT NULL," @@ -15324,9 +15267,9 @@ namespace catalogue{ " LAST_UPDATE_USER_NAME VARCHAR2(100)," " LAST_UPDATE_HOST_NAME VARCHAR2(100)," " LAST_UPDATE_TIME NUMERIC(20, 0)," - " DISK_SYSTEM_NAME VARCHAR2(100) CONSTRAINT DRIVE_DSN_NN NOT NULL," - " RESERVED_BYTES NUMERIC(20, 0) CONSTRAINT DRIVE_RB_NN NOT NULL," - " RESERVATION_SESSION_ID NUMERIC(20, 0) CONSTRAINT DRIVE_RSI_NN NOT NULL," + " DISK_SYSTEM_NAME VARCHAR2(100)," + " RESERVED_BYTES NUMERIC(20, 0)," + " RESERVATION_SESSION_ID NUMERIC(20, 0)," " CONSTRAINT DRIVE_DN_PK PRIMARY KEY(DRIVE_NAME)," " CONSTRAINT DRIVE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1'))," " CONSTRAINT DRIVE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1'))," @@ -15727,63 +15670,6 @@ namespace catalogue{ " CONSTRAINT DRIVE_CONFIG_DN_PK PRIMARY KEY(KEY_NAME, DRIVE_NAME)" ");" "" - "CREATE TABLE TAPE_DRIVE (" - " DRIVE_NAME VARCHAR(100) CONSTRAINT DRIVE_STATE_DN_NN NOT NULL," - " HOST VARCHAR(100) CONSTRAINT DRIVE_STATE_H_NN NOT NULL," - " LOGICAL_LIBRARY VARCHAR(100) CONSTRAINT DRIVE_STATE_LL_NN NOT NULL," - " SESSION_ID INTEGER," - " BYTES_TRANSFERED_IN_SESSION INTEGER," - " FILES_TRANSFERED_IN_SESSION INTEGER," - " LATEST_BANDWIDTH VARCHAR(100)," - " SESSION_START_TIME INTEGER," - " MOUNT_START_TIME INTEGER," - " TRANSFER_START_TIME INTEGER," - " UNLOAD_START_TIME INTEGER," - " UNMOUNT_START_TIME INTEGER," - " DRAINING_START_TIME INTEGER," - " DOWN_OR_UP_START_TIME INTEGER," - " PROBE_START_TIME INTEGER," - " CLEANUP_START_TIME INTEGER," - " START_START_TIME INTEGER," - " SHUTDOWN_TIME INTEGER," - " MOUNT_TYPE INTEGER CONSTRAINT DRIVE_STATE_MT_NN NOT NULL," - " DRIVE_STATUS VARCHAR(100) DEFAULT 'UNKNOWN' CONSTRAINT DRIVE_STATE_DS_NN NOT NULL," - " DESIRED_UP CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DU_NN NOT NULL," - " DESIRED_FORCE_DOWN CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DFD_NN NOT NULL," - " REASON_UP_DOWN VARCHAR(1000)," - " CURRENT_VID VARCHAR(100)," - " CTA_VERSION VARCHAR(100)," - " CURRENT_PRIORITY INTEGER," - " CURRENT_ACTIVITY VARCHAR(100)," - " CURRENT_ACTIVITY_WEIGHT VARCHAR(100)," - " CURRENT_TAPE_POOL VARCHAR(100)," - " NEXT_MOUNT_TYPE INTEGER," - " NEXT_VID VARCHAR(100)," - " NEXT_TAPE_POOL VARCHAR(100)," - " NEXT_PRIORITY INTEGER," - " NEXT_ACTIVITY VARCHAR(100)," - " NEXT_ACTIVITY_WEIGHT VARCHAR(100)," - " DEV_FILE_NAME VARCHAR(100)," - " RAW_LIBRARY_SLOT VARCHAR(100)," - " CURRENT_VO VARCHAR(100)," - " NEXT_VO VARCHAR(100)," - " USER_COMMENT VARCHAR(1000)," - " CREATION_LOG_USER_NAME VARCHAR(100)," - " CREATION_LOG_HOST_NAME VARCHAR(100)," - " CREATION_LOG_TIME INTEGER," - " LAST_UPDATE_USER_NAME VARCHAR(100)," - " LAST_UPDATE_HOST_NAME VARCHAR(100)," - " LAST_UPDATE_TIME INTEGER," - " DISK_SYSTEM_NAME VARCHAR(100) CONSTRAINT DRIVE_STATE_DSN_NN NOT NULL," - " RESERVED_BYTES INTEGER CONSTRAINT DRIVE_STATE_RB_NN NOT NULL," - " CONSTRAINT DRIVE_STATE_DN_PK PRIMARY KEY(DRIVE_NAME)," - " CONSTRAINT DRIVE_STATE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1'))," - " CONSTRAINT DRIVE_STATE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1'))," - " CONSTRAINT DRIVE_STATE_DS_STRING_CK CHECK(DRIVE_STATUS IN ('DOWN', 'UP', 'PROBING', 'STARTING'," - " 'MOUNTING', 'TRANSFERING', 'UNLOADING', 'UNMOUNTING', 'DRAININGTODISK', 'CLEANINGUP', 'SHUTDOWN'," - " 'UNKNOWN'))" - ");" - "" "CREATE TABLE DRIVE_STATE (" " DRIVE_NAME VARCHAR(100) CONSTRAINT DRIVE_DN_NN NOT NULL," " HOST VARCHAR(100) CONSTRAINT DRIVE_H_NN NOT NULL," @@ -15829,9 +15715,9 @@ namespace catalogue{ " LAST_UPDATE_USER_NAME VARCHAR(100)," " LAST_UPDATE_HOST_NAME VARCHAR(100)," " LAST_UPDATE_TIME INTEGER," - " DISK_SYSTEM_NAME VARCHAR(100) CONSTRAINT DRIVE_DSN_NN NOT NULL," - " RESERVED_BYTES INTEGER CONSTRAINT DRIVE_RB_NN NOT NULL," - " RESERVATION_SESSION_ID INTEGER CONSTRAINT DRIVE_RSI_NN NOT NULL," + " DISK_SYSTEM_NAME VARCHAR(100)," + " RESERVED_BYTES INTEGER," + " RESERVATION_SESSION_ID INTEGER," " CONSTRAINT DRIVE_DN_PK PRIMARY KEY(DRIVE_NAME)," " CONSTRAINT DRIVE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1'))," " CONSTRAINT DRIVE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1'))," @@ -16257,63 +16143,6 @@ namespace catalogue{ " CONSTRAINT DRIVE_CONFIG_DN_PK PRIMARY KEY(KEY_NAME, DRIVE_NAME)" ");" "" - "CREATE TABLE TAPE_DRIVE (" - " DRIVE_NAME VARCHAR(100) CONSTRAINT DRIVE_STATE_DN_NN NOT NULL," - " HOST VARCHAR(100) CONSTRAINT DRIVE_STATE_H_NN NOT NULL," - " LOGICAL_LIBRARY VARCHAR(100) CONSTRAINT DRIVE_STATE_LL_NN NOT NULL," - " SESSION_ID NUMERIC(20, 0)," - " BYTES_TRANSFERED_IN_SESSION NUMERIC(20, 0)," - " FILES_TRANSFERED_IN_SESSION NUMERIC(20, 0)," - " LATEST_BANDWIDTH VARCHAR(100)," - " SESSION_START_TIME NUMERIC(20, 0)," - " MOUNT_START_TIME NUMERIC(20, 0)," - " TRANSFER_START_TIME NUMERIC(20, 0)," - " UNLOAD_START_TIME NUMERIC(20, 0)," - " UNMOUNT_START_TIME NUMERIC(20, 0)," - " DRAINING_START_TIME NUMERIC(20, 0)," - " DOWN_OR_UP_START_TIME NUMERIC(20, 0)," - " PROBE_START_TIME NUMERIC(20, 0)," - " CLEANUP_START_TIME NUMERIC(20, 0)," - " START_START_TIME NUMERIC(20, 0)," - " SHUTDOWN_TIME NUMERIC(20, 0)," - " MOUNT_TYPE NUMERIC(10, 0) CONSTRAINT DRIVE_STATE_MT_NN NOT NULL," - " DRIVE_STATUS VARCHAR(100) DEFAULT 'UNKNOWN' CONSTRAINT DRIVE_STATE_DS_NN NOT NULL," - " DESIRED_UP CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DU_NN NOT NULL," - " DESIRED_FORCE_DOWN CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DFD_NN NOT NULL," - " REASON_UP_DOWN VARCHAR(1000)," - " CURRENT_VID VARCHAR(100)," - " CTA_VERSION VARCHAR(100)," - " CURRENT_PRIORITY NUMERIC(20, 0)," - " CURRENT_ACTIVITY VARCHAR(100)," - " CURRENT_ACTIVITY_WEIGHT VARCHAR(100)," - " CURRENT_TAPE_POOL VARCHAR(100)," - " NEXT_MOUNT_TYPE NUMERIC(10, 0)," - " NEXT_VID VARCHAR(100)," - " NEXT_TAPE_POOL VARCHAR(100)," - " NEXT_PRIORITY NUMERIC(20, 0)," - " NEXT_ACTIVITY VARCHAR(100)," - " NEXT_ACTIVITY_WEIGHT VARCHAR(100)," - " DEV_FILE_NAME VARCHAR(100)," - " RAW_LIBRARY_SLOT VARCHAR(100)," - " CURRENT_VO VARCHAR(100)," - " NEXT_VO VARCHAR(100)," - " USER_COMMENT VARCHAR(1000)," - " CREATION_LOG_USER_NAME VARCHAR(100)," - " CREATION_LOG_HOST_NAME VARCHAR(100)," - " CREATION_LOG_TIME NUMERIC(20, 0)," - " LAST_UPDATE_USER_NAME VARCHAR(100)," - " LAST_UPDATE_HOST_NAME VARCHAR(100)," - " LAST_UPDATE_TIME NUMERIC(20, 0)," - " DISK_SYSTEM_NAME VARCHAR(100) CONSTRAINT DRIVE_STATE_DSN_NN NOT NULL," - " RESERVED_BYTES NUMERIC(20, 0) CONSTRAINT DRIVE_STATE_RB_NN NOT NULL," - " CONSTRAINT DRIVE_STATE_DN_PK PRIMARY KEY(DRIVE_NAME)," - " CONSTRAINT DRIVE_STATE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1'))," - " CONSTRAINT DRIVE_STATE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1'))," - " CONSTRAINT DRIVE_STATE_DS_STRING_CK CHECK(DRIVE_STATUS IN ('DOWN', 'UP', 'PROBING', 'STARTING'," - " 'MOUNTING', 'TRANSFERING', 'UNLOADING', 'UNMOUNTING', 'DRAININGTODISK', 'CLEANINGUP', 'SHUTDOWN'," - " 'UNKNOWN'))" - ");" - "" "CREATE TABLE DRIVE_STATE (" " DRIVE_NAME VARCHAR(100) CONSTRAINT DRIVE_DN_NN NOT NULL," " HOST VARCHAR(100) CONSTRAINT DRIVE_H_NN NOT NULL," @@ -16359,9 +16188,9 @@ namespace catalogue{ " LAST_UPDATE_USER_NAME VARCHAR(100)," " LAST_UPDATE_HOST_NAME VARCHAR(100)," " LAST_UPDATE_TIME NUMERIC(20, 0)," - " DISK_SYSTEM_NAME VARCHAR(100) CONSTRAINT DRIVE_DSN_NN NOT NULL," - " RESERVED_BYTES NUMERIC(20, 0) CONSTRAINT DRIVE_RB_NN NOT NULL," - " RESERVATION_SESSION_ID NUMERIC(20, 0) CONSTRAINT DRIVE_RSI_NN NOT NULL," + " DISK_SYSTEM_NAME VARCHAR(100)," + " RESERVED_BYTES NUMERIC(20, 0)," + " RESERVATION_SESSION_ID NUMERIC(20, 0)," " CONSTRAINT DRIVE_DN_PK PRIMARY KEY(DRIVE_NAME)," " CONSTRAINT DRIVE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1'))," " CONSTRAINT DRIVE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1'))," diff --git a/catalogue/CatalogueTest.cpp b/catalogue/CatalogueTest.cpp index 640d7fdee2..1ae8f83a61 100644 --- a/catalogue/CatalogueTest.cpp +++ b/catalogue/CatalogueTest.cpp @@ -229,9 +229,6 @@ namespace { tapeDrive.driveStatus = cta::common::dataStructures::DriveStatus::Up; tapeDrive.desiredUp = false; tapeDrive.desiredForceDown = false; - tapeDrive.diskSystemName = "dummyDiskSystemName"; - tapeDrive.reservedBytes = 694498291384; - tapeDrive.reservationSessionId = 0; return tapeDrive; } @@ -17542,8 +17539,9 @@ TEST_P(cta_catalogue_CatalogueTest, updateTapeDriveStatusSameAsPrevious) { ASSERT_FALSE(storedTapeDrive.value().bytesTransferedInSession); ASSERT_FALSE(storedTapeDrive.value().filesTransferedInSession); // Disk reservations are not updated by updateTapeDriveStatus() - ASSERT_EQ(tapeDrive.diskSystemName, storedTapeDrive.value().diskSystemName); - ASSERT_EQ(tapeDrive.reservedBytes, storedTapeDrive.value().reservedBytes); + ASSERT_FALSE(storedTapeDrive.value().diskSystemName); + ASSERT_FALSE(storedTapeDrive.value().reservedBytes); + ASSERT_FALSE(storedTapeDrive.value().reservationSessionId); m_catalogue->deleteTapeDrive(tapeDrive.driveName); } @@ -17592,8 +17590,9 @@ TEST_P(cta_catalogue_CatalogueTest, updateTapeDriveStatusSameTransferingAsPrevio ASSERT_EQ(inputs.byteTransferred, storedTapeDrive.value().bytesTransferedInSession.value()); ASSERT_EQ(inputs.filesTransferred, storedTapeDrive.value().filesTransferedInSession.value()); // It will keep names and bytes, because it isn't in state UP - ASSERT_NE(storedTapeDrive.value().reservedBytes, 0); - ASSERT_NE(storedTapeDrive.value().diskSystemName, ""); + ASSERT_FALSE(storedTapeDrive.value().reservedBytes); + ASSERT_FALSE(storedTapeDrive.value().reservationSessionId); + ASSERT_FALSE(storedTapeDrive.value().diskSystemName); ASSERT_EQ(storedTapeDrive.value().sessionElapsedTime.value(), inputs.reportTime - tapeDrive.sessionStartTime.value()); // Check elapsed time m_catalogue->deleteTapeDrive(tapeDrive.driveName); @@ -17787,8 +17786,9 @@ TEST_P(cta_catalogue_CatalogueTest, updateTapeDriveStatusUpCleanSpaceReservation tapeDrivesState->updateDriveStatus(driveInfo, inputs, dummyLc); } const auto storedTapeDrive = m_catalogue->getTapeDrive(tapeDrive.driveName); - ASSERT_TRUE(storedTapeDrive.value().diskSystemName.empty()); - ASSERT_EQ(storedTapeDrive.value().reservedBytes, 0); + ASSERT_FALSE(storedTapeDrive.value().diskSystemName); + ASSERT_FALSE(storedTapeDrive.value().reservedBytes); + ASSERT_FALSE(storedTapeDrive.value().reservationSessionId); m_catalogue->deleteTapeDrive(tapeDrive.driveName); } @@ -17799,8 +17799,9 @@ TEST_P(cta_catalogue_CatalogueTest, updateTapeDriveStatusUpDontCleanSpaceReserva const std::string tapeDriveName = "VDSTK11"; auto tapeDrive = getTapeDriveWithMandatoryElements(tapeDriveName); tapeDrive.driveStatus = common::dataStructures::DriveStatus::Down; // To force a change of state - tapeDrive.diskSystemName = ""; - tapeDrive.reservedBytes = 123456789; + tapeDrive.diskSystemName = nullopt_t(); + tapeDrive.reservedBytes = nullopt_t(); + tapeDrive.reservationSessionId = nullopt_t(); m_catalogue->createTapeDrive(tapeDrive); ReportDriveStatusInputs inputs; @@ -17825,8 +17826,9 @@ TEST_P(cta_catalogue_CatalogueTest, updateTapeDriveStatusUpDontCleanSpaceReserva tapeDrivesState->updateDriveStatus(driveInfo, inputs, dummyLc); } const auto storedTapeDrive = m_catalogue->getTapeDrive(tapeDrive.driveName); - ASSERT_TRUE(storedTapeDrive.value().diskSystemName.empty()); - ASSERT_EQ(storedTapeDrive.value().reservedBytes, tapeDrive.reservedBytes); + ASSERT_FALSE(storedTapeDrive.value().diskSystemName); + ASSERT_FALSE(storedTapeDrive.value().reservedBytes); + ASSERT_FALSE(storedTapeDrive.value().reservationSessionId); m_catalogue->deleteTapeDrive(tapeDrive.driveName); } diff --git a/catalogue/DummyCatalogue.hpp b/catalogue/DummyCatalogue.hpp index 451417e802..57dff49450 100644 --- a/catalogue/DummyCatalogue.hpp +++ b/catalogue/DummyCatalogue.hpp @@ -321,8 +321,10 @@ public: const auto tdNames = getTapeDriveNames(); for (const auto& driveName : tdNames) { const auto tdStatus = getTapeDrive(driveName); - //no need to check key, operator[] initializes missing values at zero for scalar types - ret[tdStatus.value().diskSystemName] += tdStatus.value().reservedBytes; + if (tdStatus.value().diskSystemName) { + //no need to check key, operator[] initializes missing values at zero for scalar types + ret[tdStatus.value().diskSystemName.value()] += tdStatus.value().reservedBytes.value(); + } } return ret; } @@ -340,12 +342,18 @@ public: auto tdStatus = getTapeDrive(driveName); if (!tdStatus) return; + if (!tdStatus.value().reservationSessionId) { + tdStatus.value().reservationSessionId = mountId; + tdStatus.value().reservedBytes = 0; + } + if (tdStatus.value().reservationSessionId != mountId) { - return; + tdStatus.value().reservationSessionId = mountId; + tdStatus.value().reservedBytes = 0; } tdStatus.value().diskSystemName = diskSpaceReservation.begin()->first; - tdStatus.value().reservedBytes += diskSpaceReservation.begin()->second; + tdStatus.value().reservedBytes.value() += diskSpaceReservation.begin()->second; modifyTapeDrive(tdStatus.value()); } @@ -362,6 +370,9 @@ public: auto tdStatus = getTapeDrive(driveName); if (!tdStatus) return; + if (!tdStatus.value().reservationSessionId) { + return; + } if (tdStatus.value().reservationSessionId != mountId) { return; } @@ -369,7 +380,7 @@ public: if (bytes > tdStatus.value().reservedBytes) throw NegativeDiskSpaceReservationReached( "In DriveState::subtractDiskSpaceReservation(): we would reach a negative reservation size."); tdStatus.value().diskSystemName = diskSpaceReservation.begin()->first; - tdStatus.value().reservedBytes -= bytes; + tdStatus.value().reservedBytes.value() -= bytes; modifyTapeDrive(tdStatus.value()); } diff --git a/catalogue/RdbmsCatalogue.cpp b/catalogue/RdbmsCatalogue.cpp index df9ecac537..790ca73862 100644 --- a/catalogue/RdbmsCatalogue.cpp +++ b/catalogue/RdbmsCatalogue.cpp @@ -10474,9 +10474,9 @@ void RdbmsCatalogue::createTapeDrive(const common::dataStructures::TapeDrive &ta .add("lastModificationLog_username", tapeDrive.lastModificationLog ? tapeDrive.lastModificationLog.value().time : 0) - .add("diskSystemName", tapeDrive.diskSystemName) - .add("reservedBytes", tapeDrive.reservedBytes) - .add("reservationSessionId", tapeDrive.reservationSessionId); + .add("diskSystemName", tapeDrive.diskSystemName ? tapeDrive.diskSystemName.value() : "") + .add("reservedBytes", tapeDrive.reservedBytes ? tapeDrive.reservedBytes.value() : 0) + .add("reservationSessionId", tapeDrive.reservationSessionId ? tapeDrive.reservationSessionId.value() : 0); lc.log(log::INFO, "Catalogue - created tape drive"); } catch(exception::Exception &ex) { @@ -10569,11 +10569,10 @@ void RdbmsCatalogue::settingSqlTapeDriveValues(cta::rdbms::Stmt *stmt, setEntryLog(":LAST_UPDATE", nullopt_t(), nullopt_t(), nullopt_t()); } - // Why not just remove the NOT NULL constraint in the DB? - stmt->bindString(":DISK_SYSTEM_NAME", tapeDrive.diskSystemName.empty() ? "NULL" : tapeDrive.diskSystemName); + setOptionalString(":DISK_SYSTEM_NAME", tapeDrive.diskSystemName); stmt->bindUint64(":RESERVED_BYTES", tapeDrive.reservedBytes); stmt->bindUint64(":RESERVATION_SESSION_ID", tapeDrive.reservationSessionId); - + } void RdbmsCatalogue::deleteTapeDrive(const std::string &tapeDriveName) { @@ -10667,10 +10666,9 @@ common::dataStructures::TapeDrive RdbmsCatalogue::gettingSqlTapeDriveValues(cta: tapeDrive.currentVo = rset->columnOptionalString("CURRENT_VO"); tapeDrive.nextVo = rset->columnOptionalString("NEXT_VO"); - const std::string diskSystemName = rset->columnString("DISK_SYSTEM_NAME"); - tapeDrive.diskSystemName = (diskSystemName == "NULL" ? "" : diskSystemName); - tapeDrive.reservedBytes = rset->columnUint64("RESERVED_BYTES"); - tapeDrive.reservationSessionId = rset->columnUint64("RESERVATION_SESSION_ID"); + tapeDrive.diskSystemName = rset->columnOptionalString("DISK_SYSTEM_NAME"); + tapeDrive.reservedBytes = rset->columnOptionalUint64("RESERVED_BYTES"); + tapeDrive.reservationSessionId = rset->columnOptionalUint64("RESERVATION_SESSION_ID"); tapeDrive.userComment = rset->columnOptionalString("USER_COMMENT"); auto setOptionEntryLog = [&rset](const std::string &username, const std::string &host, @@ -11050,8 +11048,9 @@ void RdbmsCatalogue::updateTapeDriveStatus(const common::dataStructures::TapeDri } // If the drive is a state incompatible with space reservation, make sure there is none: if(tapeDrive.driveStatus == common::dataStructures::DriveStatus::Up) { - sql += "DISK_SYSTEM_NAME = CASE WHEN DISK_SYSTEM_NAME <> 'NULL' THEN 'NULL' ELSE DISK_SYSTEM_NAME END,"; - sql += "RESERVED_BYTES = CASE WHEN DISK_SYSTEM_NAME <> 'NULL' THEN 0 ELSE RESERVED_BYTES END,"; + sql += "DISK_SYSTEM_NAME = NULL,"; + sql += "RESERVED_BYTES = CASE WHEN DISK_SYSTEM_NAME IS NOT NULL THEN NULL ELSE RESERVED_BYTES END,"; + sql += "RESERVATION_SESSION_ID = CASE WHEN DISK_SYSTEM_NAME IS NOT NULL THEN NULL ELSE RESERVATION_SESSION_ID END,"; sql += "DRIVE_STATUS = CASE WHEN DESIRED_UP = '0' THEN 'DOWN' ELSE 'UP' END,"; } else { sql += "DRIVE_STATUS = '" + driveStatusStr + "',"; @@ -11363,8 +11362,10 @@ std::map<std::string, uint64_t> RdbmsCatalogue::getDiskSpaceReservations() const const auto tdNames = getTapeDriveNames(); for (const auto& driveName : tdNames) { const auto tdStatus = getTapeDrive(driveName); - //no need to check key, operator[] initializes missing values at zero for scalar types - ret[tdStatus.value().diskSystemName] += tdStatus.value().reservedBytes; + if (tdStatus.value().diskSystemName) { + //no need to check key, operator[] initializes missing values at zero for scalar types + ret[tdStatus.value().diskSystemName.value()] += tdStatus.value().reservedBytes.value(); + } } return ret; } diff --git a/catalogue/TapeDrivesCatalogueState.cpp b/catalogue/TapeDrivesCatalogueState.cpp index fe000def64..ddf8de0c1b 100644 --- a/catalogue/TapeDrivesCatalogueState.cpp +++ b/catalogue/TapeDrivesCatalogueState.cpp @@ -495,8 +495,9 @@ common::dataStructures::TapeDrive TapeDrivesCatalogueState::setTapeDriveStatus( tapeDriveStatus.desiredForceDown = desiredState.forceDown; if (desiredState.reason) tapeDriveStatus.reasonUpDown = desiredState.reason; if (desiredState.comment) tapeDriveStatus.userComment = desiredState.comment; - tapeDriveStatus.diskSystemName = "NULL"; - tapeDriveStatus.reservedBytes = 0; + tapeDriveStatus.diskSystemName = nullopt_t(); + tapeDriveStatus.reservedBytes = nullopt_t(); + tapeDriveStatus.reservationSessionId = nullopt_t(); tapeDriveStatus.devFileName = tpConfigLine.devFilename; tapeDriveStatus.rawLibrarySlot = tpConfigLine.rawLibrarySlot; if (identity.username.empty()) { diff --git a/catalogue/common_catalogue_schema.sql b/catalogue/common_catalogue_schema.sql index 5cff76c8e1..369a9b07cc 100644 --- a/catalogue/common_catalogue_schema.sql +++ b/catalogue/common_catalogue_schema.sql @@ -354,63 +354,6 @@ CREATE TABLE DRIVE_CONFIG ( CONSTRAINT DRIVE_CONFIG_DN_PK PRIMARY KEY(KEY_NAME, DRIVE_NAME) ); -CREATE TABLE TAPE_DRIVE ( - DRIVE_NAME VARCHAR(100) CONSTRAINT DRIVE_STATE_DN_NN NOT NULL, - HOST VARCHAR(100) CONSTRAINT DRIVE_STATE_H_NN NOT NULL, - LOGICAL_LIBRARY VARCHAR(100) CONSTRAINT DRIVE_STATE_LL_NN NOT NULL, - SESSION_ID UINT64TYPE, - BYTES_TRANSFERED_IN_SESSION UINT64TYPE, - FILES_TRANSFERED_IN_SESSION UINT64TYPE, - LATEST_BANDWIDTH VARCHAR(100), - SESSION_START_TIME UINT64TYPE, - MOUNT_START_TIME UINT64TYPE, - TRANSFER_START_TIME UINT64TYPE, - UNLOAD_START_TIME UINT64TYPE, - UNMOUNT_START_TIME UINT64TYPE, - DRAINING_START_TIME UINT64TYPE, - DOWN_OR_UP_START_TIME UINT64TYPE, - PROBE_START_TIME UINT64TYPE, - CLEANUP_START_TIME UINT64TYPE, - START_START_TIME UINT64TYPE, - SHUTDOWN_TIME UINT64TYPE, - MOUNT_TYPE UINT32TYPE CONSTRAINT DRIVE_STATE_MT_NN NOT NULL, - DRIVE_STATUS VARCHAR(100) DEFAULT 'UNKNOWN' CONSTRAINT DRIVE_STATE_DS_NN NOT NULL, - DESIRED_UP CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DU_NN NOT NULL, - DESIRED_FORCE_DOWN CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DFD_NN NOT NULL, - REASON_UP_DOWN VARCHAR(1000), - CURRENT_VID VARCHAR(100), - CTA_VERSION VARCHAR(100), - CURRENT_PRIORITY UINT64TYPE, - CURRENT_ACTIVITY VARCHAR(100), - CURRENT_ACTIVITY_WEIGHT VARCHAR(100), - CURRENT_TAPE_POOL VARCHAR(100), - NEXT_MOUNT_TYPE UINT32TYPE, - NEXT_VID VARCHAR(100), - NEXT_TAPE_POOL VARCHAR(100), - NEXT_PRIORITY UINT64TYPE, - NEXT_ACTIVITY VARCHAR(100), - NEXT_ACTIVITY_WEIGHT VARCHAR(100), - DEV_FILE_NAME VARCHAR(100), - RAW_LIBRARY_SLOT VARCHAR(100), - CURRENT_VO VARCHAR(100), - NEXT_VO VARCHAR(100), - USER_COMMENT VARCHAR(1000), - CREATION_LOG_USER_NAME VARCHAR(100), - CREATION_LOG_HOST_NAME VARCHAR(100), - CREATION_LOG_TIME UINT64TYPE, - LAST_UPDATE_USER_NAME VARCHAR(100), - LAST_UPDATE_HOST_NAME VARCHAR(100), - LAST_UPDATE_TIME UINT64TYPE, - DISK_SYSTEM_NAME VARCHAR(100) CONSTRAINT DRIVE_STATE_DSN_NN NOT NULL, - RESERVED_BYTES UINT64TYPE CONSTRAINT DRIVE_STATE_RB_NN NOT NULL, - CONSTRAINT DRIVE_STATE_DN_PK PRIMARY KEY(DRIVE_NAME), - CONSTRAINT DRIVE_STATE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1')), - CONSTRAINT DRIVE_STATE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1')), - CONSTRAINT DRIVE_STATE_DS_STRING_CK CHECK(DRIVE_STATUS IN ('DOWN', 'UP', 'PROBING', 'STARTING', - 'MOUNTING', 'TRANSFERING', 'UNLOADING', 'UNMOUNTING', 'DRAININGTODISK', 'CLEANINGUP', 'SHUTDOWN', - 'UNKNOWN')) -); - CREATE TABLE DRIVE_STATE ( DRIVE_NAME VARCHAR(100) CONSTRAINT DRIVE_DN_NN NOT NULL, HOST VARCHAR(100) CONSTRAINT DRIVE_H_NN NOT NULL, @@ -456,9 +399,9 @@ CREATE TABLE DRIVE_STATE ( LAST_UPDATE_USER_NAME VARCHAR(100), LAST_UPDATE_HOST_NAME VARCHAR(100), LAST_UPDATE_TIME UINT64TYPE, - DISK_SYSTEM_NAME VARCHAR(100) CONSTRAINT DRIVE_DSN_NN NOT NULL, - RESERVED_BYTES UINT64TYPE CONSTRAINT DRIVE_RB_NN NOT NULL, - RESERVATION_SESSION_ID UINT64TYPE CONSTRAINT DRIVE_RSI_NN NOT NULL, + DISK_SYSTEM_NAME VARCHAR(100), + RESERVED_BYTES UINT64TYPE, + RESERVATION_SESSION_ID UINT64TYPE, CONSTRAINT DRIVE_DN_PK PRIMARY KEY(DRIVE_NAME), CONSTRAINT DRIVE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1')), CONSTRAINT DRIVE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1')), diff --git a/catalogue/migrations/liquibase/oracle/4.5to5.0.sql b/catalogue/migrations/liquibase/oracle/4.5to5.0.sql index f21dfa37b2..1620344445 100644 --- a/catalogue/migrations/liquibase/oracle/4.5to5.0.sql +++ b/catalogue/migrations/liquibase/oracle/4.5to5.0.sql @@ -38,6 +38,75 @@ ALTER TABLE DRIVE_STATE MODIFY RESERVATION_SESSION_ID CONSTRAINT DRIVE_RSI_NN NO --changeset mvelosob:4 failOnError:true dbms:oracle --preconditions onFail:HALT onError:HALT --precondition-sql-check expectedResult:"4.5" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE; +DROP TABLE TAPE_DRIVE; +--rollback CREATE TABLE TAPE_DRIVE ( +--rollback DRIVE_NAME VARCHAR2(100) CONSTRAINT DRIVE_STATE_DN_NN NOT NULL, +--rollback HOST VARCHAR2(100) CONSTRAINT DRIVE_STATE_H_NN NOT NULL, +--rollback LOGICAL_LIBRARY VARCHAR2(100) CONSTRAINT DRIVE_STATE_LL_NN NOT NULL, +--rollback SESSION_ID NUMERIC(20, 0), +--rollback BYTES_TRANSFERED_IN_SESSION NUMERIC(20, 0), +--rollback FILES_TRANSFERED_IN_SESSION NUMERIC(20, 0), +--rollback LATEST_BANDWIDTH VARCHAR2(100), +--rollback SESSION_START_TIME NUMERIC(20, 0), +--rollback MOUNT_START_TIME NUMERIC(20, 0), +--rollback TRANSFER_START_TIME NUMERIC(20, 0), +--rollback UNLOAD_START_TIME NUMERIC(20, 0), +--rollback UNMOUNT_START_TIME NUMERIC(20, 0), +--rollback DRAINING_START_TIME NUMERIC(20, 0), +--rollback DOWN_OR_UP_START_TIME NUMERIC(20, 0), +--rollback PROBE_START_TIME NUMERIC(20, 0), +--rollback CLEANUP_START_TIME NUMERIC(20, 0), +--rollback START_START_TIME NUMERIC(20, 0), +--rollback SHUTDOWN_TIME NUMERIC(20, 0), +--rollback MOUNT_TYPE NUMERIC(10, 0) CONSTRAINT DRIVE_STATE_MT_NN NOT NULL, +--rollback DRIVE_STATUS VARCHAR2(100) DEFAULT 'UNKNOWN' CONSTRAINT DRIVE_STATE_DS_NN NOT NULL, +--rollback DESIRED_UP CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DU_NN NOT NULL, +--rollback DESIRED_FORCE_DOWN CHAR(1) DEFAULT '0' CONSTRAINT DRIVE_STATE_DFD_NN NOT NULL, +--rollback REASON_UP_DOWN VARCHAR2(1000), +--rollback CURRENT_VID VARCHAR2(100), +--rollback CTA_VERSION VARCHAR2(100), +--rollback CURRENT_PRIORITY NUMERIC(20, 0), +--rollback CURRENT_ACTIVITY VARCHAR2(100), +--rollback CURRENT_ACTIVITY_WEIGHT VARCHAR2(100), +--rollback CURRENT_TAPE_POOL VARCHAR2(100), +--rollback NEXT_MOUNT_TYPE NUMERIC(10, 0), +--rollback NEXT_VID VARCHAR2(100), +--rollback NEXT_TAPE_POOL VARCHAR2(100), +--rollback NEXT_PRIORITY NUMERIC(20, 0), +--rollback NEXT_ACTIVITY VARCHAR2(100), +--rollback NEXT_ACTIVITY_WEIGHT VARCHAR2(100), +--rollback DEV_FILE_NAME VARCHAR2(100), +--rollback RAW_LIBRARY_SLOT VARCHAR2(100), +--rollback CURRENT_VO VARCHAR2(100), +--rollback NEXT_VO VARCHAR2(100), +--rollback USER_COMMENT VARCHAR2(1000), +--rollback CREATION_LOG_USER_NAME VARCHAR2(100), +--rollback CREATION_LOG_HOST_NAME VARCHAR2(100), +--rollback CREATION_LOG_TIME NUMERIC(20, 0), +--rollback LAST_UPDATE_USER_NAME VARCHAR2(100), +--rollback LAST_UPDATE_HOST_NAME VARCHAR2(100), +--rollback LAST_UPDATE_TIME NUMERIC(20, 0), +--rollback DISK_SYSTEM_NAME VARCHAR2(100) CONSTRAINT DRIVE_STATE_DSN_NN NOT NULL, +--rollback RESERVED_BYTES NUMERIC(20, 0) CONSTRAINT DRIVE_STATE_RB_NN NOT NULL, +--rollback CONSTRAINT DRIVE_STATE_DN_PK PRIMARY KEY(DRIVE_NAME), +--rollback CONSTRAINT DRIVE_STATE_DU_BOOL_CK CHECK(DESIRED_UP IN ('0', '1')), +--rollback CONSTRAINT DRIVE_STATE_DFD_BOOL_CK CHECK(DESIRED_FORCE_DOWN IN ('0', '1')), +--rollback CONSTRAINT DRIVE_STATE_DS_STRING_CK CHECK(DRIVE_STATUS IN ('DOWN', 'UP', 'PROBING', 'STARTING', +--rollback 'MOUNTING', 'TRANSFERING', 'UNLOADING', 'UNMOUNTING', 'DRAININGTODISK', 'CLEANINGUP', 'SHUTDOWN', +--rollback 'UNKNOWN')) +--rollback ); + +--changeset mvelosob:5 failOnError:true dbms:oracle +--preconditions onFail:HALT onError:HALT +--precondition-sql-check expectedResult:"4.5" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE; +ALTER TABLE DRIVE_STATE DROP CONSTRAINT DRIVE_DSN_NN; +ALTER TABLE DRIVE_STATE DROP CONSTRAINT DRIVE_RB_NN; +--rollback ALTER TABLE DRIVE_STATE MODIFY DISK_SYSTEM_NAME VARCHAR2(100) CONSTRAINT DRIVE_STATE_DSN_NN NOT NULL; +--rollback ALTER TABLE DRIVE_STATE MODIFY RESERVED_BYTES NUMERIC(20, 0) CONSTRAINT DRIVE_STATE_RB_NN NOT NULL; + +--changeset mvelosob:6 failOnError:true dbms:oracle +--preconditions onFail:HALT onError:HALT +--precondition-sql-check expectedResult:"4.5" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE; UPDATE CTA_CATALOGUE SET STATUS='PRODUCTION'; UPDATE CTA_CATALOGUE SET SCHEMA_VERSION_MAJOR=5; UPDATE CTA_CATALOGUE SET SCHEMA_VERSION_MINOR=0; diff --git a/common/dataStructures/TapeDrive.cpp b/common/dataStructures/TapeDrive.cpp index 0cb0b709ca..4ca3fd6e2a 100644 --- a/common/dataStructures/TapeDrive.cpp +++ b/common/dataStructures/TapeDrive.cpp @@ -31,9 +31,7 @@ TapeDrive::TapeDrive(): driveStatus(DriveStatus::Unknown), desiredUp(false), desiredForceDown(false), - nextMountType(MountType::NoMount), - reservedBytes(0), - reservationSessionId(0) {} + nextMountType(MountType::NoMount) {} const std::map<DriveStatus, std::string> TapeDrive::STATE_TO_STRING_MAP = { {DriveStatus::Unknown, "UNKNOWN"}, @@ -90,9 +88,6 @@ bool TapeDrive::operator==(const TapeDrive &rhs) const { && driveStatus == rhs.driveStatus && desiredUp == rhs.desiredUp && desiredForceDown == rhs.desiredForceDown - && diskSystemName == rhs.diskSystemName - && reservedBytes == rhs.reservedBytes - && reservationSessionId == rhs.reservationSessionId && sessionId == rhs.sessionId && bytesTransferedInSession == rhs.bytesTransferedInSession @@ -121,6 +116,10 @@ bool TapeDrive::operator==(const TapeDrive &rhs) const { && checkOptionalString(nextTapePool) == checkOptionalString(rhs.nextTapePool) && nextPriority == rhs.nextPriority && checkOptionalString(nextActivity) == checkOptionalString(rhs.nextActivity) + && checkOptionalString(diskSystemName) == checkOptionalString(rhs.diskSystemName) + && reservedBytes == rhs.reservedBytes + && reservationSessionId == rhs.reservationSessionId + // // && devFileName==rhs.devFileName // && rawLibrarySlot==rhs.rawLibrarySlot @@ -185,10 +184,8 @@ std::ostream &operator<<(std::ostream &os, const TapeDrive &obj) { << " mountType=" << obj.mountType << " driveStatus=" << stateStr << " desiredUp=" << obj.desiredUp - << " desiredForceDown=" << obj.desiredForceDown - << " diskSystemName=" << obj.diskSystemName - << " reservedBytes=" << obj.reservedBytes - << " reservationSessionId=" << obj.reservationSessionId << ")"; + << " desiredForceDown=" << obj.desiredForceDown + << ")"; return os; } diff --git a/common/dataStructures/TapeDrive.hpp b/common/dataStructures/TapeDrive.hpp index 4eb4991fa6..4e65898f79 100644 --- a/common/dataStructures/TapeDrive.hpp +++ b/common/dataStructures/TapeDrive.hpp @@ -107,9 +107,9 @@ struct TapeDrive { optional<std::string> currentVo; optional<std::string> nextVo; - std::string diskSystemName; - uint64_t reservedBytes; - uint64_t reservationSessionId; + optional<std::string> diskSystemName; + optional<uint64_t> reservedBytes; + optional<uint64_t> reservationSessionId; optional<std::string> userComment; optional<EntryLog> creationLog; diff --git a/xroot_plugins/XrdCtaDriveLs.hpp b/xroot_plugins/XrdCtaDriveLs.hpp index 92c9761993..ba5a2e6fe3 100644 --- a/xroot_plugins/XrdCtaDriveLs.hpp +++ b/xroot_plugins/XrdCtaDriveLs.hpp @@ -128,8 +128,8 @@ int DriveLsStream::fillBuffer(XrdSsiPb::OStreamBuffer<Data> *streambuf) { dr_item->set_comment(dr.userComment ? dr.userComment.value() : ""); dr_item->set_reason(dr.reasonUpDown ? dr.reasonUpDown.value() : ""); if (dr.mountType == cta::common::dataStructures::MountType::Retrieve) { - dr_item->set_disk_system_name(dr.diskSystemName); - dr_item->set_reserved_bytes(dr.reservedBytes); + dr_item->set_disk_system_name(dr.diskSystemName ? dr.diskSystemName.value() : ""); + dr_item->set_reserved_bytes(dr.reservedBytes ? dr.reservedBytes.value() : 0); } dr_item->set_session_elapsed_time(dr.sessionElapsedTime ? dr.sessionElapsedTime.value() : 0); auto driveConfig = dr_item->mutable_drive_config(); -- GitLab