workspaces should be in one cache key folder

pull/496/head
Frostebite 2023-02-10 04:46:31 +00:00
parent 3a140669c1
commit bb652ab73c
3 changed files with 31 additions and 31 deletions

30
dist/index.js generated vendored
View File

@ -5699,9 +5699,9 @@ class SharedWorkspaceLocking {
if (!(yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) { if (!(yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) {
return []; return [];
} }
return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/`)) return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`))
.map((x) => x.replace(`/`, ``)) .map((x) => x.replace(`/`, ``))
.filter((x) => x.includes(`_lock`)); .filter((x) => x.includes(`_${workspace}_lock`));
}); });
} }
static GetOrCreateLockedWorkspace(workspace, runId, buildParametersContext) { static GetOrCreateLockedWorkspace(workspace, runId, buildParametersContext) {
@ -5805,9 +5805,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}/`)) return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`))
.map((x) => x.replace(`/`, ``)) .map((x) => x.replace(`/`, ``))
.filter((x) => x.includes(`_workspace`)) .filter((x) => x.includes(`_${workspace}_workspace`))
.map((x) => Number(x))[0]; .map((x) => Number(x))[0];
}); });
} }
@ -5816,12 +5816,12 @@ class SharedWorkspaceLocking {
if (!(yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) { if (!(yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) {
return false; return false;
} }
const files = yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/`); const files = yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`);
const workspaceFileDoesNotExists = files.filter((x) => { const workspaceFileDoesNotExists = files.filter((x) => {
return x.includes(`_workspace`); return x.includes(`${workspace}_workspace`);
}).length === 0; }).length === 0;
const lockFilesExist = files.filter((x) => { const lockFilesExist = files.filter((x) => {
return x.includes(`_lock`); return x.includes(`${workspace}_lock`);
}).length > 0; }).length > 0;
return workspaceFileDoesNotExists || lockFilesExist; return workspaceFileDoesNotExists || lockFilesExist;
}); });
@ -5832,9 +5832,9 @@ class SharedWorkspaceLocking {
yield SharedWorkspaceLocking.LockWorkspace(workspace, lockId, buildParametersContext); yield SharedWorkspaceLocking.LockWorkspace(workspace, lockId, buildParametersContext);
} }
const timestamp = Date.now(); const timestamp = Date.now();
const file = `${timestamp}_workspace`; const file = `${timestamp}_${workspace}_workspace`;
fs.writeFileSync(file, ''); fs.writeFileSync(file, '');
yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 cp ./${file} ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/${file}`, false, true); yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 cp ./${file} ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`, false, true);
fs.rmSync(file); fs.rmSync(file);
const workspaces = yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`); const workspaces = yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`);
cloud_runner_logger_1.default.log(`All workspaces ${workspaces}`); cloud_runner_logger_1.default.log(`All workspaces ${workspaces}`);
@ -5848,25 +5848,25 @@ class SharedWorkspaceLocking {
} }
static LockWorkspace(workspace, runId, buildParametersContext) { static LockWorkspace(workspace, runId, buildParametersContext) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const file = `${Date.now()}_${runId}_lock`; const file = `${Date.now()}_${runId}_${workspace}_lock`;
fs.writeFileSync(file, ''); fs.writeFileSync(file, '');
yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 cp ./${file} ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/${file}`, false, true); yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 cp ./${file} ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`, false, true);
fs.rmSync(file); fs.rmSync(file);
return SharedWorkspaceLocking.HasWorkspaceLock(workspace, runId, buildParametersContext); return SharedWorkspaceLocking.HasWorkspaceLock(workspace, runId, buildParametersContext);
}); });
} }
static ReleaseWorkspace(workspace, runId, buildParametersContext) { static ReleaseWorkspace(workspace, runId, buildParametersContext) {
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}_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}/${workspace}/${file}`); cloud_runner_logger_1.default.log(`aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`);
yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/${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);
}); });
} }
static CleanupWorkspace(workspace, buildParametersContext) { static CleanupWorkspace(workspace, buildParametersContext) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace} --recursive`, false, true); yield cloud_runner_system_1.CloudRunnerSystem.Run(`aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey} --exclude "*" --include "*_${workspace}_*"`, false, true);
}); });
} }
static ReadLines(command) { static ReadLines(command) {

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

View File

@ -36,11 +36,11 @@ export class SharedWorkspaceLocking {
return ( return (
await SharedWorkspaceLocking.ReadLines( await SharedWorkspaceLocking.ReadLines(
`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/`, `aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`,
) )
) )
.map((x) => x.replace(`/`, ``)) .map((x) => x.replace(`/`, ``))
.filter((x) => x.includes(`_lock`)); .filter((x) => x.includes(`_${workspace}_lock`));
} }
public static async GetOrCreateLockedWorkspace( public static async GetOrCreateLockedWorkspace(
workspace: string, workspace: string,
@ -171,11 +171,11 @@ export class SharedWorkspaceLocking {
return ( return (
await SharedWorkspaceLocking.ReadLines( await SharedWorkspaceLocking.ReadLines(
`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/`, `aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`,
) )
) )
.map((x) => x.replace(`/`, ``)) .map((x) => x.replace(`/`, ``))
.filter((x) => x.includes(`_workspace`)) .filter((x) => x.includes(`_${workspace}_workspace`))
.map((x) => Number(x))[0]; .map((x) => Number(x))[0];
} }
@ -184,17 +184,17 @@ export class SharedWorkspaceLocking {
return false; return false;
} }
const files = await SharedWorkspaceLocking.ReadLines( const files = await SharedWorkspaceLocking.ReadLines(
`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/`, `aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`,
); );
const workspaceFileDoesNotExists = const workspaceFileDoesNotExists =
files.filter((x) => { files.filter((x) => {
return x.includes(`_workspace`); return x.includes(`${workspace}_workspace`);
}).length === 0; }).length === 0;
const lockFilesExist = const lockFilesExist =
files.filter((x) => { files.filter((x) => {
return x.includes(`_lock`); return x.includes(`${workspace}_lock`);
}).length > 0; }).length > 0;
return workspaceFileDoesNotExists || lockFilesExist; return workspaceFileDoesNotExists || lockFilesExist;
@ -209,10 +209,10 @@ export class SharedWorkspaceLocking {
await SharedWorkspaceLocking.LockWorkspace(workspace, lockId, buildParametersContext); await SharedWorkspaceLocking.LockWorkspace(workspace, lockId, buildParametersContext);
} }
const timestamp = Date.now(); const timestamp = Date.now();
const file = `${timestamp}_workspace`; const file = `${timestamp}_${workspace}_workspace`;
fs.writeFileSync(file, ''); fs.writeFileSync(file, '');
await CloudRunnerSystem.Run( await CloudRunnerSystem.Run(
`aws s3 cp ./${file} ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/${file}`, `aws s3 cp ./${file} ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`,
false, false,
true, true,
); );
@ -238,10 +238,10 @@ export class SharedWorkspaceLocking {
runId: string, runId: string,
buildParametersContext: BuildParameters, buildParametersContext: BuildParameters,
): Promise<boolean> { ): Promise<boolean> {
const file = `${Date.now()}_${runId}_lock`; const file = `${Date.now()}_${runId}_${workspace}_lock`;
fs.writeFileSync(file, ''); fs.writeFileSync(file, '');
await CloudRunnerSystem.Run( await CloudRunnerSystem.Run(
`aws s3 cp ./${file} ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/${file}`, `aws s3 cp ./${file} ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`,
false, false,
true, true,
); );
@ -256,14 +256,14 @@ export class SharedWorkspaceLocking {
buildParametersContext: BuildParameters, buildParametersContext: BuildParameters,
): Promise<boolean> { ): Promise<boolean> {
const file = (await SharedWorkspaceLocking.GetAllLocks(workspace, buildParametersContext)).filter((x) => const file = (await SharedWorkspaceLocking.GetAllLocks(workspace, buildParametersContext)).filter((x) =>
x.includes(`_${runId}_lock`), x.includes(`_${runId}_${workspace}_lock`),
); );
CloudRunnerLogger.log(`Deleting lock ${workspace}/${file}`); CloudRunnerLogger.log(`Deleting lock ${workspace}/${file}`);
CloudRunnerLogger.log( CloudRunnerLogger.log(
`aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/${file}`, `aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`,
); );
await CloudRunnerSystem.Run( await CloudRunnerSystem.Run(
`aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/${file}`, `aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${file}`,
false, false,
true, true,
); );
@ -273,7 +273,7 @@ export class SharedWorkspaceLocking {
public static async CleanupWorkspace(workspace: string, buildParametersContext: BuildParameters) { public static async CleanupWorkspace(workspace: string, buildParametersContext: BuildParameters) {
await CloudRunnerSystem.Run( await CloudRunnerSystem.Run(
`aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace} --recursive`, `aws s3 rm ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey} --exclude "*" --include "*_${workspace}_*"`,
false, false,
true, true,
); );