theonedev/onedev · error · ExplicitException
No pull request in query context
Error message
No pull request in query context
What it means
FixedInCurrentPullRequestCriteria.getPredicate() throws this ExplicitException when an issue query uses the '~Fixed in current pull request' rule but no pull request is bound to the query context. The criteria delegates to FixedInPullRequestCriteria with PullRequest.get(); when that is null, the query cannot be translated into a database predicate.
Source
Thrown at server-core/src/main/java/io/onedev/server/search/entity/issue/FixedInCurrentPullRequestCriteria.java:24
import javax.persistence.criteria.From;
import javax.persistence.criteria.Predicate;
import io.onedev.commons.utils.ExplicitException;
import io.onedev.server.model.Issue;
import io.onedev.server.model.PullRequest;
import io.onedev.server.util.ProjectScope;
import io.onedev.server.util.criteria.Criteria;
public class FixedInCurrentPullRequestCriteria extends Criteria<Issue> {
private static final long serialVersionUID = 1L;
@Override
public Predicate getPredicate(@Nullable ProjectScope projectScope, CriteriaQuery<?> query, From<Issue, Issue> from, CriteriaBuilder builder) {
if (PullRequest.get() != null)
return new FixedInPullRequestCriteria(PullRequest.get()).getPredicate(projectScope, query, from, builder);
else
throw new ExplicitException("No pull request in query context");
}
@Override
public boolean matches(Issue issue) {
if (PullRequest.get() != null)
return new FixedInPullRequestCriteria(PullRequest.get()).matches(issue);
else
throw new ExplicitException("No pull request in query context");
}
@Override
public String toStringWithoutParens() {
return IssueQuery.getRuleName(IssueQueryLexer.FixedInCurrentPullRequest);
}
}
View on GitHub (pinned to d44925c47c)
Solutions
- Use this rule only in queries evaluated within a pull request context (PR detail / PR issue views).
- Replace '~Fixed in current pull request' with an explicit '~Fixed in pull request(<number>)' criterion.
- Establish the PullRequest context programmatically before evaluating the query if running in code.
- Catch ExplicitException when parsing/executing queries and explain that the rule requires a pull request context.
Example fix
// before "~Fixed in current pull request" // after "~Fixed in pull request(42)"
Defensive patterns
Strategy: try-catch
Validate before calling
if (PullRequest.get() == null) {
throw new IllegalStateException("Query uses '~Fixed in current pull request' but no pull request context is active");
} Type guard
boolean canEvaluateFixedInCurrentPullRequest() {
return PullRequest.get() != null;
} Try / catch
try {
Predicate p = criteria.getPredicate(projectScope, query, from, builder);
} catch (ExplicitException e) {
if (e.getMessage().contains("No pull request in query context")) {
// use a context-free alternative query or notify the user
} else {
throw e;
}
} Prevention
- Restrict PR-relative queries to pull request scoped pages/jobs
- Validate PullRequest.get() before executing queries containing current-PR rules
- Prefer explicit '~Fixed in pull request(n)' criteria in saved queries
- Handle ExplicitException centrally in query execution code
When it happens
Trigger: Executing a DB-backed issue query containing FixedInCurrentPullRequest via getPredicate() when PullRequest.get() returns null.
Common situations: Applying a pull-request-scoped query (e.g. copied from a PR's issue list) on pages without a current PR; running such queries from scripts, REST API calls, or scheduled tasks where no PR context is established.
Related errors
- No issue in query context
- No current pull request in query context
- No current commit in query context
- No build in query context
- No pull request in query context
AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06).
Data as JSON: /api/errors/460a034a250f1bac.
Report an issue: GitHub.