@@ -17,7 +17,7 @@ class ServerStatusJob implements ShouldQueue, ShouldBeEncrypted
 | 
				
			|||||||
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
 | 
					    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public int|string|null $disk_usage = null;
 | 
					    public int|string|null $disk_usage = null;
 | 
				
			||||||
    public $tries = 4;
 | 
					    public $tries = 3;
 | 
				
			||||||
    public function backoff(): int
 | 
					    public function backoff(): int
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return isDev() ? 1 : 3;
 | 
					        return isDev() ? 1 : 3;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,6 @@ use Illuminate\Database\Eloquent\Builder;
 | 
				
			|||||||
use Illuminate\Database\Eloquent\Casts\Attribute;
 | 
					use Illuminate\Database\Eloquent\Casts\Attribute;
 | 
				
			||||||
use Illuminate\Support\Facades\DB;
 | 
					use Illuminate\Support\Facades\DB;
 | 
				
			||||||
use Illuminate\Support\Facades\Storage;
 | 
					use Illuminate\Support\Facades\Storage;
 | 
				
			||||||
use Illuminate\Support\Sleep;
 | 
					 | 
				
			||||||
use Spatie\SchemalessAttributes\Casts\SchemalessAttributes;
 | 
					use Spatie\SchemalessAttributes\Casts\SchemalessAttributes;
 | 
				
			||||||
use Spatie\SchemalessAttributes\SchemalessAttributesTrait;
 | 
					use Spatie\SchemalessAttributes\SchemalessAttributesTrait;
 | 
				
			||||||
use Illuminate\Support\Str;
 | 
					use Illuminate\Support\Str;
 | 
				
			||||||
