MCPcopy
hub / github.com/grpc/grpc-go / TrackAsyncReporters

Function TrackAsyncReporters

internal/leakcheck/leakcheck.go:446–464  ·  view source on GitHub ↗

TrackAsyncReporters installs the tracking delegate.

()

Source from the content-addressed store, hash-verified

444
445// TrackAsyncReporters installs the tracking delegate.
446func TrackAsyncReporters() {
447 asyncReporterTracker = newReporterTracker()
448
449 // Swap the delegate: Replace the default pass-through with tracking logic.
450 internal.AsyncReporterCleanupDelegate = func(originalCleanup func()) func() {
451 // 1. Capture Stack Trace (happens during Registration)
452 token := asyncReporterTracker.register()
453
454 // 2. Return Wrapped Cleanup
455 return func() {
456 // Defer unregister to ensure we stop tracking even if the original cleanup panics.
457 defer asyncReporterTracker.unregister(token)
458
459 if originalCleanup != nil {
460 originalCleanup()
461 }
462 }
463 }
464}
465
466// CheckAsyncReporters verifies that no leaks exist and restores the default delegate.
467func CheckAsyncReporters(logger Logger) {

Callers 3

SetupMethod · 0.92

Calls 3

newReporterTrackerFunction · 0.85
unregisterMethod · 0.80
registerMethod · 0.45

Tested by 2