Better locking
parent
be914c1b7a
commit
728801a531
|
|
@ -684,7 +684,7 @@ class SharedWorkspaceLocking {
|
||||||
fs.writeFileSync(file, '');
|
fs.writeFileSync(file, '');
|
||||||
yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 cp ./${file} s3://game-ci-test-storage/locks/${workspace}/${file}`, false, true);
|
yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 cp ./${file} s3://game-ci-test-storage/locks/${workspace}/${file}`, false, true);
|
||||||
fs.rmSync(file);
|
fs.rmSync(file);
|
||||||
return SharedWorkspaceLocking.HasWorkspaceLock(workspace);
|
return SharedWorkspaceLocking.HasWorkspaceLock(workspace, runId);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
static ReleaseWorkspace(workspace, runId) {
|
static ReleaseWorkspace(workspace, runId) {
|
||||||
|
|
@ -697,21 +697,15 @@ class SharedWorkspaceLocking {
|
||||||
cloud_runner_logger_1.default.log(`Deleting file ${file}`);
|
cloud_runner_logger_1.default.log(`Deleting file ${file}`);
|
||||||
cloud_runner_logger_1.default.log(`aws s3 rm s3://game-ci-test-storage/locks/${workspace}/${file}`);
|
cloud_runner_logger_1.default.log(`aws s3 rm s3://game-ci-test-storage/locks/${workspace}/${file}`);
|
||||||
yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 rm s3://game-ci-test-storage/locks/${workspace}/${file}`, false, true);
|
yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 rm s3://game-ci-test-storage/locks/${workspace}/${file}`, false, true);
|
||||||
return !SharedWorkspaceLocking.HasWorkspaceLock(workspace);
|
return !SharedWorkspaceLocking.HasWorkspaceLock(workspace, runId);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
static HasWorkspaceLock(workspace) {
|
static HasWorkspaceLock(workspace, runId) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
if (!(yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace))) {
|
if (!(yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
cloud_runner_logger_1.default.log((yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 ls s3://game-ci-test-storage/locks/${workspace}/`, false, true))
|
return (yield SharedWorkspaceLocking.GetAllLocks(workspace)).filter((x) => x.includes(runId)).length > 0;
|
||||||
.split('\n')
|
|
||||||
.map((x) => {
|
|
||||||
return x.split(' ');
|
|
||||||
})
|
|
||||||
.length.toString());
|
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
static IsWorkspaceLocked(workspace) {
|
static IsWorkspaceLocked(workspace) {
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -72,7 +72,7 @@ export class SharedWorkspaceLocking {
|
||||||
);
|
);
|
||||||
fs.rmSync(file);
|
fs.rmSync(file);
|
||||||
|
|
||||||
return SharedWorkspaceLocking.HasWorkspaceLock(workspace);
|
return SharedWorkspaceLocking.HasWorkspaceLock(workspace, runId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async ReleaseWorkspace(workspace: string, runId: string): Promise<boolean> {
|
public static async ReleaseWorkspace(workspace: string, runId: string): Promise<boolean> {
|
||||||
|
|
@ -85,22 +85,14 @@ export class SharedWorkspaceLocking {
|
||||||
CloudRunnerLogger.log(`aws s3 rm s3://game-ci-test-storage/locks/${workspace}/${file}`);
|
CloudRunnerLogger.log(`aws s3 rm s3://game-ci-test-storage/locks/${workspace}/${file}`);
|
||||||
await CloudRunnerSystem.Run(`aws s3 rm s3://game-ci-test-storage/locks/${workspace}/${file}`, false, true);
|
await CloudRunnerSystem.Run(`aws s3 rm s3://game-ci-test-storage/locks/${workspace}/${file}`, false, true);
|
||||||
|
|
||||||
return !SharedWorkspaceLocking.HasWorkspaceLock(workspace);
|
return !SharedWorkspaceLocking.HasWorkspaceLock(workspace, runId);
|
||||||
}
|
}
|
||||||
public static async HasWorkspaceLock(workspace: string): Promise<boolean> {
|
public static async HasWorkspaceLock(workspace: string, runId: string): Promise<boolean> {
|
||||||
if (!(await SharedWorkspaceLocking.DoesWorkspaceExist(workspace))) {
|
if (!(await SharedWorkspaceLocking.DoesWorkspaceExist(workspace))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
CloudRunnerLogger.log(
|
|
||||||
(await CloudRunnerSystem.Run(`aws s3 ls s3://game-ci-test-storage/locks/${workspace}/`, false, true))
|
|
||||||
.split('\n')
|
|
||||||
.map((x) => {
|
|
||||||
return x.split(' ');
|
|
||||||
})
|
|
||||||
.length.toString(),
|
|
||||||
);
|
|
||||||
|
|
||||||
return true;
|
return (await SharedWorkspaceLocking.GetAllLocks(workspace)).filter((x) => x.includes(runId)).length > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async IsWorkspaceLocked(workspace: string): Promise<boolean> {
|
public static async IsWorkspaceLocked(workspace: string): Promise<boolean> {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue