feat: extend database proxy timeout cap to support week-long ETL jobs

This commit is contained in:
ShadowArcanist 2025-12-23 17:52:29 +01:00
parent 14b0160165
commit 8dada50e91
19 changed files with 20 additions and 21 deletions

View file

@ -29,8 +29,8 @@ class StartDatabaseProxy
if ($database->proxy_timeout <= 0) {
throw new \Exception('Proxy timeout must be greater than 0.');
}
if ($database->proxy_timeout > 86400) {
throw new \Exception('Proxy timeout must not exceed 86400 seconds (24 hours).');
if ($database->proxy_timeout > 31536000) {
throw new \Exception('Proxy timeout must not exceed 31536000 seconds (1 year).');
}
$databaseType = $database->database_type;

View file

@ -82,7 +82,7 @@ class General extends Component
'portsMappings' => 'nullable|string',
'isPublic' => 'nullable|boolean',
'publicPort' => 'nullable|integer',
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
'proxyTimeout' => 'nullable|integer|min:0|max:31536000',
'customDockerRunOptions' => 'nullable|string',
'dbUrl' => 'nullable|string',
'dbUrlPublic' => 'nullable|string',

View file

@ -93,7 +93,7 @@ class General extends Component
'portsMappings' => 'nullable|string',
'isPublic' => 'nullable|boolean',
'publicPort' => 'nullable|integer',
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
'proxyTimeout' => 'nullable|integer|min:0|max:31536000',
'customDockerRunOptions' => 'nullable|string',
'dbUrl' => 'nullable|string',
'dbUrlPublic' => 'nullable|string',

View file

@ -96,7 +96,7 @@ class General extends Component
'portsMappings' => 'nullable|string',
'isPublic' => 'nullable|boolean',
'publicPort' => 'nullable|integer',
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
'proxyTimeout' => 'nullable|integer|min:0|max:31536000',
'customDockerRunOptions' => 'nullable|string',
'dbUrl' => 'nullable|string',
'dbUrlPublic' => 'nullable|string',

View file

@ -81,8 +81,7 @@ class General extends Component
'portsMappings' => 'nullable',
'isPublic' => 'nullable|boolean',
'publicPort' => 'nullable|integer',
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
'proxyTimeout' => 'nullable|integer|min:0|max:31536000',
'isLogDrainEnabled' => 'nullable|boolean',
'customDockerRunOptions' => 'nullable',
'enableSsl' => 'boolean',

View file

@ -80,7 +80,7 @@ class General extends Component
'portsMappings' => 'nullable',
'isPublic' => 'nullable|boolean',
'publicPort' => 'nullable|integer',
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
'proxyTimeout' => 'nullable|integer|min:0|max:31536000',
'isLogDrainEnabled' => 'nullable|boolean',
'customDockerRunOptions' => 'nullable',
'enableSsl' => 'boolean',

View file

@ -83,7 +83,7 @@ class General extends Component
'portsMappings' => 'nullable',
'isPublic' => 'nullable|boolean',
'publicPort' => 'nullable|integer',
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
'proxyTimeout' => 'nullable|integer|min:0|max:31536000',
'isLogDrainEnabled' => 'nullable|boolean',
'customDockerRunOptions' => 'nullable',
'enableSsl' => 'boolean',

View file

@ -95,7 +95,7 @@ class General extends Component
'portsMappings' => 'nullable',
'isPublic' => 'nullable|boolean',
'publicPort' => 'nullable|integer',
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
'proxyTimeout' => 'nullable|integer|min:0|max:31536000',
'isLogDrainEnabled' => 'nullable|boolean',
'customDockerRunOptions' => 'nullable',
'enableSsl' => 'boolean',

View file

@ -76,7 +76,7 @@ class General extends Component
'portsMappings' => 'nullable',
'isPublic' => 'nullable|boolean',
'publicPort' => 'nullable|integer',
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
'proxyTimeout' => 'nullable|integer|min:0|max:31536000',
'isLogDrainEnabled' => 'nullable|boolean',
'customDockerRunOptions' => 'nullable',
'redisUsername' => 'required',

View file

@ -45,7 +45,7 @@ class Database extends Component
'image' => 'required',
'excludeFromStatus' => 'required|boolean',
'publicPort' => 'nullable|integer',
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
'proxyTimeout' => 'nullable|integer|min:0|max:31536000',
'isPublic' => 'required|boolean',
'isLogDrainEnabled' => 'required|boolean',
];

View file

@ -81,7 +81,7 @@
canGate="update" :canResource="$database" />
<x-forms.input value="1800" id="proxyTimeout"
label="Proxy Timeout (seconds)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 31536000 seconds (1 year)"
canGate="update" :canResource="$database" />
</div>
</div>

View file

@ -118,7 +118,7 @@
canGate="update" :canResource="$database" />
<x-forms.input value="1800" id="proxyTimeout"
label="Proxy Timeout (seconds)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 31536000 seconds (1 year)"
canGate="update" :canResource="$database" />
</div>
</div>

View file

@ -118,7 +118,7 @@
canGate="update" :canResource="$database" />
<x-forms.input value="1800" id="proxyTimeout"
label="Proxy Timeout (seconds)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 31536000 seconds (1 year)"
canGate="update" :canResource="$database" />
</div>
</div>

View file

@ -142,7 +142,7 @@
id="publicPort" label="Public Port" canGate="update" :canResource="$database" />
<x-forms.input value="1800" id="proxyTimeout"
label="Proxy Timeout (seconds)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 31536000 seconds (1 year)"
canGate="update" :canResource="$database" />
</div>
</div>

View file

@ -156,7 +156,7 @@
id="publicPort" label="Public Port" canGate="update" :canResource="$database" />
<x-forms.input value="1800" id="proxyTimeout"
label="Proxy Timeout (seconds)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 31536000 seconds (1 year)"
canGate="update" :canResource="$database" />
</div>
</div>

View file

@ -158,7 +158,7 @@
id="publicPort" label="Public Port" canGate="update" :canResource="$database" />
<x-forms.input value="1800" id="proxyTimeout"
label="Proxy Timeout (seconds)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 31536000 seconds (1 year)"
canGate="update" :canResource="$database" />
</div>
</div>

View file

@ -168,7 +168,7 @@
label="Public Port" canGate="update" :canResource="$database" />
<x-forms.input value="1800" id="proxyTimeout"
label="Proxy Timeout (seconds)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 31536000 seconds (1 year)"
canGate="update" :canResource="$database" />
</div>
</div>

View file

@ -137,7 +137,7 @@
id="publicPort" label="Public Port" canGate="update" :canResource="$database" />
<x-forms.input value="1800" id="proxyTimeout"
label="Proxy Timeout (seconds)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 31536000 seconds (1 year)"
canGate="update" :canResource="$database" />
</div>
</div>

View file

@ -34,7 +34,7 @@
label="Public Port" />
<x-forms.input canGate="update" :canResource="$database" value="1800" id="proxyTimeout"
label="Proxy Timeout (seconds)"
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)" />
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 31536000 seconds (1 year)" />
<x-forms.checkbox canGate="update" :canResource="$database" instantSave id="isPublic" label="Make it publicly available" />
</div>
@if ($db_url_public)