From 871775182103101d01b6cb910991fa3ee3209cbb Mon Sep 17 00:00:00 2001 From: Jorge Camarero Vera <jorge.camarero@cern.ch> Date: Thu, 2 Feb 2023 15:18:23 +0100 Subject: [PATCH] Resolve "Trim SQL query length in catalogue DB failure reason" --- ReleaseNotes.md | 8 +++++++ catalogue/rdbms/RdbmsAdminUserCatalogue.cpp | 8 +++---- .../rdbms/RdbmsArchiveRouteCatalogue.cpp | 8 +++---- catalogue/rdbms/RdbmsCatalogueUtils.cpp | 13 +++++++----- catalogue/rdbms/RdbmsCatalogueUtils.hpp | 3 ++- .../rdbms/RdbmsDiskInstanceCatalogue.cpp | 8 +++---- .../rdbms/RdbmsDiskInstanceSpaceCatalogue.cpp | 8 +++---- catalogue/rdbms/RdbmsDiskSystemCatalogue.cpp | 8 +++---- catalogue/rdbms/RdbmsDriveStateCatalogue.cpp | 6 +++--- .../rdbms/RdbmsFileRecycleLogCatalogue.cpp | 4 ++-- .../rdbms/RdbmsLogicalLibraryCatalogue.cpp | 13 ++++++------ catalogue/rdbms/RdbmsMediaTypeCatalogue.cpp | 8 +++---- catalogue/rdbms/RdbmsMountPolicyCatalogue.cpp | 8 +++---- ...bmsRequesterActivityMountRuleCatalogue.cpp | 8 +++---- .../RdbmsRequesterGroupMountRuleCatalogue.cpp | 8 +++---- .../RdbmsRequesterMountRuleCatalogue.cpp | 8 +++---- .../rdbms/RdbmsStorageClassCatalogue.cpp | 8 +++---- catalogue/rdbms/RdbmsTapeCatalogue.cpp | 21 +++++++++---------- catalogue/rdbms/RdbmsTapePoolCatalogue.cpp | 8 +++---- .../RdbmsVirtualOrganizationCatalogue.cpp | 8 +++---- 20 files changed, 91 insertions(+), 81 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 18df0a8259..810f056b6c 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,3 +1,11 @@ +# v4.NEXT + +## Summary +### Features +- cta/CTA#250 - Trim SQL query length in catalogue DB failure reason +### Bug Fixes +### Continuous Integration + # v4.8.5-1 ## Summary diff --git a/catalogue/rdbms/RdbmsAdminUserCatalogue.cpp b/catalogue/rdbms/RdbmsAdminUserCatalogue.cpp index ff1b31a375..ebe73d3adb 100644 --- a/catalogue/rdbms/RdbmsAdminUserCatalogue.cpp +++ b/catalogue/rdbms/RdbmsAdminUserCatalogue.cpp @@ -47,7 +47,7 @@ void RdbmsAdminUserCatalogue::createAdminUser( if (comment.empty()) { throw UserSpecifiedAnEmptyStringComment("Cannot create admin user because the comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); auto conn = m_connPool->getConn(); if (adminUserExists(conn, username)) { @@ -84,7 +84,7 @@ void RdbmsAdminUserCatalogue::createAdminUser( stmt.bindString(":ADMIN_USER_NAME", username); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); @@ -200,7 +200,7 @@ void RdbmsAdminUserCatalogue::modifyAdminUserComment(const common::dataStructure if (comment.empty()) { throw UserSpecifiedAnEmptyStringComment("Cannot modify admin user because the comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = @@ -213,7 +213,7 @@ void RdbmsAdminUserCatalogue::modifyAdminUserComment(const common::dataStructure "ADMIN_USER_NAME = :ADMIN_USER_NAME"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); diff --git a/catalogue/rdbms/RdbmsArchiveRouteCatalogue.cpp b/catalogue/rdbms/RdbmsArchiveRouteCatalogue.cpp index 46cc5fae2f..9dde06a35b 100644 --- a/catalogue/rdbms/RdbmsArchiveRouteCatalogue.cpp +++ b/catalogue/rdbms/RdbmsArchiveRouteCatalogue.cpp @@ -55,7 +55,7 @@ void RdbmsArchiveRouteCatalogue::createArchiveRoute(const common::dataStructures if(comment.empty()) { throw UserSpecifiedAnEmptyStringComment("Cannot create archive route because comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); auto conn = m_connPool->getConn(); @@ -127,7 +127,7 @@ void RdbmsArchiveRouteCatalogue::createArchiveRoute(const common::dataStructures stmt.bindUint64(":COPY_NB", copyNb); stmt.bindString(":TAPE_POOL_NAME", tapePoolName); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); @@ -364,7 +364,7 @@ void RdbmsArchiveRouteCatalogue::modifyArchiveRouteTapePoolName(const common::da void RdbmsArchiveRouteCatalogue::modifyArchiveRouteComment(const common::dataStructures::SecurityIdentity &admin, const std::string &storageClassName, const uint32_t copyNb, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = "UPDATE ARCHIVE_ROUTE SET " @@ -383,7 +383,7 @@ void RdbmsArchiveRouteCatalogue::modifyArchiveRouteComment(const common::dataStr "COPY_NB = :COPY_NB"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); diff --git a/catalogue/rdbms/RdbmsCatalogueUtils.cpp b/catalogue/rdbms/RdbmsCatalogueUtils.cpp index b0e5fda3d6..13b97de3b0 100644 --- a/catalogue/rdbms/RdbmsCatalogueUtils.cpp +++ b/catalogue/rdbms/RdbmsCatalogueUtils.cpp @@ -51,17 +51,20 @@ bool RdbmsCatalogueUtils::diskSystemExists(rdbms::Conn &conn, const std::string } } -void RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(const std::optional<std::string>& str, log::Logger* log) { +std::optional<std::string> RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(const std::optional<std::string>& str, + log::Logger* log) { const size_t MAX_CHAR_COMMENT = 1000; - if (!str.has_value()) return; + if (!str.has_value()) return std::nullopt; + if (str.value().empty()) return std::nullopt; if (str.value().length() > MAX_CHAR_COMMENT) { log::LogContext lc(*log); log::ScopedParamContainer spc(lc); spc.add("Large_Message: ", str.value()); - lc.log(log::ERR, "The reason or comment has more characters than the maximun allowed."); - throw CommentOrReasonWithMoreSizeThanMaximunAllowed( - "The comment or reason string value has more than 1000 characters"); + lc.log(log::WARNING, "The reason or comment has more characters than the maximum allowed, 1000 characters." + " It will be truncated"); + return str.value().substr(0, MAX_CHAR_COMMENT); } + return str; } bool RdbmsCatalogueUtils::storageClassExists(rdbms::Conn &conn, const std::string &storageClassName) { diff --git a/catalogue/rdbms/RdbmsCatalogueUtils.hpp b/catalogue/rdbms/RdbmsCatalogueUtils.hpp index 638cd2723f..b5ee9710ae 100644 --- a/catalogue/rdbms/RdbmsCatalogueUtils.hpp +++ b/catalogue/rdbms/RdbmsCatalogueUtils.hpp @@ -47,7 +47,8 @@ CTA_GENERATE_EXCEPTION_CLASS(CommentOrReasonWithMoreSizeThanMaximunAllowed); class RdbmsCatalogueUtils { public: static bool diskSystemExists(rdbms::Conn &conn, const std::string &name); - static void checkCommentOrReasonMaxLength(const std::optional<std::string>& str, log::Logger* log); + [[nodiscard]] static std::optional<std::string> checkCommentOrReasonMaxLength(const std::optional<std::string>& str, + log::Logger* log); static bool storageClassExists(rdbms::Conn &conn, const std::string &storageClassName); static bool virtualOrganizationExists(rdbms::Conn &conn, const std::string &voName); static bool mediaTypeExists(rdbms::Conn &conn, const std::string &name); diff --git a/catalogue/rdbms/RdbmsDiskInstanceCatalogue.cpp b/catalogue/rdbms/RdbmsDiskInstanceCatalogue.cpp index 4da97ff49e..e3ddf13211 100644 --- a/catalogue/rdbms/RdbmsDiskInstanceCatalogue.cpp +++ b/catalogue/rdbms/RdbmsDiskInstanceCatalogue.cpp @@ -42,7 +42,7 @@ void RdbmsDiskInstanceCatalogue::createDiskInstance(const common::dataStructures if(comment.empty()) { throw UserSpecifiedAnEmptyStringComment("Cannot create disk system because the comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); auto conn = m_connPool->getConn(); if(RdbmsCatalogueUtils::diskInstanceExists(conn, name)) { @@ -80,7 +80,7 @@ void RdbmsDiskInstanceCatalogue::createDiskInstance(const common::dataStructures stmt.bindString(":DISK_INSTANCE_NAME", name); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); @@ -140,7 +140,7 @@ void RdbmsDiskInstanceCatalogue::modifyDiskInstanceComment(const common::dataStr throw UserSpecifiedAnEmptyStringComment("Cannot modify disk instance " "because the new comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = @@ -153,7 +153,7 @@ void RdbmsDiskInstanceCatalogue::modifyDiskInstanceComment(const common::dataStr "DISK_INSTANCE_NAME = :DISK_INSTANCE_NAME"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); diff --git a/catalogue/rdbms/RdbmsDiskInstanceSpaceCatalogue.cpp b/catalogue/rdbms/RdbmsDiskInstanceSpaceCatalogue.cpp index 51ecbadd43..e9346d1fbe 100644 --- a/catalogue/rdbms/RdbmsDiskInstanceSpaceCatalogue.cpp +++ b/catalogue/rdbms/RdbmsDiskInstanceSpaceCatalogue.cpp @@ -86,7 +86,7 @@ void RdbmsDiskInstanceSpaceCatalogue::createDiskInstanceSpace(const common::data if(comment.empty()) { throw UserSpecifiedAnEmptyStringComment("Cannot create disk instance space because the comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); auto conn = m_connPool->getConn(); if(!RdbmsCatalogueUtils::diskInstanceExists(conn, diskInstance)) { @@ -146,7 +146,7 @@ void RdbmsDiskInstanceSpaceCatalogue::createDiskInstanceSpace(const common::data stmt.bindUint64(":LAST_REFRESH_TIME", 0); stmt.bindUint64(":FREE_SPACE", 0); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); @@ -227,7 +227,7 @@ void RdbmsDiskInstanceSpaceCatalogue::modifyDiskInstanceSpaceComment( throw UserSpecifiedAnEmptyStringComment("Cannot modify disk instance space " "because the new comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = "UPDATE DISK_INSTANCE_SPACE SET " @@ -241,7 +241,7 @@ void RdbmsDiskInstanceSpaceCatalogue::modifyDiskInstanceSpaceComment( "DISK_INSTANCE_SPACE_NAME = :DISK_INSTANCE_SPACE_NAME"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); diff --git a/catalogue/rdbms/RdbmsDiskSystemCatalogue.cpp b/catalogue/rdbms/RdbmsDiskSystemCatalogue.cpp index 83c4209164..93c95ef841 100644 --- a/catalogue/rdbms/RdbmsDiskSystemCatalogue.cpp +++ b/catalogue/rdbms/RdbmsDiskSystemCatalogue.cpp @@ -58,7 +58,7 @@ void RdbmsDiskSystemCatalogue::createDiskSystem(const common::dataStructures::Se if(comment.empty()) { throw UserSpecifiedAnEmptyStringComment("Cannot create disk system because the comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); auto conn = m_connPool->getConn(); if(RdbmsCatalogueUtils::diskSystemExists(conn, name)) { @@ -111,7 +111,7 @@ void RdbmsDiskSystemCatalogue::createDiskSystem(const common::dataStructures::Se stmt.bindUint64(":TARGETED_FREE_SPACE", targetedFreeSpace); stmt.bindUint64(":SLEEP_TIME", sleepTime); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); @@ -321,7 +321,7 @@ void RdbmsDiskSystemCatalogue::modifyDiskSystemComment(const common::dataStructu throw UserSpecifiedAnEmptyStringComment("Cannot modify disk system " "because the new comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = @@ -334,7 +334,7 @@ void RdbmsDiskSystemCatalogue::modifyDiskSystemComment(const common::dataStructu "DISK_SYSTEM_NAME = :DISK_SYSTEM_NAME"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); diff --git a/catalogue/rdbms/RdbmsDriveStateCatalogue.cpp b/catalogue/rdbms/RdbmsDriveStateCatalogue.cpp index ed144736d7..0a39bc73c2 100644 --- a/catalogue/rdbms/RdbmsDriveStateCatalogue.cpp +++ b/catalogue/rdbms/RdbmsDriveStateCatalogue.cpp @@ -609,7 +609,7 @@ std::optional<common::dataStructures::TapeDrive> RdbmsDriveStateCatalogue::getTa void RdbmsDriveStateCatalogue::setDesiredTapeDriveState(const std::string& tapeDriveName, const common::dataStructures::DesiredDriveState &desiredState) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(desiredState.reason, &m_log); + const auto trimmedReason = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(desiredState.reason, &m_log); std::string sql = "UPDATE DRIVE_STATE SET " "DESIRED_UP = :DESIRED_UP," @@ -630,8 +630,8 @@ void RdbmsDriveStateCatalogue::setDesiredTapeDriveState(const std::string& tapeD stmt.bindString(":DRIVE_NAME", tapeDriveName); stmt.bindBool(":DESIRED_UP", desiredState.up); stmt.bindBool(":DESIRED_FORCE_DOWN", desiredState.forceDown); - if (desiredState.reason && !desiredState.reason.value().empty()) { - stmt.bindString(":REASON_UP_DOWN", desiredState.reason.value()); + if (trimmedReason&& !trimmedReason.value().empty()) { + stmt.bindString(":REASON_UP_DOWN", trimmedReason.value()); } stmt.executeNonQuery(); diff --git a/catalogue/rdbms/RdbmsFileRecycleLogCatalogue.cpp b/catalogue/rdbms/RdbmsFileRecycleLogCatalogue.cpp index 8da3d6387e..c5db93d129 100644 --- a/catalogue/rdbms/RdbmsFileRecycleLogCatalogue.cpp +++ b/catalogue/rdbms/RdbmsFileRecycleLogCatalogue.cpp @@ -230,7 +230,7 @@ void RdbmsFileRecycleLogCatalogue::deleteTapeFileCopyFromRecycleBin(cta::rdbms:: void RdbmsFileRecycleLogCatalogue::insertFileInFileRecycleLog(rdbms::Conn& conn, const InsertFileRecycleLog& fileRecycleLog) const { try{ - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(fileRecycleLog.reasonLog, &m_log); + const auto trimmedReason = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(fileRecycleLog.reasonLog, &m_log); uint64_t fileRecycleLogId = getNextFileRecyleLogId(conn); const char *const sql = "INSERT INTO FILE_RECYCLE_LOG(" @@ -292,7 +292,7 @@ void RdbmsFileRecycleLogCatalogue::insertFileInFileRecycleLog(rdbms::Conn& conn, stmt.bindUint64(":TAPE_FILE_CREATION_TIME",fileRecycleLog.tapeFileCreationTime); stmt.bindString(":DISK_FILE_PATH",fileRecycleLog.diskFilePath); stmt.bindUint64(":ARCHIVE_FILE_ID",fileRecycleLog.archiveFileId); - stmt.bindString(":REASON_LOG",fileRecycleLog.reasonLog); + stmt.bindString(":REASON_LOG",trimmedReason); stmt.bindUint64(":RECYCLE_LOG_TIME",fileRecycleLog.recycleLogTime); stmt.bindUint64(":ARCHIVE_FILE_ID_2",fileRecycleLog.archiveFileId); stmt.executeNonQuery(); diff --git a/catalogue/rdbms/RdbmsLogicalLibraryCatalogue.cpp b/catalogue/rdbms/RdbmsLogicalLibraryCatalogue.cpp index 8be68dea41..f124f06ca9 100644 --- a/catalogue/rdbms/RdbmsLogicalLibraryCatalogue.cpp +++ b/catalogue/rdbms/RdbmsLogicalLibraryCatalogue.cpp @@ -40,7 +40,7 @@ RdbmsLogicalLibraryCatalogue::RdbmsLogicalLibraryCatalogue(log::Logger &log, std void RdbmsLogicalLibraryCatalogue::createLogicalLibrary(const common::dataStructures::SecurityIdentity &admin, const std::string &name, const bool isDisabled, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); auto conn = m_connPool->getConn(); if(RdbmsCatalogueUtils::logicalLibraryExists(conn, name)) { throw exception::UserError(std::string("Cannot create logical library ") + name + @@ -83,7 +83,7 @@ void RdbmsLogicalLibraryCatalogue::createLogicalLibrary(const common::dataStruct stmt.bindString(":LOGICAL_LIBRARY_NAME", name); stmt.bindBool(":IS_DISABLED", isDisabled); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); @@ -236,7 +236,7 @@ void RdbmsLogicalLibraryCatalogue::modifyLogicalLibraryName(const common::dataSt void RdbmsLogicalLibraryCatalogue::modifyLogicalLibraryComment(const common::dataStructures::SecurityIdentity &admin, const std::string &name, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = "UPDATE LOGICAL_LIBRARY SET " @@ -248,7 +248,7 @@ void RdbmsLogicalLibraryCatalogue::modifyLogicalLibraryComment(const common::dat "LOGICAL_LIBRARY_NAME = :LOGICAL_LIBRARY_NAME"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); @@ -269,7 +269,7 @@ void RdbmsLogicalLibraryCatalogue::modifyLogicalLibraryComment(const common::dat void RdbmsLogicalLibraryCatalogue::modifyLogicalLibraryDisabledReason( const common::dataStructures::SecurityIdentity &admin, const std::string &name, const std::string &disabledReason) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(disabledReason, &m_log); + const auto trimmedReason = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(disabledReason, &m_log); const time_t now = time(nullptr); const char *const sql = "UPDATE LOGICAL_LIBRARY SET " @@ -281,8 +281,7 @@ void RdbmsLogicalLibraryCatalogue::modifyLogicalLibraryDisabledReason( "LOGICAL_LIBRARY_NAME = :LOGICAL_LIBRARY_NAME"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":DISABLED_REASON", - disabledReason.empty() ? std::nullopt : std::optional<std::string>(disabledReason)); + stmt.bindString(":DISABLED_REASON", trimmedReason); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); diff --git a/catalogue/rdbms/RdbmsMediaTypeCatalogue.cpp b/catalogue/rdbms/RdbmsMediaTypeCatalogue.cpp index 55fe09a493..d41b431e7d 100644 --- a/catalogue/rdbms/RdbmsMediaTypeCatalogue.cpp +++ b/catalogue/rdbms/RdbmsMediaTypeCatalogue.cpp @@ -51,7 +51,7 @@ void RdbmsMediaTypeCatalogue::createMediaType(const common::dataStructures::Secu throw UserSpecifiedAnEmptyStringComment(std::string("Cannot create media type ") + mediaType.name + " because the comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(mediaType.comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(mediaType.comment, &m_log); if (mediaType.capacityInBytes == 0){ throw UserSpecifiedAZeroCapacity(std::string("Cannot create media type ") + mediaType.name + " because the capacity is zero"); @@ -116,7 +116,7 @@ void RdbmsMediaTypeCatalogue::createMediaType(const common::dataStructures::Secu stmt.bindUint64(":MIN_LPOS", mediaType.minLPos); stmt.bindUint64(":MAX_LPOS", mediaType.maxLPos); - stmt.bindString(":USER_COMMENT", mediaType.comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); @@ -541,7 +541,7 @@ void RdbmsMediaTypeCatalogue::modifyMediaTypeMaxLPos(const common::dataStructure void RdbmsMediaTypeCatalogue::modifyMediaTypeComment(const common::dataStructures::SecurityIdentity &admin, const std::string &name, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = "UPDATE MEDIA_TYPE SET " @@ -553,7 +553,7 @@ void RdbmsMediaTypeCatalogue::modifyMediaTypeComment(const common::dataStructure "MEDIA_TYPE_NAME = :MEDIA_TYPE_NAME"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); diff --git a/catalogue/rdbms/RdbmsMountPolicyCatalogue.cpp b/catalogue/rdbms/RdbmsMountPolicyCatalogue.cpp index b494941223..114e58366c 100644 --- a/catalogue/rdbms/RdbmsMountPolicyCatalogue.cpp +++ b/catalogue/rdbms/RdbmsMountPolicyCatalogue.cpp @@ -41,7 +41,7 @@ void RdbmsMountPolicyCatalogue::createMountPolicy(const common::dataStructures:: const CreateMountPolicyAttributes & mountPolicy) { std::string name = mountPolicy.name; try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(mountPolicy.comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(mountPolicy.comment, &m_log); auto conn = m_connPool->getConn(); if (RdbmsCatalogueUtils::mountPolicyExists(conn, name)) { throw exception::UserError(std::string("Cannot create mount policy ") + name + @@ -95,7 +95,7 @@ void RdbmsMountPolicyCatalogue::createMountPolicy(const common::dataStructures:: stmt.bindUint64(":RETRIEVE_PRIORITY", mountPolicy.retrievePriority); stmt.bindUint64(":RETRIEVE_MIN_REQUEST_AGE", mountPolicy.minRetrieveRequestAge); - stmt.bindString(":USER_COMMENT", mountPolicy.comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); @@ -448,7 +448,7 @@ void RdbmsMountPolicyCatalogue::modifyMountPolicyRetrieveMinRequestAge(const com void RdbmsMountPolicyCatalogue::modifyMountPolicyComment(const common::dataStructures::SecurityIdentity &admin, const std::string &name, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = "UPDATE MOUNT_POLICY SET " @@ -460,7 +460,7 @@ void RdbmsMountPolicyCatalogue::modifyMountPolicyComment(const common::dataStruc "MOUNT_POLICY_NAME = :MOUNT_POLICY_NAME"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); diff --git a/catalogue/rdbms/RdbmsRequesterActivityMountRuleCatalogue.cpp b/catalogue/rdbms/RdbmsRequesterActivityMountRuleCatalogue.cpp index e086d471f6..9c9fc0394a 100644 --- a/catalogue/rdbms/RdbmsRequesterActivityMountRuleCatalogue.cpp +++ b/catalogue/rdbms/RdbmsRequesterActivityMountRuleCatalogue.cpp @@ -75,7 +75,7 @@ void RdbmsRequesterActivityMountRuleCatalogue::modifyRequesterActivityMountRuleC const common::dataStructures::SecurityIdentity &admin, const std::string &instanceName, const std::string &requesterName, const std::string &activityRegex, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = "UPDATE REQUESTER_ACTIVITY_MOUNT_RULE SET " @@ -89,7 +89,7 @@ void RdbmsRequesterActivityMountRuleCatalogue::modifyRequesterActivityMountRuleC "ACTIVITY_REGEX = :ACTIVITY_REGEX"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); @@ -115,7 +115,7 @@ void RdbmsRequesterActivityMountRuleCatalogue::createRequesterActivityMountRule( const std::string &mountPolicyName, const std::string &diskInstanceName, const std::string &requesterName, const std::string &activityRegex, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); auto conn = m_connPool->getConn(); if(RdbmsCatalogueUtils::requesterActivityMountRuleExists(conn, diskInstanceName, requesterName, activityRegex)) { throw exception::UserError(std::string("Cannot create rule to assign mount-policy ") + mountPolicyName + @@ -172,7 +172,7 @@ void RdbmsRequesterActivityMountRuleCatalogue::createRequesterActivityMountRule( stmt.bindString(":MOUNT_POLICY_NAME", mountPolicyName); stmt.bindString(":ACTIVITY_REGEX", activityRegex); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); diff --git a/catalogue/rdbms/RdbmsRequesterGroupMountRuleCatalogue.cpp b/catalogue/rdbms/RdbmsRequesterGroupMountRuleCatalogue.cpp index a5f6036177..8c69d63115 100644 --- a/catalogue/rdbms/RdbmsRequesterGroupMountRuleCatalogue.cpp +++ b/catalogue/rdbms/RdbmsRequesterGroupMountRuleCatalogue.cpp @@ -74,7 +74,7 @@ void RdbmsRequesterGroupMountRuleCatalogue::modifyRequesterGroupMountRuleComment const common::dataStructures::SecurityIdentity &admin, const std::string &instanceName, const std::string &requesterGroupName, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = "UPDATE REQUESTER_GROUP_MOUNT_RULE SET " @@ -87,7 +87,7 @@ void RdbmsRequesterGroupMountRuleCatalogue::modifyRequesterGroupMountRuleComment "REQUESTER_GROUP_NAME = :REQUESTER_GROUP_NAME"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); @@ -114,7 +114,7 @@ void RdbmsRequesterGroupMountRuleCatalogue::createRequesterGroupMountRule( const std::string &requesterGroupName, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); auto conn = m_connPool->getConn(); { const auto group = Group(diskInstanceName, requesterGroupName); @@ -172,7 +172,7 @@ void RdbmsRequesterGroupMountRuleCatalogue::createRequesterGroupMountRule( stmt.bindString(":REQUESTER_GROUP_NAME", requesterGroupName); stmt.bindString(":MOUNT_POLICY_NAME", mountPolicyName); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); diff --git a/catalogue/rdbms/RdbmsRequesterMountRuleCatalogue.cpp b/catalogue/rdbms/RdbmsRequesterMountRuleCatalogue.cpp index 90f2dfe967..6a0cb3e505 100644 --- a/catalogue/rdbms/RdbmsRequesterMountRuleCatalogue.cpp +++ b/catalogue/rdbms/RdbmsRequesterMountRuleCatalogue.cpp @@ -74,7 +74,7 @@ void RdbmsRequesterMountRuleCatalogue::modifyRequesteMountRuleComment( const common::dataStructures::SecurityIdentity &admin, const std::string &instanceName, const std::string &requesterName, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = "UPDATE REQUESTER_MOUNT_RULE SET " @@ -87,7 +87,7 @@ void RdbmsRequesterMountRuleCatalogue::modifyRequesteMountRuleComment( "REQUESTER_NAME = :REQUESTER_NAME"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); @@ -111,7 +111,7 @@ void RdbmsRequesterMountRuleCatalogue::createRequesterMountRule(const common::da const std::string &mountPolicyName, const std::string &diskInstanceName, const std::string &requesterName, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const auto user = User(diskInstanceName, requesterName); auto conn = m_connPool->getConn(); const auto mountPolicyCatalogue = static_cast<RdbmsMountPolicyCatalogue*>(m_rdbmsCatalogue->MountPolicy().get()); @@ -168,7 +168,7 @@ void RdbmsRequesterMountRuleCatalogue::createRequesterMountRule(const common::da stmt.bindString(":REQUESTER_NAME", requesterName); stmt.bindString(":MOUNT_POLICY_NAME", mountPolicyName); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); diff --git a/catalogue/rdbms/RdbmsStorageClassCatalogue.cpp b/catalogue/rdbms/RdbmsStorageClassCatalogue.cpp index 738088a698..5d072f07d7 100644 --- a/catalogue/rdbms/RdbmsStorageClassCatalogue.cpp +++ b/catalogue/rdbms/RdbmsStorageClassCatalogue.cpp @@ -50,7 +50,7 @@ void RdbmsStorageClassCatalogue::createStorageClass( if (storageClass.comment.empty()) { throw UserSpecifiedAnEmptyStringComment("Cannot create storage class because the comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(storageClass.comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(storageClass.comment, &m_log); std::string vo = storageClass.vo.name; if(vo.empty()) { @@ -106,7 +106,7 @@ void RdbmsStorageClassCatalogue::createStorageClass( stmt.bindUint64(":NB_COPIES", storageClass.nbCopies); stmt.bindString(":VO",vo); - stmt.bindString(":USER_COMMENT", storageClass.comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); @@ -310,7 +310,7 @@ void RdbmsStorageClassCatalogue::modifyStorageClassNbCopies(const common::dataSt void RdbmsStorageClassCatalogue::modifyStorageClassComment(const common::dataStructures::SecurityIdentity &admin, const std::string &name, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = @@ -323,7 +323,7 @@ void RdbmsStorageClassCatalogue::modifyStorageClassComment(const common::dataStr "STORAGE_CLASS_NAME = :STORAGE_CLASS_NAME"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); diff --git a/catalogue/rdbms/RdbmsTapeCatalogue.cpp b/catalogue/rdbms/RdbmsTapeCatalogue.cpp index 7a792c01b4..1d78c2863b 100644 --- a/catalogue/rdbms/RdbmsTapeCatalogue.cpp +++ b/catalogue/rdbms/RdbmsTapeCatalogue.cpp @@ -64,10 +64,10 @@ void RdbmsTapeCatalogue::createTape(const common::dataStructures::SecurityIdenti bool full = tape.full; // Translate an empty comment string to a NULL database value const std::optional<std::string> tapeComment = tape.comment && tape.comment->empty() ? std::nullopt : tape.comment; - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(tapeComment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(tapeComment, &m_log); const std::optional<std::string> stateReason = tape.stateReason && cta::utils::trimString(tape.stateReason.value()).empty() ? std::nullopt : tape.stateReason; - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(stateReason, &m_log); + const auto trimmedReason = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(stateReason, &m_log); if(vid.empty()) { throw UserSpecifiedAnEmptyStringVid("Cannot create tape because the VID is an empty string"); } @@ -197,11 +197,11 @@ void RdbmsTapeCatalogue::createTape(const common::dataStructures::SecurityIdenti stmt.bindBool(":IS_FULL", full); stmt.bindBool(":IS_FROM_CASTOR", isFromCastor); - stmt.bindString(":USER_COMMENT", tapeComment); + stmt.bindString(":USER_COMMENT", trimmedComment); std::string stateModifiedBy = RdbmsCatalogueUtils::generateTapeStateModifiedBy(admin); stmt.bindString(":TAPE_STATE",cta::common::dataStructures::Tape::stateToString(tape.state)); - stmt.bindString(":STATE_REASON",stateReason); + stmt.bindString(":STATE_REASON",trimmedReason); stmt.bindUint64(":STATE_UPDATE_TIME",now); stmt.bindString(":STATE_MODIFIED_BY", stateModifiedBy); @@ -857,8 +857,7 @@ void RdbmsTapeCatalogue::modifyTapeState(const common::dataStructures::SecurityI using namespace common::dataStructures; const time_t now = time(nullptr); - const std::optional<std::string> stateReasonCopy = stateReason && cta::utils::trimString(stateReason.value()).empty() ? std::nullopt : stateReason; - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(stateReasonCopy, &m_log); + const auto trimmedReason = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(stateReason, &m_log); std::string stateStr; try { @@ -880,7 +879,7 @@ void RdbmsTapeCatalogue::modifyTapeState(const common::dataStructures::SecurityI //Check the reason is set for all the status except the ACTIVE one, this is the only state that allows the reason to be set to null. if(state != Tape::State::ACTIVE){ - if(!stateReasonCopy){ + if(!trimmedReason){ throw UserSpecifiedAnEmptyStringReasonWhenTapeStateNotActive(std::string("Cannot modify the state of the tape ") + vid + " to " + stateStr + " because the reason has not been provided."); } } @@ -902,7 +901,7 @@ void RdbmsTapeCatalogue::modifyTapeState(const common::dataStructures::SecurityI auto stmt = conn.createStmt(sql); stmt.bindString(":TAPE_STATE", stateStr); - stmt.bindString(":STATE_REASON", stateReasonCopy); + stmt.bindString(":STATE_REASON", trimmedReason); stmt.bindUint64(":STATE_UPDATE_TIME", now); stmt.bindString(":STATE_MODIFIED_BY", RdbmsCatalogueUtils::generateTapeStateModifiedBy(admin)); stmt.bindString(":VID",vid); @@ -1183,7 +1182,7 @@ void RdbmsTapeCatalogue::setTapeDirty(const std::string & vid) { void RdbmsTapeCatalogue::modifyTapeComment(const common::dataStructures::SecurityIdentity &admin, const std::string &vid, const std::optional<std::string> &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = "UPDATE TAPE SET " @@ -1195,7 +1194,7 @@ void RdbmsTapeCatalogue::modifyTapeComment(const common::dataStructures::Securit "VID = :VID"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); @@ -1210,7 +1209,7 @@ void RdbmsTapeCatalogue::modifyTapeComment(const common::dataStructures::Securit log::LogContext lc(m_log); log::ScopedParamContainer spc(lc); spc.add("vid", vid) - .add("userComment", comment ? comment.value() : "") + .add("userComment", trimmedComment ? trimmedComment.value() : "") .add("lastUpdateUserName", admin.username) .add("lastUpdateHostName", admin.host) .add("lastUpdateTime", now); diff --git a/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp b/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp index 58f181cb51..62a7cfa320 100644 --- a/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp +++ b/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp @@ -56,7 +56,7 @@ void RdbmsTapePoolCatalogue::createTapePool(const common::dataStructures::Securi if (comment.empty()) { throw UserSpecifiedAnEmptyStringComment("Cannot create tape pool because the comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); auto conn = m_connPool->getConn(); @@ -118,7 +118,7 @@ void RdbmsTapePoolCatalogue::createTapePool(const common::dataStructures::Securi stmt.bindBool(":IS_ENCRYPTED", encryptionValue); stmt.bindString(":SUPPLY", supply); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); @@ -524,7 +524,7 @@ void RdbmsTapePoolCatalogue::modifyTapePoolComment(const common::dataStructures: if(comment.empty()) { throw UserSpecifiedAnEmptyStringComment("Cannot modify tape pool because the new comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = @@ -537,7 +537,7 @@ void RdbmsTapePoolCatalogue::modifyTapePoolComment(const common::dataStructures: "TAPE_POOL_NAME = :TAPE_POOL_NAME"; auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); diff --git a/catalogue/rdbms/RdbmsVirtualOrganizationCatalogue.cpp b/catalogue/rdbms/RdbmsVirtualOrganizationCatalogue.cpp index b9d5da8194..6afa12fe53 100644 --- a/catalogue/rdbms/RdbmsVirtualOrganizationCatalogue.cpp +++ b/catalogue/rdbms/RdbmsVirtualOrganizationCatalogue.cpp @@ -46,7 +46,7 @@ void RdbmsVirtualOrganizationCatalogue::createVirtualOrganization(const common:: if (vo.comment.empty()) { throw UserSpecifiedAnEmptyStringComment("Cannot create virtual organization because the comment is an empty string"); } - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(vo.comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(vo.comment, &m_log); if (vo.diskInstanceName.empty()) { throw UserSpecifiedAnEmptyStringDiskInstanceName("Cannot create virtual organization because the disk instance is an empty string"); } @@ -107,7 +107,7 @@ void RdbmsVirtualOrganizationCatalogue::createVirtualOrganization(const common:: stmt.bindString(":DISK_INSTANCE_NAME", vo.diskInstanceName); - stmt.bindString(":USER_COMMENT", vo.comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":CREATION_LOG_USER_NAME", admin.username); stmt.bindString(":CREATION_LOG_HOST_NAME", admin.host); @@ -468,7 +468,7 @@ void RdbmsVirtualOrganizationCatalogue::modifyVirtualOrganizationMaxFileSize( void RdbmsVirtualOrganizationCatalogue::modifyVirtualOrganizationComment( const common::dataStructures::SecurityIdentity &admin, const std::string &voName, const std::string &comment) { try { - RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); + const auto trimmedComment = RdbmsCatalogueUtils::checkCommentOrReasonMaxLength(comment, &m_log); const time_t now = time(nullptr); const char *const sql = "UPDATE VIRTUAL_ORGANIZATION SET " @@ -481,7 +481,7 @@ void RdbmsVirtualOrganizationCatalogue::modifyVirtualOrganizationComment( auto conn = m_connPool->getConn(); auto stmt = conn.createStmt(sql); - stmt.bindString(":USER_COMMENT", comment); + stmt.bindString(":USER_COMMENT", trimmedComment); stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username); stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host); stmt.bindUint64(":LAST_UPDATE_TIME", now); -- GitLab