mirror of
https://github.com/tiennm99/coolify.git
synced 2026-09-03 04:18:07 +00:00
feat: configurable stop grace period for applications
Adds stop_grace_period to application settings (seconds, 1-3600, default 30). Used in place of the hardcoded docker stop -t 30 in the four places that stop application containers: rolling update shutdown, manual stop, stop on another server, and preview deployment stop. Non-positive values fall back to the default via ($val > 0) ? $val : default, with tests covering 0 and -10 so the cast does not blow up if a bad value ever lands in the db. Picks up Jack Coy's work from #7125 which went dormant. His commits are squashed here with credit below. Co-authored-by: Jack Coy <jackman3000@gmail.com>
This commit is contained in:
co-authored by
Jack Coy
parent
37518813a6
commit
60d8aba323
@@ -61,6 +61,9 @@ class Advanced extends Component
|
||||
#[Validate(['string', 'nullable'])]
|
||||
public ?string $gpuOptions = null;
|
||||
|
||||
#[Validate(['string', 'nullable'])]
|
||||
public ?string $stopGracePeriod = null;
|
||||
|
||||
#[Validate(['boolean'])]
|
||||
public bool $isBuildServerEnabled = false;
|
||||
|
||||
@@ -145,6 +148,10 @@ class Advanced extends Component
|
||||
$this->injectBuildArgsToDockerfile = $this->application->settings->inject_build_args_to_dockerfile ?? true;
|
||||
$this->includeSourceCommitInBuild = $this->application->settings->include_source_commit_in_build ?? false;
|
||||
}
|
||||
|
||||
// Load stop_grace_period separately since it has its own save handler
|
||||
// Convert null to empty string to prevent dirty detection issues
|
||||
$this->stopGracePeriod = $this->application->settings->stop_grace_period ?? '';
|
||||
}
|
||||
|
||||
private function resetDefaultLabels()
|
||||
@@ -252,6 +259,34 @@ class Advanced extends Component
|
||||
}
|
||||
}
|
||||
|
||||
public function saveStopGracePeriod()
|
||||
{
|
||||
try {
|
||||
$this->authorize('update', $this->application);
|
||||
|
||||
// Convert empty string to null, otherwise cast to integer
|
||||
$value = ($this->stopGracePeriod === '' || $this->stopGracePeriod === null)
|
||||
? null
|
||||
: (int) $this->stopGracePeriod;
|
||||
|
||||
// Validate the integer value
|
||||
if ($value !== null && ($value < 1 || $value > 3600)) {
|
||||
$this->dispatch('error', 'Stop grace period must be between 1 and 3600 seconds.');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Save to model
|
||||
$this->application->settings->stop_grace_period = $value;
|
||||
$this->application->settings->save();
|
||||
|
||||
// User feedback
|
||||
$this->dispatch('success', 'Stop grace period updated.');
|
||||
} catch (\Throwable $e) {
|
||||
return handleError($e, $this);
|
||||
}
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
return view('livewire.project.application.advanced');
|
||||
|
||||
Reference in New Issue
Block a user