workspaces should be in one cache key folder
parent
3a140669c1
commit
bb652ab73c
|
|
@ -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) {
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -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,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue