-
Notifications
You must be signed in to change notification settings - Fork 5k
Open
Labels
a:investigationIssues requiring decision or investigationIssues requiring decision or investigationin:execution-engineincremental, up-to-date, overlapping outputsincremental, up-to-date, overlapping outputs
Milestone
Description
In
Lines 144 to 157 in 15bc562
if (lockingStrategy == LockingStrategy.WORKSPACE_LOCK) { | |
LockingImmutableWorkspace workspace = workspaceProvider.getLockingWorkspace(uniqueId); | |
return workspace.withWorkspaceLock(() -> | |
loadImmutableWorkspaceIfExists(work, workspace) | |
.orElseGet(() -> { | |
deleteStaleFiles(workspace.getImmutableLocation()); | |
return executeInWorkspace(work, context, workspace.getImmutableLocation()); | |
}) | |
); | |
} else { | |
AtomicMoveImmutableWorkspace workspace = workspaceProvider.getAtomicMoveWorkspace(uniqueId); | |
return loadImmutableWorkspaceIfExists(work, workspace) | |
.orElseGet(() -> executeInTemporaryWorkspace(work, context, workspace)); | |
} |
This requires some optimization, since otherwise we would see some performance regression. We probably need to implement logic like:
if (!(cleanup will be scheduled) && workspaceExists()) {
loadWorkspace()
} else {
lock (workspace) {
if (workspaceExists()) {
loadWorkspace()
} else {
execute()
}
}
}
The only problem is, that we also have cleanup.
Metadata
Metadata
Assignees
Labels
a:investigationIssues requiring decision or investigationIssues requiring decision or investigationin:execution-engineincremental, up-to-date, overlapping outputsincremental, up-to-date, overlapping outputs