Max workspaces and strong consistency locks

pull/437/head
Frostebite 2022-10-18 18:37:23 +01:00
parent 641958ea44
commit 141bfef2fd
3 changed files with 13 additions and 3 deletions

7
dist/index.js vendored
View File

@ -5127,7 +5127,9 @@ class SharedWorkspaceLocking {
if (!(yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) { if (!(yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) {
throw new Error("Workspace doesn't exist, can't call get all locks"); throw new Error("Workspace doesn't exist, can't call get all locks");
} }
return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/`)).map((x) => x.replace(`/`, ``)); return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/`))
.map((x) => x.replace(`/`, ``))
.filter((x) => x.includes(`_lock`));
}); });
} }
static GetOrCreateLockedWorkspace(workspace, runId, buildParametersContext) { static GetOrCreateLockedWorkspace(workspace, runId, buildParametersContext) {
@ -5190,6 +5192,9 @@ class SharedWorkspaceLocking {
} }
static IsWorkspaceBelowMax(workspace, buildParametersContext) { static IsWorkspaceBelowMax(workspace, buildParametersContext) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
if (!(yield SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext))) {
return true;
}
const workspaces = yield SharedWorkspaceLocking.GetAllWorkspaces(buildParametersContext); const workspaces = yield SharedWorkspaceLocking.GetAllWorkspaces(buildParametersContext);
const ordered = []; const ordered = [];
for (const ws of workspaces) { for (const ws of workspaces) {

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -28,7 +28,9 @@ export class SharedWorkspaceLocking {
await SharedWorkspaceLocking.ReadLines( await SharedWorkspaceLocking.ReadLines(
`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/`, `aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/`,
) )
).map((x) => x.replace(`/`, ``)); )
.map((x) => x.replace(`/`, ``))
.filter((x) => x.includes(`_lock`));
} }
public static async GetOrCreateLockedWorkspace( public static async GetOrCreateLockedWorkspace(
workspace: string, workspace: string,
@ -112,6 +114,9 @@ export class SharedWorkspaceLocking {
workspace: string, workspace: string,
buildParametersContext: BuildParameters, buildParametersContext: BuildParameters,
): Promise<boolean> { ): Promise<boolean> {
if (!(await SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext))) {
return true;
}
const workspaces = await SharedWorkspaceLocking.GetAllWorkspaces(buildParametersContext); const workspaces = await SharedWorkspaceLocking.GetAllWorkspaces(buildParametersContext);
const ordered: any[] = []; const ordered: any[] = [];
for (const ws of workspaces) { for (const ws of workspaces) {