pull/496/head
Frostebite 2023-02-19 02:42:26 +00:00
parent 0e47db3739
commit 520a9c345b
4 changed files with 25 additions and 3 deletions

12
dist/index.js generated vendored
View File

@ -1089,7 +1089,7 @@ class CloudRunner {
yield CloudRunner.setup(buildParameters);
try {
if (buildParameters.retainWorkspace) {
CloudRunner.lockedWorkspace = `${CloudRunner.retainedWorkspacePrefix}-${CloudRunner.buildParameters.buildGuid}`;
CloudRunner.lockedWorkspace = shared_workspace_locking_1.default.NewWorkspaceName();
const result = yield shared_workspace_locking_1.default.GetOrCreateLockedWorkspace(CloudRunner.lockedWorkspace, CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters);
if (result) {
cloud_runner_logger_1.default.logLine(`Using retained workspace ${CloudRunner.lockedWorkspace}`);
@ -5750,6 +5750,9 @@ class SharedWorkspaceLocking {
return lines.map((x) => x.replace(`/`, ``)).includes(buildParametersContext.cacheKey);
});
}
static NewWorkspaceName() {
return `${cloud_runner_1.default.retainedWorkspacePrefix}-${cloud_runner_1.default.buildParameters.buildGuid}`;
}
static GetAllLocksForWorkspace(workspace, buildParametersContext) {
return __awaiter(this, void 0, void 0, function* () {
if (!(yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) {
@ -5777,6 +5780,10 @@ class SharedWorkspaceLocking {
}
}
}
if (yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext)) {
workspace = SharedWorkspaceLocking.NewWorkspaceName();
cloud_runner_1.default.lockedWorkspace = workspace;
}
const createResult = yield SharedWorkspaceLocking.CreateWorkspace(workspace, buildParametersContext, runId);
const lockResult = yield SharedWorkspaceLocking.LockWorkspace(workspace, runId, buildParametersContext);
cloud_runner_logger_1.default.log(`run agent ${runId} didn't find a free workspace so created: ${workspace} createWorkspaceSuccess: ${createResult} Lock:${lockResult}`);
@ -5877,6 +5884,9 @@ class SharedWorkspaceLocking {
if (lockId !== ``) {
yield SharedWorkspaceLocking.LockWorkspace(workspace, lockId, buildParametersContext);
}
if (yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext)) {
throw new Error(`${workspace} already exists`);
}
const timestamp = Date.now();
const file = `${timestamp}_${workspace}_workspace`;
fs.writeFileSync(file, '');

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

View File

@ -84,7 +84,7 @@ class CloudRunner {
await CloudRunner.setup(buildParameters);
try {
if (buildParameters.retainWorkspace) {
CloudRunner.lockedWorkspace = `${CloudRunner.retainedWorkspacePrefix}-${CloudRunner.buildParameters.buildGuid}`;
CloudRunner.lockedWorkspace = SharedWorkspaceLocking.NewWorkspaceName();
const result = await SharedWorkspaceLocking.GetOrCreateLockedWorkspace(
CloudRunner.lockedWorkspace,

View File

@ -30,6 +30,10 @@ export class SharedWorkspaceLocking {
return lines.map((x) => x.replace(`/`, ``)).includes(buildParametersContext.cacheKey);
}
public static NewWorkspaceName() {
return `${CloudRunner.retainedWorkspacePrefix}-${CloudRunner.buildParameters.buildGuid}`;
}
public static async GetAllLocksForWorkspace(
workspace: string,
buildParametersContext: BuildParameters,
@ -71,6 +75,11 @@ export class SharedWorkspaceLocking {
}
}
if (await SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext)) {
workspace = SharedWorkspaceLocking.NewWorkspaceName();
CloudRunner.lockedWorkspace = workspace;
}
const createResult = await SharedWorkspaceLocking.CreateWorkspace(workspace, buildParametersContext, runId);
const lockResult = await SharedWorkspaceLocking.LockWorkspace(workspace, runId, buildParametersContext);
CloudRunnerLogger.log(
@ -204,6 +213,9 @@ export class SharedWorkspaceLocking {
if (lockId !== ``) {
await SharedWorkspaceLocking.LockWorkspace(workspace, lockId, buildParametersContext);
}
if (await SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext)) {
throw new Error(`${workspace} already exists`);
}
const timestamp = Date.now();
const file = `${timestamp}_${workspace}_workspace`;
fs.writeFileSync(file, '');