Treat JVM platform frames (java.*, kotlin.*, ...) as non-user code in error stacking
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 55/100
Direzione di ricerca
Start with src/Exceptionless.Core/Utility/ErrorSignature.cs, especially the default non-user namespace list and IsUserNamespace at the lines linked in the issue. Check the existing tests for error stacking and add coverage for JVM namespaces and namespace boundary matching. Done means JVM platform frames are excluded from user frames without matching similarly named user namespaces; the issue leaves common framework defaults open for discussion.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
ErrorSignature decides which stack frame is "user code" by namespace. With no User Namespaces configured, every namespace except System and Microsoft counts as user code:
ErrorSignature.cs#L13:_defaultNonUserNamespaces = ["System", "Microsoft"]ErrorSignature.cs#L182-L191:IsUserNamespace
For Java (and Kotlin, Scala, ...) errors, the JDK frame that threw becomes the stacking target. For example, Integer.parseInt("two") stacks on:
ExceptionType: java.lang.NumberFormatException
Method: java.lang.NumberFormatException.forInputString(...)
So every NumberFormatException from Integer.parseInt in a project lands in one stack, no matter which application method called it. The same happens for Objects.requireNonNull, collections, I/O and so on. The new Java client's end-to-end tests reproduce this against 8.10.0 (StackingSignatureE2ETest). Two unrelated call sites get the same stack_id.
Proposal
Add the JVM platform namespaces to the default non-user list:
java, javax, jdk, sun, com.sun, jakarta, kotlin, kotlinx, scala
Also match on a namespace boundary (ns == prefix || ns.StartsWith(prefix + ".")) instead of a bare StartsWith. Otherwise sun would also match a user namespace like sunrise.billing; today System already matches SystemsIntegration.*.
To discuss: whether common frameworks (org.springframework, org.apache, org.hibernate, io.netty, reactor, com.fasterxml) should also be non-user by default. .NET already treats all of Microsoft.*, including ASP.NET Core and EF Core, as non-user, so including them would be consistent.
Notes
- If no user frame is found, the existing fallback still uses the innermost error's top frame, so pure-JDK traces keep a signature.
- Signature hashes change for existing Java/Kotlin stacks, so their next occurrence creates a new stack. The old Java client (0.1) couldn't send stack traces in the format the server reads anyway, so few existing stacks are affected.
- Projects can already get this behaviour by setting User Namespaces, but that setting doesn't work from the UI today (see #2678).
Context: exceptionless/Exceptionless.Java#91, exceptionless/Exceptionless.Java#92
- Lingua principale
- C#
- Stelle
- 2.5k
- Fork
- 508
- Merge medio
- 2g 17h
- PR unite (30g)
- 40
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Include un Dockerfile o un file Docker Compose
- Nessun 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 exceptionless/Exceptionless
-
bug documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
exceptionless/Exceptionless#2707 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
exceptionless/Exceptionless#2706 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
exceptionless/Exceptionless#2705 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
exceptionless/Exceptionless#2704 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
exceptionless/Exceptionless#2703 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di exceptionless/Exceptionless
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
MahdiyarGHD/GheychiApp#39 ·
I maintainer di solito rispondono entro 1 giorno
-
bug effort:S P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
nightscout/nocturne#3136 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 76/100
GameShowLDA/AskMkiM#1075 ·
I maintainer di solito rispondono entro 1 giorno