From b8fa230596c957e252e29b68c0660c5b6752f8be Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Wed, 16 Oct 2024 18:59:45 +0200 Subject: [PATCH] core/unit: put the reload job back to queue if unit is refreshing --- src/core/unit.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/unit.c b/src/core/unit.c index 4384e3bfcbf..230a782631a 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2044,7 +2044,11 @@ int unit_reload(Unit *u) { return -EBADR; state = unit_active_state(u); - if (state == UNIT_RELOADING) + if (IN_SET(state, UNIT_RELOADING, UNIT_REFRESHING)) + /* "refreshing" means some resources in the unit namespace is being updated. Unlike reload, + * the unit processes aren't made aware of refresh. Let's put the job back to queue + * in both cases, as refresh typically takes place before reload and it's better to wait + * for it rather than failing. */ return -EAGAIN; if (state != UNIT_ACTIVE) -- 2.47.3