Change JMeter properties backend to a lock-free representation to avoid run-time lock contention
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Refactoring
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- java
- Ambito
- performance, tooling
Direzione di ricerca
Inizia tracciando il backend delle proprietà di JMeter utilizzato dagli script Groovy JSR223 e dalle funzioni ${__P()}/${__property()}. Definisci come le letture concorrenti tramite l’oggetto implicito props possano evitare la contesa su un lock globale, mantenendo al contempo le scritture sincronizzate e compatibili con java.util.Properties; il lavoro è completo quando il comportamento dei tipi esistente viene preservato in presenza di accessi concorrenti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Use case
Description
In high-concurrency performance testing scenarios, global property queries performed during active test execution (for example, through JSR223 Groovy scripts accessing the implicit props object or through ${__P()} / ${__property()} functions) create a global synchronization bottleneck.
java.util.Properties inherits directly from java.util.Hashtable, where core accessors like .get(Object) and mutators like .put() are declared as synchronized methods. In highly concurrent test plans (e.g. 500+ threads executing JSR223 elements concurrently), threads end up serialization-blocked waiting to acquire the monitor lock of the global properties instance.
Possible solution
Introduce a subclass of java.util.Properties named ConcurrentProperties which internally delegates read queries to a backing ConcurrentHashMap, while keeping writes synchronized and in sync with the parent Hashtable data model. This provides completely lock-free read lookups under concurrent scripts while maintaining full type compatibility (instanceof java.util.Properties).
Possible workarounds
No response
JMeter Version
6.0.0-SNAPSHOT
Java Version
No response
OS Version
No response
- Lingua principale
- Java
- Stelle
- 9.6k
- Fork
- 2.3k
- Merge medio
- 20h 42m
- PR unite (30g)
- 10
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 apache/jmeter
-
[Bug] Typo in assertion property name: "Asserion.test_strings" missing 't'Forse già presa @waterWang l’ha presa 61 giorni fa. Apertadefect to-triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
apache/jmeter#6751 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement to-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
RandomDate ignores inclusive end date and throws when start == endForse già presa @weillercarvalho l’ha presa 337 giorni fa. Apertadefect to-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
apache/jmeter#6609 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
documentation to-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
invalid wontfix
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
apache/jmeter#5770 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di apache/jmeter
Issue simili
-
bug/错误
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
FCL-Team/FoldCraftLauncher#1951 ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
quarkusio/quarkus-agent-mcp#296 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
commons-app/apps-android-commons#7072 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement web-ui
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
jenkinsci/jenkins#27583 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100