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, ''); 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) {

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); 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> {