mirror of
https://github.com/appwrite/appwrite
synced 2026-05-23 17:08:45 +00:00
Fix build activation race condition
This commit is contained in:
parent
7a465dc8f8
commit
2088792d09
3 changed files with 26 additions and 15 deletions
12
composer.lock
generated
12
composer.lock
generated
|
|
@ -4807,16 +4807,16 @@
|
|||
"packages-dev": [
|
||||
{
|
||||
"name": "appwrite/sdk-generator",
|
||||
"version": "0.41.0",
|
||||
"version": "0.41.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/appwrite/sdk-generator.git",
|
||||
"reference": "96316272a3cee1a3abf5b9f05ae49ebbff03725e"
|
||||
"reference": "6d9318abf4542a757c87abf056557d6afa1dc06b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/96316272a3cee1a3abf5b9f05ae49ebbff03725e",
|
||||
"reference": "96316272a3cee1a3abf5b9f05ae49ebbff03725e",
|
||||
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/6d9318abf4542a757c87abf056557d6afa1dc06b",
|
||||
"reference": "6d9318abf4542a757c87abf056557d6afa1dc06b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -4852,9 +4852,9 @@
|
|||
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
|
||||
"support": {
|
||||
"issues": "https://github.com/appwrite/sdk-generator/issues",
|
||||
"source": "https://github.com/appwrite/sdk-generator/tree/0.41.0"
|
||||
"source": "https://github.com/appwrite/sdk-generator/tree/0.41.1"
|
||||
},
|
||||
"time": "2025-05-26T09:47:45+00:00"
|
||||
"time": "2025-06-01T04:20:04+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/annotations",
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@ services:
|
|||
appwrite-console:
|
||||
<<: *x-logging
|
||||
container_name: appwrite-console
|
||||
image: appwrite/console:6.0.32
|
||||
image: appwrite/console:6.0.35
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- appwrite
|
||||
|
|
|
|||
|
|
@ -275,6 +275,7 @@ class Builds extends Action
|
|||
$deployment = $dbForProject->updateDocument('deployments', $deployment->getId(), $deployment);
|
||||
|
||||
if ($deployment->getInternalId() === $resource->getAttribute('latestDeploymentInternalId', '')) {
|
||||
$resource = $dbForProject->getDocument($resource->getCollection(), $resource->getId());
|
||||
$resource = $resource->setAttribute('latestDeploymentStatus', $deployment->getAttribute('status', ''));
|
||||
$dbForProject->updateDocument($resource->getCollection(), $resource->getId(), $resource);
|
||||
}
|
||||
|
|
@ -525,6 +526,7 @@ class Builds extends Action
|
|||
$deployment = $dbForProject->updateDocument('deployments', $deployment->getId(), $deployment);
|
||||
|
||||
if ($deployment->getInternalId() === $resource->getAttribute('latestDeploymentInternalId', '')) {
|
||||
$resource = $dbForProject->getDocument($resource->getCollection(), $resource->getId());
|
||||
$resource = $resource->setAttribute('latestDeploymentStatus', $deployment->getAttribute('status', ''));
|
||||
$dbForProject->updateDocument($resource->getCollection(), $resource->getId(), $resource);
|
||||
}
|
||||
|
|
@ -1056,6 +1058,7 @@ class Builds extends Action
|
|||
$deployment = $dbForProject->updateDocument('deployments', $deploymentId, $deployment);
|
||||
|
||||
if ($deployment->getInternalId() === $resource->getAttribute('latestDeploymentInternalId', '')) {
|
||||
$resource = $dbForProject->getDocument($resource->getCollection(), $resource->getId());
|
||||
$resource = $resource->setAttribute('latestDeploymentStatus', $deployment->getAttribute('status', ''));
|
||||
$dbForProject->updateDocument($resource->getCollection(), $resource->getId(), $resource);
|
||||
}
|
||||
|
|
@ -1073,15 +1076,22 @@ class Builds extends Action
|
|||
/** Set auto deploy */
|
||||
if ($deployment->getAttribute('activate') === true) {
|
||||
// Check if current active deployment started later than this deployment
|
||||
$currentDeploymentId = $resource->getAttribute('deploymentId', '');
|
||||
if (!empty($currentDeploymentId)) {
|
||||
$currentDeployment = $dbForProject->getDocument('deployments', $currentDeploymentId);
|
||||
if (!$currentDeployment->isEmpty()) {
|
||||
$currentStartTime = $currentDeployment->getAttribute('buildStartedAt', '');
|
||||
$newStartTime = $deployment->getAttribute('buildStartedAt', '');
|
||||
$resource = $dbForProject->getDocument($resource->getCollection(), $resource->getId());
|
||||
$currentActiveDeploymentId = $resource->getAttribute('deploymentId', '');
|
||||
if (!empty($currentActiveDeploymentId)) {
|
||||
$currentActiveDeployment = $dbForProject->getDocument('deployments', $currentActiveDeploymentId);
|
||||
if (!$currentActiveDeployment->isEmpty()) {
|
||||
$currentActiveStartTime = $currentActiveDeployment->getAttribute('buildStartedAt', '');
|
||||
$currentActiveEndTime = $currentActiveDeployment->getAttribute('buildEndedAt', '');
|
||||
$deploymentStartTime = $deployment->getAttribute('buildStartedAt', '');
|
||||
$deploymentEndTime = $deployment->getAttribute('buildEndedAt', '');
|
||||
|
||||
if (!empty($currentStartTime) && !empty($newStartTime) && $currentStartTime > $newStartTime) {
|
||||
Console::info('Skipping auto-activation as current deployment started later');
|
||||
// Skip auto-activation if:
|
||||
// 1. Current active deployment started later than deployment that is being activated, AND
|
||||
// 2. Current active deployment finished earlier than deployment that is being activated
|
||||
if ((!empty($currentActiveStartTime) && !empty($deploymentStartTime) && $currentActiveStartTime > $deploymentStartTime) &&
|
||||
(!empty($currentActiveEndTime) && !empty($deploymentEndTime) && $currentActiveEndTime < $deploymentEndTime)) {
|
||||
Console::info('Skipping auto-activation as current deployment is more recent');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -1263,6 +1273,7 @@ class Builds extends Action
|
|||
$deployment = $dbForProject->updateDocument('deployments', $deploymentId, $deployment);
|
||||
|
||||
if ($deployment->getInternalId() === $resource->getAttribute('latestDeploymentInternalId', '')) {
|
||||
$resource = $dbForProject->getDocument($resource->getCollection(), $resource->getId());
|
||||
$resource = $resource->setAttribute('latestDeploymentStatus', $deployment->getAttribute('status', ''));
|
||||
$dbForProject->updateDocument($resource->getCollection(), $resource->getId(), $resource);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue