From f2fed30bc181be0e57390c65cc4dd942d1217e05 Mon Sep 17 00:00:00 2001 From: Max Englander Date: Wed, 29 Jan 2025 12:50:38 -0500 Subject: [PATCH] go/vt/mysqlctl: add preflight_mysqld_shutdown hook Signed-off-by: Max Englander --- go/vt/mysqlctl/mysqld.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/go/vt/mysqlctl/mysqld.go b/go/vt/mysqlctl/mysqld.go index d7435705a8a..edf89b6656b 100644 --- a/go/vt/mysqlctl/mysqld.go +++ b/go/vt/mysqlctl/mysqld.go @@ -624,10 +624,21 @@ func (mysqld *Mysqld) Shutdown(ctx context.Context, cnf *Mycnf, waitForMysqld bo return nil } - // try the mysqld shutdown hook, if any - h := hook.NewSimpleHook("mysqld_shutdown") + // try the preflight mysqld shutdown hook, if any + h := hook.NewSimpleHook("preflight_mysqld_shutdown") hr := h.ExecuteContext(ctx) switch hr.ExitStatus { + case hook.HOOK_SUCCESS, hook.HOOK_DOES_NOT_EXIST: + // hook exists and worked, or else does not exist. + default: + // hook failed, we report error + return fmt.Errorf("preflight_mysqld_shutdown hook failed: %v", hr.String()) + } + + // try the mysqld shutdown hook, if any + h = hook.NewSimpleHook("mysqld_shutdown") + hr = h.ExecuteContext(ctx) + switch hr.ExitStatus { case hook.HOOK_SUCCESS: // hook exists and worked, we can keep going case hook.HOOK_DOES_NOT_EXIST: