Backport of 'Fix Elasticsearch pagination with null sortable field values'
What does this MR do and why?
This MR backports the following merge requests to the 18-6-stable-ee branch:
- !215945 (merged) - Fix Elasticsearch pagination with null sortable field values
-
!216803 (merged) - Remove
search_glql_fix_null_field_paginationfeature flag
Problem
When using GLQL with Advanced Search (Elasticsearch) enabled, pagination fails to return results beyond the first page when sorting by nullable fields (e.g., milestone_due_date). Clicking "Load more" returns an empty result set even when more matching items exist.
Solution
The fix converts Elasticsearch sentinel values (Long.MAX_VALUE / Long.MIN_VALUE) back to nil in cursor generation and adds null-aware pagination filter logic. The feature flag has been rolled out successfully and is removed in this backport.
Why backport?
This is a critical bug affecting GLQL functionality with Advanced Search. Users on 18.6 cannot paginate through results when sorting by nullable fields, making the feature partially unusable.
References
- Original bug: #583599 (closed)
- Fix MR: !215945 (merged)
- Feature flag removal MR: !216803 (merged)
- Rollout issue: #583611 (closed)
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
- This MR is backporting a bug fix, documentation update, or spec fix, previously merged in the default branch.
- The MR that fixed the bug on the default branch has been deployed to GitLab.com (not applicable for documentation or spec changes).
- The MR title is descriptive (e.g. "Backport of 'title of default branch MR'"). This is important, since the title will be copied to the patch blog post.
-
Required labels have been applied to this merge request
- severity label and bug subtype labels (if applicable)
- If this MR fixes a bug that affects customers, the customer label has been applied.
- This MR has been approved by a maintainer (only one approval is required).
-
Ensure the
e2e:test-on-omnibus-eejob has succeeded, or if it has failed, investigate the failures. If you determine the failures are unrelated, you may proceed. If you need assistance investigating, reach out to a Software Engineer in Test in #s_developer_experience.
Note to the merge request author and maintainer
If you have questions about the patch release process, please:
- Refer to the patch release runbook for engineers and maintainers for guidance.
- Ask questions on the
#releasesSlack channel (internal only). - Once the backport has been merged, the commit changes will be automatically deployed to a release environment that can be used for manual validation. See after merging runbook for details.