[bug] Search result hydration performs duplicate repository lookups within the same chunk
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 84/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- typescript
Piste de recherche
Commencez dans packages/web/src/features/search/zoektSearcher.ts, au niveau de createReposMapForChunk, puis lisez la configuration existante de zoektSearcher.test.ts. Reproduisez le cas avec 100 fichiers partageant le même repository_id et comptez les appels à mocked prisma.repo.findUnique. Le travail est terminé lorsqu’il n’y a qu’une seule requête par dépôt unique au sein d’un chunk, tout en conservant intact le comportement existant du cache de streaming.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug
When search returns multiple files from the same repository, createReposMapForChunk performs a separate Prisma repository lookup for each file.
The repository cache is checked inside concurrent Promise.all callbacks, but it is only populated after the database query resolves. Because of this, files from the same uncached repository all miss the cache and start duplicate lookups.
For example, I tested 100 search results from the same repository and observed 100 prisma.repo.findUnique calls instead of 1.
I would expect repository metadata to be fetched once per unique repository and reused for the other results.
This adds unnecessary database work to the search path, especially when many results come from the same repository.
To reproduce
Using the existing zoektSearcher.test.ts setup:
Return 100 files with the same repository_id.
Mock prisma.repo.findUnique and count the calls.
Run zoektSearch.
findUnique is called 100 times, even though all files belong to one repository.
I also tested two repositories:
100 files from 1 repository → 100 lookups
100 files split across 2 repositories → 100 lookups
For streaming search, the cache works across completed chunks. A second chunk containing files from an already cached repository makes 0 additional lookups. The duplicate lookups happen within the same chunk.
Sourcebot deployment information
Sourcebot version: Local development build from current main
Additional information
Relevant code:
packages/web/src/features/search/zoektSearcher.ts
Function:
createReposMapForChunk
The same search path is also used by Ask Sourcebot tools such as grep and glob.
I haven't measured the production latency impact, so the confirmed issue here is the redundant database work rather than a specific search latency regression.
- Langage dominant
- TypeScript
- Étoiles
- 3.9k
- Forks
- 374
- Merge moyen
- 2 j 21 h
- PR mergées (30 j)
- 43
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de sourcebot-dev/sourcebot
-
Linux ctags build instructions in CONTRIBUTING.md are missing build dependenciesPeut-être pris @The-AarushiSingh l’a pris il y a 23 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
sourcebot-dev/sourcebot#1633 ·
Les mainteneurs répondent en général sous 1 jour
-
MCP ask_codebase rejects explicit languageModel: getLanguageModelKey includes displayName which the MCP schema doesn't exposePeut-être à nouveau libre @Harsh23Kashyap l’a pris il y a 101 jours, et aucune pull request n’est ouverte. Ouverteask_sb bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
sourcebot-dev/sourcebot#1137 · 4 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
[FR] Support file-based and Azure Key Vault token sources alongside env and googleCloudSecretPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 64/100
sourcebot-dev/sourcebot#1704 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
[bug] Local repositories with a space or non-ASCII character in the path cannot be indexedPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 35/100
sourcebot-dev/sourcebot#1689 ·
Les mainteneurs répondent en général sous 1 jour
-
[bug] Escaped quotes in a quoted keyword search are searched with the backslashesPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 35/100
sourcebot-dev/sourcebot#1687 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de sourcebot-dev/sourcebot
Issues similaires
-
bug cli service
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
create-element: same editorAlias silent-fallback bug as #201, not covered by that fixPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertegenerated-by-ai
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
umbraco/Umbraco-CMS-MCP-Editor#208 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Table: Space fires onActivate in single-selection mode — the reference doc and the JSDoc disagreeOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
sidorares/react-x11-components#764 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
backnotprop/plannotator#1840 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
JoviDeCroock/pracht#432 ·
Les mainteneurs répondent en général sous 1 jour