workspaces should be in one cache key folder

pull/496/head
Frostebite 2023-02-10 05:34:37 +00:00
parent 077b49da17
commit 8d74152df5
3 changed files with 13 additions and 19 deletions

14
dist/index.js generated vendored
View File

@ -5680,7 +5680,7 @@ class SharedWorkspaceLocking {
} }
static GetAllWorkspaces(buildParametersContext) { static GetAllWorkspaces(buildParametersContext) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
if (!(yield SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext))) { if (!(yield SharedWorkspaceLocking.DoesCacheKeyTopLevelExist(buildParametersContext))) {
return []; return [];
} }
return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`)) return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`))
@ -5688,12 +5688,10 @@ class SharedWorkspaceLocking {
.filter((x) => x.includes(`_workspace`)); .filter((x) => x.includes(`_workspace`));
}); });
} }
static DoesWorkspaceTopLevelExist(buildParametersContext) { static DoesCacheKeyTopLevelExist(buildParametersContext) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceBucketRoot}`); const lines = yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceBucketRoot}`);
return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}`)) return lines.map((x) => x.replace(`/`, ``)).includes(buildParametersContext.cacheKey);
.map((x) => x.replace(`/`, ``))
.includes(buildParametersContext.cacheKey);
}); });
} }
static GetAllLocks(workspace, buildParametersContext) { static GetAllLocks(workspace, buildParametersContext) {
@ -5712,7 +5710,7 @@ class SharedWorkspaceLocking {
return; return;
} }
try { try {
if (yield SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext)) { if (yield SharedWorkspaceLocking.DoesCacheKeyTopLevelExist(buildParametersContext)) {
const workspaces = yield SharedWorkspaceLocking.GetFreeWorkspaces(buildParametersContext); const workspaces = yield SharedWorkspaceLocking.GetFreeWorkspaces(buildParametersContext);
cloud_runner_logger_1.default.log(`run agent ${runId} is trying to access a workspace, free: ${JSON.stringify(workspaces)}`); cloud_runner_logger_1.default.log(`run agent ${runId} is trying to access a workspace, free: ${JSON.stringify(workspaces)}`);
for (const element of workspaces) { for (const element of workspaces) {
@ -5861,7 +5859,7 @@ class SharedWorkspaceLocking {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const file = (yield SharedWorkspaceLocking.GetAllLocks(workspace, buildParametersContext)).filter((x) => x.includes(`_${runId}_${workspace}_lock`)); const file = (yield SharedWorkspaceLocking.GetAllLocks(workspace, buildParametersContext)).filter((x) => x.includes(`_${runId}_${workspace}_lock`));
cloud_runner_logger_1.default.log(`Deleting lock ${workspace}/${file}`); cloud_runner_logger_1.default.log(`Deleting lock ${workspace}/${file}`);
cloud_runner_logger_1.default.log(`aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`); cloud_runner_logger_1.default.log(`rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`);
yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`, false, true); yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`, false, true);
return !SharedWorkspaceLocking.HasWorkspaceLock(workspace, runId, buildParametersContext); return !SharedWorkspaceLocking.HasWorkspaceLock(workspace, runId, buildParametersContext);
}); });

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

View File

@ -12,7 +12,7 @@ export class SharedWorkspaceLocking {
return `${SharedWorkspaceLocking.workspaceBucketRoot}locks/`; return `${SharedWorkspaceLocking.workspaceBucketRoot}locks/`;
} }
public static async GetAllWorkspaces(buildParametersContext: BuildParameters): Promise<string[]> { public static async GetAllWorkspaces(buildParametersContext: BuildParameters): Promise<string[]> {
if (!(await SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext))) { if (!(await SharedWorkspaceLocking.DoesCacheKeyTopLevelExist(buildParametersContext))) {
return []; return [];
} }
@ -24,12 +24,10 @@ export class SharedWorkspaceLocking {
.map((x) => x.replace(`/`, ``)) .map((x) => x.replace(`/`, ``))
.filter((x) => x.includes(`_workspace`)); .filter((x) => x.includes(`_workspace`));
} }
public static async DoesWorkspaceTopLevelExist(buildParametersContext: BuildParameters) { public static async DoesCacheKeyTopLevelExist(buildParametersContext: BuildParameters) {
await SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceBucketRoot}`); const lines = await SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceBucketRoot}`);
return (await SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}`)) return lines.map((x) => x.replace(`/`, ``)).includes(buildParametersContext.cacheKey);
.map((x) => x.replace(`/`, ``))
.includes(buildParametersContext.cacheKey);
} }
public static async GetAllLocks(workspace: string, buildParametersContext: BuildParameters): Promise<string[]> { public static async GetAllLocks(workspace: string, buildParametersContext: BuildParameters): Promise<string[]> {
if (!(await SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) { if (!(await SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) {
@ -54,7 +52,7 @@ export class SharedWorkspaceLocking {
} }
try { try {
if (await SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext)) { if (await SharedWorkspaceLocking.DoesCacheKeyTopLevelExist(buildParametersContext)) {
const workspaces = await SharedWorkspaceLocking.GetFreeWorkspaces(buildParametersContext); const workspaces = await SharedWorkspaceLocking.GetFreeWorkspaces(buildParametersContext);
CloudRunnerLogger.log( CloudRunnerLogger.log(
`run agent ${runId} is trying to access a workspace, free: ${JSON.stringify(workspaces)}`, `run agent ${runId} is trying to access a workspace, free: ${JSON.stringify(workspaces)}`,
@ -261,9 +259,7 @@ export class SharedWorkspaceLocking {
x.includes(`_${runId}_${workspace}_lock`), x.includes(`_${runId}_${workspace}_lock`),
); );
CloudRunnerLogger.log(`Deleting lock ${workspace}/${file}`); CloudRunnerLogger.log(`Deleting lock ${workspace}/${file}`);
CloudRunnerLogger.log( CloudRunnerLogger.log(`rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`);
`aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`,
);
await CloudRunnerSystem.Run( await CloudRunnerSystem.Run(
`aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`, `aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`,
false, false,