From cc1d82c587b7c192eda951bda9cf6659aa50347a Mon Sep 17 00:00:00 2001 From: Danny van Kooten Date: Mon, 18 Nov 2024 10:03:14 +0100 Subject: [PATCH] add lock mechanism to migrations runner to prevent it from running if other process is already running it. see #269 --- src/class-plugin.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/class-plugin.php b/src/class-plugin.php index 328d151..a978a0e 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -71,12 +71,23 @@ public function maybe_run_db_migrations(): void return; } + // check if migrations not already running + if (get_transient('koko_analytics_migrations_running')) { + return; + } + + // set transient to prevent migrations from running simultaneously + set_transient('koko_analytics_migrations_running', true, 120); + // run upgrade migrations (if any) $migrations_dir = KOKO_ANALYTICS_PLUGIN_DIR . '/migrations/'; $migrations = new Migrations($from_version, $to_version, $migrations_dir); $migrations->run(); update_option('koko_analytics_version', $to_version, true); + // delete transient once done + delete_transient('koko_analytics_migrations_running'); + // make sure scheduled event is set up correctly $this->aggregator->setup_scheduled_event(); }