@@ -468,53 +467,63 @@ $schema://$host {
 | 
				
			|||||||
        if ($this->skipServer()) {
 | 
					        if ($this->skipServer()) {
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        $checkIteration = 1;
 | 
					        $serverUptimeCheckNumber = $this->unreachable_count;
 | 
				
			||||||
        $isServerReady = false;
 | 
					        if ($this->unreachable_count < $tries) {
 | 
				
			||||||
        while ($checkIteration < $tries) {
 | 
					            $serverUptimeCheckNumber = $this->unreachable_count + 1;
 | 
				
			||||||
            ['uptime' => $uptime] = $this->validateConnection();
 | 
					        }
 | 
				
			||||||
            if ($uptime) {
 | 
					        if ($this->unreachable_count > $tries) {
 | 
				
			||||||
                if ($this->unreachable_notification_sent === true) {
 | 
					            $serverUptimeCheckNumber = $tries;
 | 
				
			||||||
                    $this->update(['unreachable_notification_sent' => false]);
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $serverUptimeCheckNumberMax = $tries;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // ray('server: ' . $this->name);
 | 
				
			||||||
 | 
					        // ray('serverUptimeCheckNumber: ' . $serverUptimeCheckNumber);
 | 
				
			||||||
 | 
					        // ray('serverUptimeCheckNumberMax: ' . $serverUptimeCheckNumberMax);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ['uptime' => $uptime] = $this->validateConnection();
 | 
				
			||||||
 | 
					        if ($uptime) {
 | 
				
			||||||
 | 
					            if ($this->unreachable_notification_sent === true) {
 | 
				
			||||||
 | 
					                $this->update(['unreachable_notification_sent' => false]);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            if ($serverUptimeCheckNumber >= $serverUptimeCheckNumberMax) {
 | 
				
			||||||
 | 
					                // Reached max number of retries
 | 
				
			||||||
 | 
					                if ($this->unreachable_notification_sent === false) {
 | 
				
			||||||
 | 
					                    ray('Server unreachable, sending notification...');
 | 
				
			||||||
 | 
					                    $this->team?->notify(new Unreachable($this));
 | 
				
			||||||
 | 
					                    $this->update(['unreachable_notification_sent' => true]);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if ($this->settings->is_reachable === true) {
 | 
				
			||||||
 | 
					                    $this->settings()->update([
 | 
				
			||||||
 | 
					                        'is_reachable' => false,
 | 
				
			||||||
 | 
					                    ]);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                foreach ($this->applications() as $application) {
 | 
				
			||||||
 | 
					                    $application->update(['status' => 'exited']);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                foreach ($this->databases() as $database) {
 | 
				
			||||||
 | 
					                    $database->update(['status' => 'exited']);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                foreach ($this->services()->get() as $service) {
 | 
				
			||||||
 | 
					                    $apps = $service->applications()->get();
 | 
				
			||||||
 | 
					                    $dbs = $service->databases()->get();
 | 
				
			||||||
 | 
					                    foreach ($apps as $app) {
 | 
				
			||||||
 | 
					                        $app->update(['status' => 'exited']);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    foreach ($dbs as $db) {
 | 
				
			||||||
 | 
					                        $db->update(['status' => 'exited']);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                $this->settings()->update([
 | 
					 | 
				
			||||||
                    'is_reachable' => true,
 | 
					 | 
				
			||||||
                ]);
 | 
					 | 
				
			||||||
                $isServerReady = true;
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                ray('Server is not ready yet.');
 | 
					                $this->update([
 | 
				
			||||||
                $checkIteration++;
 | 
					                    'unreachable_count' => $this->unreachable_count + 1,
 | 
				
			||||||
                Sleep::for(10)->seconds();
 | 
					                ]);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if ($isServerReady) {
 | 
					 | 
				
			||||||
            return $isServerReady;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if ($this->unreachable_notification_sent === false) {
 | 
					 | 
				
			||||||
            ray('Server unreachable, sending notification...');
 | 
					 | 
				
			||||||
            $this->team?->notify(new Unreachable($this));
 | 
					 | 
				
			||||||
            $this->update(['unreachable_notification_sent' => true]);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        $this->settings()->update([
 | 
					 | 
				
			||||||
            'is_reachable' => false,
 | 
					 | 
				
			||||||
        ]);
 | 
					 | 
				
			||||||
        foreach ($this->applications() as $application) {
 | 
					 | 
				
			||||||
            $application->update(['status' => 'exited']);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        foreach ($this->databases() as $database) {
 | 
					 | 
				
			||||||
            $database->update(['status' => 'exited']);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        foreach ($this->services()->get() as $service) {
 | 
					 | 
				
			||||||
            $apps = $service->applications()->get();
 | 
					 | 
				
			||||||
            $dbs = $service->databases()->get();
 | 
					 | 
				
			||||||
            foreach ($apps as $app) {
 | 
					 | 
				
			||||||
                $app->update(['status' => 'exited']);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            foreach ($dbs as $db) {
 | 
					 | 
				
			||||||
                $db->update(['status' => 'exited']);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return false;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    public function getDiskUsage()
 | 
					    public function getDiskUsage()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -762,11 +771,6 @@ $schema://$host {
 | 
				
			|||||||
            $server->settings()->update([
 | 
					            $server->settings()->update([
 | 
				
			||||||
                'is_reachable' => false,
 | 
					                'is_reachable' => false,
 | 
				
			||||||
            ]);
 | 
					            ]);
 | 
				
			||||||
            if (data_get($server, 'unreachable_notification_sent') === false) {
 | 
					 | 
				
			||||||
                ray('Server unreachable, sending notification...');
 | 
					 | 
				
			||||||
                $this->team?->notify(new Unreachable($this));
 | 
					 | 
				
			||||||
                $this->update(['unreachable_notification_sent' => true]);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return ['uptime' => false, 'error' => $e->getMessage()];
 | 
					            return ['uptime' => false, 'error' => $e->getMessage()];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ return [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // The release version of your application
 | 
					    // The release version of your application
 | 
				
			||||||
    // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
 | 
					    // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
 | 
				
			||||||
    'release' => '4.0.0-beta.273',
 | 
					    'release' => '4.0.0-beta.274',
 | 
				
			||||||
    // When left empty or `null` the Laravel environment will be used
 | 
					    // When left empty or `null` the Laravel environment will be used
 | 
				
			||||||
    'environment' => config('app.env'),
 | 
					    'environment' => config('app.env'),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,3 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
return '4.0.0-beta.273';
 | 
					return '4.0.0-beta.274';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "coolify": {
 | 
					    "coolify": {
 | 
				
			||||||
        "v4": {
 | 
					        "v4": {
 | 
				
			||||||
            "version": "4.0.0-beta.273"
 | 
					            "version": "4.0.0-beta.274"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user