fix(applications): persist restart limit state for stopped containers (#11566)

This commit is contained in:
Andras Bacsai
2026-08-31 13:13:26 +02:00
committed by GitHub
parent e514a2d61f
commit 67b33c27a9
97 changed files with 2181 additions and 397 deletions
@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('applications', function (Blueprint $table) {
$table->boolean('container_present')->nullable()->after('status');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('applications', function (Blueprint $table) {
$table->dropColumn('container_present');
});
}
};
@@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('applications', function (Blueprint $table) {
$table->boolean('restart_limit_reached')->default(false)->after('max_restart_count');
});
DB::table('applications')
->where('status', 'like', 'exited%')
->where('restart_count', '>', 0)
->where('max_restart_count', '>', 0)
->whereColumn('restart_count', '>=', 'max_restart_count')
->where('last_restart_type', 'crash')
->update(['restart_limit_reached' => true]);
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('applications', function (Blueprint $table) {
$table->dropColumn('restart_limit_reached');
});
}
};
@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('application_previews', function (Blueprint $table) {
$table->integer('restart_count')->default(0);
$table->integer('max_restart_count')->default(10);
$table->boolean('restart_limit_reached')->default(false);
$table->timestamp('last_restart_at')->nullable();
$table->string('last_restart_type', 10)->nullable();
});
}
public function down(): void
{
Schema::table('application_previews', function (Blueprint $table) {
$table->dropColumn([
'restart_count',
'max_restart_count',
'restart_limit_reached',
'last_restart_at',
'last_restart_type',
]);
});
}
};
@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('service_applications', function (Blueprint $table) {
$table->integer('restart_count')->default(0);
$table->integer('max_restart_count')->default(10);
$table->boolean('restart_limit_reached')->default(false);
$table->timestamp('last_restart_at')->nullable();
$table->string('last_restart_type', 10)->nullable();
});
}
public function down(): void
{
Schema::table('service_applications', function (Blueprint $table) {
$table->dropColumn([
'restart_count',
'max_restart_count',
'restart_limit_reached',
'last_restart_at',
'last_restart_type',
]);
});
}
};
@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('service_databases', function (Blueprint $table) {
$table->integer('restart_count')->default(0);
$table->integer('max_restart_count')->default(10);
$table->boolean('restart_limit_reached')->default(false);
$table->timestamp('last_restart_at')->nullable();
$table->string('last_restart_type', 10)->nullable();
});
}
public function down(): void
{
Schema::table('service_databases', function (Blueprint $table) {
$table->dropColumn([
'restart_count',
'max_restart_count',
'restart_limit_reached',
'last_restart_at',
'last_restart_type',
]);
});
}
};
@@ -0,0 +1,23 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('standalone_postgresqls', function (Blueprint $table) {
$table->integer('max_restart_count')->default(10);
$table->boolean('restart_limit_reached')->default(false);
});
}
public function down(): void
{
Schema::table('standalone_postgresqls', function (Blueprint $table) {
$table->dropColumn(['max_restart_count', 'restart_limit_reached']);
});
}
};
@@ -0,0 +1,23 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('standalone_redis', function (Blueprint $table) {
$table->integer('max_restart_count')->default(10);
$table->boolean('restart_limit_reached')->default(false);
});
}
public function down(): void
{
Schema::table('standalone_redis', function (Blueprint $table) {
$table->dropColumn(['max_restart_count', 'restart_limit_reached']);
});
}
};
@@ -0,0 +1,23 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('standalone_mongodbs', function (Blueprint $table) {
$table->integer('max_restart_count')->default(10);
$table->boolean('restart_limit_reached')->default(false);
});
}
public function down(): void
{
Schema::table('standalone_mongodbs', function (Blueprint $table) {
$table->dropColumn(['max_restart_count', 'restart_limit_reached']);
});
}
};
@@ -0,0 +1,23 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('standalone_mysqls', function (Blueprint $table) {
$table->integer('max_restart_count')->default(10);
$table->boolean('restart_limit_reached')->default(false);
});
}
public function down(): void
{
Schema::table('standalone_mysqls', function (Blueprint $table) {
$table->dropColumn(['max_restart_count', 'restart_limit_reached']);
});
}
};
@@ -0,0 +1,23 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('standalone_mariadbs', function (Blueprint $table) {
$table->integer('max_restart_count')->default(10);
$table->boolean('restart_limit_reached')->default(false);
});
}
public function down(): void
{
Schema::table('standalone_mariadbs', function (Blueprint $table) {
$table->dropColumn(['max_restart_count', 'restart_limit_reached']);
});
}
};
@@ -0,0 +1,23 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('standalone_keydbs', function (Blueprint $table) {
$table->integer('max_restart_count')->default(10);
$table->boolean('restart_limit_reached')->default(false);
});
}
public function down(): void
{
Schema::table('standalone_keydbs', function (Blueprint $table) {
$table->dropColumn(['max_restart_count', 'restart_limit_reached']);
});
}
};
@@ -0,0 +1,23 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('standalone_dragonflies', function (Blueprint $table) {
$table->integer('max_restart_count')->default(10);
$table->boolean('restart_limit_reached')->default(false);
});
}
public function down(): void
{
Schema::table('standalone_dragonflies', function (Blueprint $table) {
$table->dropColumn(['max_restart_count', 'restart_limit_reached']);
});
}
};
@@ -0,0 +1,23 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('standalone_clickhouses', function (Blueprint $table) {
$table->integer('max_restart_count')->default(10);
$table->boolean('restart_limit_reached')->default(false);
});
}
public function down(): void
{
Schema::table('standalone_clickhouses', function (Blueprint $table) {
$table->dropColumn(['max_restart_count', 'restart_limit_reached']);
});
}
};
@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('email_notification_settings', function (Blueprint $table) {
$table->boolean('restart_limit_reached_email_notifications')->default(true);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('email_notification_settings', function (Blueprint $table) {
$table->dropColumn('restart_limit_reached_email_notifications');
});
}
};
@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('discord_notification_settings', function (Blueprint $table) {
$table->boolean('restart_limit_reached_discord_notifications')->default(true);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('discord_notification_settings', function (Blueprint $table) {
$table->dropColumn('restart_limit_reached_discord_notifications');
});
}
};
@@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('telegram_notification_settings', function (Blueprint $table) {
$table->boolean('restart_limit_reached_telegram_notifications')->default(true);
$table->text('telegram_notifications_restart_limit_reached_thread_id')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('telegram_notification_settings', function (Blueprint $table) {
$table->dropColumn('restart_limit_reached_telegram_notifications');
$table->dropColumn('telegram_notifications_restart_limit_reached_thread_id');
});
}
};
@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('slack_notification_settings', function (Blueprint $table) {
$table->boolean('restart_limit_reached_slack_notifications')->default(true);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('slack_notification_settings', function (Blueprint $table) {
$table->dropColumn('restart_limit_reached_slack_notifications');
});
}
};
@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('pushover_notification_settings', function (Blueprint $table) {
$table->boolean('restart_limit_reached_pushover_notifications')->default(true);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('pushover_notification_settings', function (Blueprint $table) {
$table->dropColumn('restart_limit_reached_pushover_notifications');
});
}
};
@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('webhook_notification_settings', function (Blueprint $table) {
$table->boolean('restart_limit_reached_webhook_notifications')->default(true);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('webhook_notification_settings', function (Blueprint $table) {
$table->dropColumn('restart_limit_reached_webhook_notifications');
});
}
};