fix: write cron in pre-delete phase

This commit is contained in:
Jose Diaz-Gonzalez
2025-03-09 06:33:16 -04:00
parent b663f71878
commit 36da77a2ff
4 changed files with 20 additions and 5 deletions

View File

@@ -1,5 +1,5 @@
SUBCOMMANDS = subcommands/list subcommands/report subcommands/run subcommands/set
TRIGGERS = triggers/cron-get-property triggers/install triggers/post-app-clone-setup triggers/post-app-rename-setup triggers/post-delete triggers/scheduler-stop
TRIGGERS = triggers/cron-get-property triggers/install triggers/post-app-clone-setup triggers/post-app-rename-setup triggers/pre-delete triggers/post-delete triggers/scheduler-stop
BUILD = commands subcommands triggers
PLUGIN_NAME = cron

View File

@@ -40,6 +40,9 @@ func main() {
case "post-delete":
appName := flag.Arg(0)
err = cron.TriggerPostDelete(appName)
case "pre-delete":
appName := flag.Arg(0)
err = cron.TriggerPreDelete(appName)
case "report":
appName := flag.Arg(0)
err = cron.ReportSingleApp(appName, "", "")

View File

@@ -55,9 +55,24 @@ func TriggerPostAppRenameSetup(oldAppName string, newAppName string) error {
return nil
}
// TriggerPreDelete stops cron for a given app
func TriggerPreDelete(appName string) error {
scheduler := common.GetAppScheduler(appName)
_, err := common.CallPlugnTrigger(common.PlugnTriggerInput{
Trigger: "scheduler-cron-write",
Args: []string{scheduler, appName},
StreamStdio: true,
})
return err
}
// TriggerPostDelete destroys the cron property for a given app container
func TriggerPostDelete(appName string) error {
return common.PropertyDestroy("cron", appName)
if err := common.PropertyDestroy("cron", appName); err != nil {
return err
}
return nil
}
// TriggerSchedulerStop stops the scheduler for a given app container

View File

@@ -14,9 +14,6 @@ trigger-scheduler-docker-local-post-delete() {
# remove all application containers
"$DOCKER_BIN" container ls --filter "label=com.dokku.app-name=${APP}" -q | xargs -n1 -I {} "$DOCKER_BIN" container rm --force {} &>/dev/null || true
local DOKKU_SCHEDULER="$(get_app_scheduler "$APP")"
plugn trigger scheduler-cron-write "$DOKKU_SCHEDULER" "$APP"
}
trigger-scheduler-docker-local-post-delete "$@"