theonedev/onedev · error · ExplicitException
Unable to find build:
Error message
Unable to find build:
What it means
Revision.getValueAsBuild() resolves the revision value to a numbered build via BuildReference and BuildService; if no build with that number exists in the referenced project, an ExplicitException 'Unable to find build: <value>' is thrown.
Source
Thrown at server-core/src/main/java/io/onedev/server/search/commit/Revision.java:62
public Type getType() {
return type;
}
@Nullable
public String getValue() {
return value;
}
public boolean isSince() {
return since;
}
public Build getValueAsBuild(Project project) {
var buildReference = BuildReference.of(value, project);
var buildService = OneDev.getInstance(BuildService.class);
var build = buildService.find(buildReference.getProject(), buildReference.getNumber());
if (build == null)
throw new ExplicitException("Unable to find build: " + value);
else
return build;
}
public RevCommit getRevCommit(Project project) {
if (type == Type.BRANCH) {
String branch = value;
if (branch == null) {
branch = project.getDefaultBranch();
if (branch == null)
throw new ExplicitException("No default branch");
}
return project.getRevCommit(GitUtils.branch2ref(branch), true);
} else if (type == Type.TAG) {
return project.getRevCommit(GitUtils.tag2ref(value), true);
} else if (type == Type.COMMIT) {
return project.getRevCommit(value, true);
} else if (type == Type.BUILD) {View on GitHub (pinned to d44925c47c)
Solutions
- Verify the build number exists in the target project's build list
- Check the query runs against the intended project
- Replace the build reference with a branch/tag/commit hash
- Enable retention to keep referenced builds from being deleted
Example fix
// before q = "build is #999" // build deleted // after q = "branch is main" // or pick an existing build number
Defensive patterns
Strategy: validation
Validate before calling
Build build = OneDev.getInstance(BuildService.class).find(project, 123);
if (build == null) throw new IllegalArgumentException("build #123 not found in " + project.getName()); Try / catch
try { rev.getValueAsBuild(project); } catch (ExplicitException e) { /* show 'build not found' to user */ } Prevention
- Validate build numbers exist before embedding them in queries
- Be aware retention policies can delete referenced builds
- Avoid copying build references across projects
When it happens
Trigger: Using a revision string like '#123' (build reference) in a commit query or revision field when build #123 does not exist in the project (deleted build, wrong project, typo in number).
Common situations: Referring to a build number from another project; build was purged/retention-deleted; query copied between projects with different numbering.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- Unable to find build: ${value}
- Iteration '${iterationName}' not found
- Link spec not found: ${linkName}
- Pull request not found:
- Not found
AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06).
Data as JSON: /api/errors/a6cd466f2d1a8396.
Report an issue: GitHub.