From 2a6cd4698a55df92e09256a3c5232e0ba8cfdfe7 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 23 May 2024 13:49:23 +0200 Subject: [PATCH] feat: refs #7144 DiagnoseProducionFailure changes --- .../diagnoseProductionFailure_dbFreeze.sql | 14 ++++++++++++-- .../diagnoseProductionFailure_dbGetLock.sql | 18 ++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/db/routines/vn/functions/diagnoseProductionFailure_dbFreeze.sql b/db/routines/vn/functions/diagnoseProductionFailure_dbFreeze.sql index ac71135fee..b68b1679eb 100644 --- a/db/routines/vn/functions/diagnoseProductionFailure_dbFreeze.sql +++ b/db/routines/vn/functions/diagnoseProductionFailure_dbFreeze.sql @@ -9,11 +9,21 @@ BEGIN * @table tmp.diagnoseProductionFailure(message, hasError) */ DECLARE vHasError BOOL; + DECLARE vMaxThreads INT; + DECLARE vMaxTime INT; - SELECT IF(COUNT(ID) > 5, TRUE, FALSE) INTO vHasError + SELECT dbFreezeMaxThreads, dbFreezeMaxTime + INTO vMaxThreads, vMaxTime + FROM diagnoseProductionFailureConfig; + + IF vMaxThreads IS NULL OR vMaxTime IS NULL THEN + CALL util.throw("Configuration variables not set"); + END IF; + + SELECT IF(COUNT(ID) > vMaxThreads, TRUE, FALSE) INTO vHasError FROM information_schema.PROCESSLIST WHERE COMMAND = 'Query' - AND `time` > 60; # Variable en tabla + AND `time` > vMaxTime; RETURN vHasError; END$$ diff --git a/db/routines/vn/functions/diagnoseProductionFailure_dbGetLock.sql b/db/routines/vn/functions/diagnoseProductionFailure_dbGetLock.sql index 2d2f8026e5..809341cdc2 100644 --- a/db/routines/vn/functions/diagnoseProductionFailure_dbGetLock.sql +++ b/db/routines/vn/functions/diagnoseProductionFailure_dbGetLock.sql @@ -9,13 +9,27 @@ BEGIN * @table tmp.diagnoseProductionFailure(message, hasError) */ DECLARE vHasError BOOL; + DECLARE vMaxTime INT; + + SELECT dbGetLockMaxTime INTO vMaxTime + FROM diagnoseProductionFailureConfig; + + IF vMaxTime IS NULL THEN + CALL util.throw("Configuration variable not set"); + END IF; + /* Bug: En local la tabla METADATA_LOCK_INFO no existe... + SELECT COUNT(*) INTO vHasError FROM information_schema.METADATA_LOCK_INFO mli JOIN information_schema.PROCESSLIST pl ON pl.ID = mli.THREAD_ID WHERE mli.LOCK_MODE = 'MDL_SHARED_NO_WRITE' - AND pl.`time` > 30; # Variable en tabla + AND pl.`time` > vMaxTime; + + RETURN vHasError; + */ - RETURN true; -- vHasError; + + RETURN TRUE; END$$ DELIMITER ;