You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit d8f91a3
Browse filesBrowse the repository at this point in the historyBrowse files
* improvement(search): bound the any-term fallback so a slow relaxed query keeps the strict page
When an all-terms Atlassian search underfills, the live search runs a relaxed any-term query.
For Jira that query ORs every pair of up to 8 terms (28 pairs, 56 `text ~` clauses), which can
run past the 10 s HTTP timeout on a large site. The transport failure was rethrown, so the whole
account leg reported unavailable: the strict matches already fetched were discarded and the
search waited out the timeout.
- The relaxed search gets its own 4 s budget, composed with the caller's signal through
AbortSignal.any and passed down as a per-search signal (NativeSearchInput.signal ->
searchAtlassian -> client.json -> secureFetchWithValidation), so the HTTP request itself is
cancelled rather than raced. The account leg already has a 12 s deadline that covers resolve,
session, the strict search, verification, and the 2.5 s preview reads; a relaxed query
normally takes ~1.5 s, so 4 s leaves headroom for a slow but healthy query while ending a
hung one with time left for verification and previews inside the leg deadline. Composing with
the leg signal means it can never run past that deadline.
- Any relaxed failure other than the caller's own cancellation (provider refusal, the budget
running out, a transport error) keeps the strict page, marked partial with a message, the same
shape as the existing refusal path. Caller cancellation still propagates. A successful relaxed
search behaves exactly as before.
- Jira relaxed JQL pairs at most the six longest distinct terms (at most 15 pairs), and a word
and its regular plural share one slot, since Jira stems text search. Ranking by term coverage
still uses every significant term, and Confluence's siteSearch clause is unchanged.
- A memoized GET is never shared with a request that carries its own signal.
* improvement(search): keep Jira's eight-term pairing, simplify fallback error handling
Drop the six-term pair cap (the budget already bounds a slow relaxed query, and the cap removed pairs of the shortest terms). Keep the singular/plural collapse, now leaving -us words (status, focus) whole. One branch per relaxed failure kind, the term cap inside distinctTerms, and no memo special case no caller reaches.
* fix(search): search an organization only through its integrations page connections
Organization live search also listed a member's plain OAuth credentials at organization scope, which no page shows or can disconnect. One left behind next to the same person's integrations page connection made every result from that provider come back twice. Organization search now uses only credential-group enrollments; workspace search is unchanged.
0 commit comments