go/concurrency

Free catalog · v0.0.22

Reviews Go concurrency lifecycle, cancellation, synchronization, and channel ownership.

Checks

RuleSeverityScans for
go-concurrency.atomic-capacity-check-updateHighCapacity is checked and reserved in separate atomic operations
go-concurrency.cancellation-ownedMediumConcurrent work lacks cancellation ownership
go-concurrency.channel.self-deadlockHighChannel self-deadlock pattern
go-concurrency.concurrent-api.missing-testMediumConcurrent API guarantee lacks test for overlapping calls
go-concurrency.context.background-in-requestMediumAn operation replaces an available caller context with context.Background() or context.TODO()
go-concurrency.context.cancellationHighCancel function unused or context not derived
go-concurrency.context.error-classificationMediumContext-aware call errors treated as ordinary recoverable/reportable failures
go-concurrency.context.stored-on-structHighA struct field stores context.Context (or a same-file named alias of it)
go-concurrency.external-state-marker-before-successMediumA local success/ownership map entry is written after an external mutation whose error path falls through
go-concurrency.goroutine-id-state-keyMediumProduction mutable state is keyed by a goroutine identifier parsed from runtime.Stack text
go-concurrency.loopvar.captureMediumLoop variable captured by goroutine
go-concurrency.mutex.copyHighMutex / RWMutex copied by value
go-concurrency.select.default-busyMediumBusy select with default in a tight loop
go-concurrency.ticker.not-stoppedMediumTicker not stopped
go-concurrency.timer.not-stoppedMediumTimer not stopped/drained
go-concurrency.waitgroup.copiedHighWaitGroup copied by value
go-concurrency.waitgroup.done-not-deferredHighA goroutine can return before its bare WaitGroup.Done call
go-concurrency.waitgroup.lifecycleHighWaitGroup Add/Done/Wait lifecycle race

More from the registry