Better locking

pull/461/head
Frostebite 2022-09-29 23:34:31 +01:00
parent be914c1b7a
commit 728801a531
3 changed files with 9 additions and 23 deletions

14
dist/index.js vendored
View File

@ -684,7 +684,7 @@ class SharedWorkspaceLocking {
fs.writeFileSync(file, '');
yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 cp ./${file} s3://game-ci-test-storage/locks/${workspace}/${file}`, false, true);
fs.rmSync(file);
return SharedWorkspaceLocking.HasWorkspaceLock(workspace);
return SharedWorkspaceLocking.HasWorkspaceLock(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(`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);
return !SharedWorkspaceLocking.HasWorkspaceLock(workspace);
return !SharedWorkspaceLocking.HasWorkspaceLock(workspace, runId);
});
}
static HasWorkspaceLock(workspace) {
static HasWorkspaceLock(workspace, runId) {
return __awaiter(this, void 0, void 0, function* () {
if (!(yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace))) {
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))
.split('\n')
.map((x) => {
return x.split(' ');
})
.length.toString());
return true;
return (yield SharedWorkspaceLocking.GetAllLocks(workspace)).filter((x) => x.includes(runId)).length > 0;
});
}
static IsWorkspaceLocked(workspace) {

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -72,7 +72,7 @@ export class SharedWorkspaceLocking {
);
fs.rmSync(file);
return SharedWorkspaceLocking.HasWorkspaceLock(workspace);
return SharedWorkspaceLocking.HasWorkspaceLock(workspace, runId);
}
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}`);
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))) {
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> {