Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Why Your Jira JQL Results May Look Stale - and What to Know About Function Cache

SnapJQL_3.png

The confusing moment

A Jira user changes an issue, reruns a JQL query, and expects the result to update immediately. Sometimes it does. Sometimes, especially with advanced JQL functions, the result looks stale. An issue that should now appear does not appear. An issue that should have dropped out remains in the list.

This can feel like a bug, but the explanation is often caching.

The frustrating part is that the stale result can look authoritative. It appears in the Issue Navigator, on a dashboard, or inside a saved filter, so users assume the query has been freshly evaluated. That is why teams using advanced functions should treat freshness as part of the search design, especially for operational boards and reports that people rely on during active delivery.

When a JQL function is used in Jira's native search surfaces, Jira may store the function output as a precomputed result. That cache can be reused instead of recalculating the function every time. Caching helps performance, but it can surprise users who expect every query to behave like a fresh database search.

Understanding the difference between indexing, function cache, and saved filter sync can save a lot of confusion.

Function cache in plain English

A JQL function returns a set of issues. For example, a hierarchy function might return all children of a matching parent issue. A link function might return issues connected through a certain relationship.

Instead of recalculating that set every time, Jira can cache the result. Atlassian refers to this as a precomputation. In practice, it means the function result may represent a recent snapshot, not the exact current state. Documentation for this app notes that native Jira surfaces can cache function results for up to seven days.

That does not mean every advanced query is stale. It means users should know which search surface they are using and how freshness is maintained.

There is also an important distinction: JQL properties are not cached in the same way as functions. A query using a property such as a child count behaves differently from a query that calls a function returning a set of issues.

Indexing is a separate question

Cache freshness is not the same as indexing completeness.

Indexing is about whether the app has processed the Jira issue data it needs: hierarchy, links, comments, attachments, history, and other enriched fields. New and updated issues may be indexed in the background. Historical issues that existed before installation may require an initial indexing run. Some settings changes, such as enabling remote link indexing, may require re-indexing affected issues.

Function cache is about whether Jira is reusing an older function output in native search.

These two concepts can overlap in symptoms. If results look wrong, an admin may need to ask two questions: has the relevant data been indexed, and is the function result cache fresh?

A realistic Jira scenario

Imagine a project lead using a saved Jira filter for "release issues with blocked children." A developer unblocks a child issue and updates its status. The lead refreshes the dashboard, but the parent issue still appears in the risk list.

Several things could be happening. The child issue update may not have been indexed yet. The JQL function used by the filter may still be returning a cached result. The saved filter may be storing a resolved list of issue IDs that has not synced again.

The fix depends on the cause. For ad-hoc validation, the team may use a search page that resolves functions fresh on each run. For dashboards, they may configure filter sync so the saved Jira filter is updated with current issue IDs. For native Jira JQL using functions directly, an admin may configure or manually refresh function cache sync.

The important part is that "stale" is not a single problem. It is a freshness chain.

Practical ways to think about freshness

For users, the first question is where the query is being run. A dedicated advanced JQL search page may resolve functions fresh. Jira Issue Navigator or dashboards may rely on cached function output. Saved filters may have their own sync schedule.

For admins, the next question is what freshness level the team needs. A dashboard used once a week may tolerate a longer sync interval. An operational dashboard reviewed hourly may need more frequent refresh. A one-off investigation can use fresh search instead of changing global settings.

Teams should also be clear about ownership. Filter sync often runs using the filter owner's permissions. That is important because two users may not be allowed to see the same set of issues.

For publishing dashboards, add a short note near the filter description if the results depend on scheduled sync. Future viewers will understand that the dashboard is intentionally refreshed on a cadence rather than recalculated every second.

One possible tool for this workflow

For teams using advanced Jira functions and needing clearer controls around fresh search, function cache sync, saved filter sync, indexing, and result diagnostics, SnapJQL - Advanced JQL Functions & Properties is one Marketplace app to review.

The practical takeaway is simple: when advanced JQL results look stale, do not immediately rewrite the query. First ask whether you are looking at indexed data, cached function output, or a saved filter that needs to sync.

0 comments

Comment

Log in or Sign up to comment
TAGS
AUG Leaders

Atlassian Community Events