New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Attempted to beginRule: MultiRule[], does not match outer scope rule: R/ #1214
Comments
ManifestConsistencyChecker wants to lock all PDE projects and produces an empty MultiRule: @Override
public ISchedulingRule getRule(int kind, Map<String, String> args) {
return new MultiRule(Arrays.stream(getProject().getWorkspace().getRoot().getProjects())
.filter(PDEBuilderHelper::isPDEProject).toArray(ISchedulingRule[]::new));
} Empty MultiRule does not conflict with workspace root, and is treated as an external entity in the context of the whole-workspace operation. The builders can't just return null, as BuildManager will then fall-back to a full-workspace lock: // Bug 306824 - Builders returning a null rule can't work safely if other builders require a non-null rule
// Be pessimistic and fall back to the default build rule (workspace root) in this case.
if (!hasNullBuildRule)
return new MultiRule(rules.toArray(new ISchedulingRule[rules.size()]));
...
return workspace.getRoot(); So when builder does not need to lock any resources, it has to return a rule that is contained in workspace, but does not conflict with any resources. A non-existent project would do. |
Prerequisites
Test steps
Note: to reproduce repeatedly, repeat last 3 steps
Expected result
No errors
Actual result
Workaround
Keep a dummy project with PDE nature in the workspace.
Also observed when RCPTT loads an Appllication Under Test with a new VM
The text was updated successfully, but these errors were encountered: