Avoid allocations when rewriting queries without value expressions
Nessuno ha ancora preso questa issue.
- #3537 di @gregjotau — chiusa senza merge
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 64/100
- Tipo di issue
- Refactoring
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- java
- Ambito
- backend, performance
Direzione di ricerca
Inizia con ValueExpressionQueryRewriter e segui la prima ricerca del matcher, la convalida delle virgolette e la gestione della mappa dei parametri. Aggiungi il percorso senza espressione preservando il riutilizzo della stringa di input e i metadati delle virgolette, quindi verifica test mirati per testo tra virgolette, virgolette non bilanciate ed espressioni reali insieme al benchmark JMH permanente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Spring Data Commons 4.2.0-SNAPSHOT constructs a mutable expression map, a rewritten query string, and a second quotation map for every query passed to ValueExpressionQueryRewriter, even when the query contains no value expression. Ordinary repository queries commonly take this path.
A no-expression fast path can retain the initial matcher and quotation-map construction, then reuse the original query string and an immutable empty parameter map when the first matcher search finds nothing. This preserves unbalanced-quotation validation and quotation metadata.
JMH on JDK 26, with three forks and the GC profiler, measured the ordinary-query path at 608.007 B/op before and 232.004 B/op after the fast path, a deterministic 61.8% allocation reduction. Independent negative controls were unchanged to measurement precision: quoted expression-like text remained 1,368 B/op and an actual expression remained 9,576 B/op.
A separate 729-query fresh-JVM batch used 30 forks, no warmup, SingleShotTime, and 99.9% confidence intervals. It improved from 7.577 ± 0.845 ms and 1.422 MB to 5.349 ± 0.201 ms and 1.008 MB, reducing both time and allocation by about 29%.
The proposed change includes focused tests for input-string reuse, retained quotation information, unbalanced quotations, real expressions, and expression-like text inside quotes, plus a permanent JMH benchmark.
- Lingua principale
- Java
- Stelle
- 842
- Fork
- 745
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di spring-projects/spring-data-commons
-
`ReflectionFallbackPersistentPropertyAccessorFactory` re-evaluates `isSupported(…)` on every `getPropertyAccessor(…)` call in native imagesForse già presa @mp911de l’ha presa 1 giorno fa. Apertatype: regression
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
spring-projects/spring-data-commons#3575 · 1 assegnatario ·
-
Release 4.0.9 (2025.1.9)Apertatype: task
Difficoltà 3/5 1-2 giorni Idoneità per principianti 30/100
-
Release 4.1.3 (2026.0.3)Apertatype: task
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
-
Release 4.2.0 (2026.1.0)Apertatype: task
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
-
type: enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
spring-projects/spring-data-commons#3548 · 1 commento ·
Tutte le issue di spring-projects/spring-data-commons
Issue simili
-
jules
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
open-learning-exchange/myplanet#18568 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
quarkiverse/quarkus-ironjacamar#264 · 7 commenti ·
-
[Bug]: Login shows only "Log-in failed" when Commons answers the login request with an API errorAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
commons-app/apps-android-commons#7295 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 85/100
hibernate/hibernate-reactive#4485 ·
I maintainer di solito rispondono entro 1 giorno