[BUG] Cosmos P1: Non-streaming vector TOP queries silently discard winning results

Aperta
#51,133 0 commenti 1 reazione 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
azure, java
Ambito
databases

Direzione di ricerca

Read DocumentQueryExecutionContextFactory.java around lines 525–536 and NonStreamingOrderByUtils.java around lines 95–109 to trace how fetch-page sizing affects the non-streaming merge’s candidate limit. Reproduce the six-range skewed TOP 60 case and compare exact top-K membership with an unrestricted reference result. Done when all 60 winning results are retained and regression coverage verifies membership through the factory and query pipeline.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Client Cosmos

Describe the bug
Alan Zimmer's November 6, 2026 audit of com.azure:azure-cosmos:4.84.0-beta.1 reports that a streaming ORDER BY fetch-page optimization also reduces the non-streaming merge's candidate-retention limit. With six ranges and TOP 60, that limit becomes 50. If winning results are concentrated in one range, valid candidates are discarded, yielding too few results or worse matches. Reported priority: P1; silent incorrect query results.

Exception or Stack Trace
N/A; results are silently incorrect.

To Reproduce
Execute a non-streaming vector TOP 60 query across six skewed ranges, with the winning candidates concentrated in one range. Exercise the factory and query pipeline and compare exact top-K membership against an unrestricted reference result.

Code Snippet
No complete executable snippet was supplied. Reported locations: DocumentQueryExecutionContextFactory.java:525-536 and NonStreamingOrderByUtils.java:95-109 in the audited source.

Expected behavior
Fetch-page sizing must not reduce the number of candidates retained for the global top-K merge; all 60 winning results must be retained and returned.

Screenshots
N/A.

Setup (please complete the following information):

  • OS: Not reported.
  • IDE: Not reported.
  • Library/Libraries: com.azure:azure-cosmos:4.84.0-beta.1.
  • Java version: Not reported.
  • App Server/Environment: Non-streaming vector query over six ranges.
  • Frameworks: Not reported.

Dependency mismatch: Not indicated; dependency tree/logs were not supplied.

Additional context
Proposed fix from the audit: separate fetch-page sizing from candidate retention, or exclude non-streaming queries from the streaming optimization.

Regression coverage: exercise the factory/pipeline with six skewed ranges and verify exact top-K membership, not only result count.

Reported reproduction: compiled current-source query components retained 50 results versus 60 with the correct limit. The probe supplied the factory-derived limit and was not a full factory integration test; cached supporting dependencies were used. No live Cosmos calls or full SDK test suite were run, and no repository files were changed. This issue tracks validation and implementation of the proposed fix, not an already-applied fix. Alan recommended addressing this and the failed change-feed initialization finding first.

Information Checklist

  • Bug Description Added
  • Repro Steps Added
  • Setup information Added
Lingua principale
Java
Stelle
2.6k
Fork
2.2k
Merge medio
2g 2h
PR unite (30g)
257

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Azure/azure-sdk-for-java

Tutte le issue di Azure/azure-sdk-for-java

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.