Document ExecutionContext locking strategy and thread-safety guarantees
Maintainer antworten meist innerhalb von 3 Tagen
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 68/100
- Issue-Typ
- Dokumentation
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- python
- Bereich
- documentation
Rechercherichtung
Lies docs/HANDLER_AUTHORING.md und packages/darnit/src/darnit/core/models.py::ExecutionContext; das Issue erlaubt außerdem, docs/execution-context.md anzulegen. Dokumentiere das Sperr- und Nebenläufigkeitsverhalten, die Fehlersemantik, wann Caching verwendet oder vermieden werden sollte, und Testmuster mit frischen Contexts. Fertig ist die Arbeit, wenn der Leitfaden alle fünf Punkte behandelt und mit der Implementierung übereinstimmt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Context
#189 added ExecutionContext with a thoughtful double-checked locking design, but the strategy isn't documented beyond code comments. Handler authors using get_or_run_tool() need to understand:
- What guarantees does the context provide? (same key → same result within an audit run)
- What happens under concurrent access? (different keys parallel, same key serialized)
- What can go wrong? (e.g., if
run_funcraises, is the lock released properly?) - When should handlers NOT use this? (e.g., tool output is non-deterministic or time-sensitive)
What to document
Extend docs/HANDLER_AUTHORING.md (or create a dedicated docs/execution-context.md) with:
- Locking strategy explanation — the double-checked locking pattern and why it's used (main lock fast-path + per-tool locks)
- Concurrency guarantees — what's serialized (same
tool_key), what's parallel (different keys) - Failure semantics — if
run_funcraises, is the lock released? (Yes, viawith— but worth calling out.) Does the exception propagate? (Yes.) Is the key cached on failure? (No — only successful results are cached.) - When to use vs not — cache expensive tool outputs (Scorecard, API queries); DON'T cache time-sensitive state (current time, fresh random numbers, etc.)
- Testing patterns — how to test handlers that use ExecutionContext (fixture that provides a fresh context per test)
References
- Infrastructure:
packages/darnit/src/darnit/core/models.py::ExecutionContext - Existing usage guide:
docs/HANDLER_AUTHORING.md(brief "Shared Execution Context" section added in #189) - Related: #193 (audit cache documentation — similar pattern)
- Vorherrschende Sprache
- Python
- Sterne
- 22
- Forks
- 27
- Ø Merge
- 5 T. 2 Std.
- Gemergte PRs (30 T.)
- 78
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus darnitdevorg/darnit
-
needs triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
darnitdevorg/darnit#738 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
ci needs triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
darnitdevorg/darnit#607 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
good first issue maintenance
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
darnitdevorg/darnit#587 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Container image has no zizmor, so OSPS-AC-04.02 always reports missing_toolEvtl. vergeben @mlieberman85 hat das vor 24 Tagen übernommen. Offeninfrastructure module-baseline
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
darnitdevorg/darnit#585 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 3 Tagen
-
module-baseline
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
darnitdevorg/darnit#344 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 3 Tagen
Alle Issues in darnitdevorg/darnit
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
django-cms/djangocms-frontend#413 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
NanmiCoder/MediaCrawler#1004 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
facebookresearch/xformers#1417 ·
-
question
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 68/100
vllm-project/vime#524 ·
Maintainer antworten meist innerhalb von 7 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
FinanceFlash/unvibecode#675 ·
Maintainer antworten meist innerhalb von 1 Tag