dontpanic

package
v16.10.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2024 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package dontpanic provides function wrappers and supervisors to ensure that wrapped code does not panic and cause program crashes.

When should you use this package? Anytime you are running a function or goroutine where it isn't obvious whether it can or can't panic. This may be a higher risk in long running goroutines and functions or ones that are difficult to test completely.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Go

func Go(logger log.Logger, fn func())

Go will run the provided function in a goroutine and recover from any panics. If a panic occurs, the recovered panic will be sent to Sentry and logged as an error. Go is best used in fire-and-forget goroutines where observability is lost.

func Try

func Try(logger log.Logger, fn func()) bool

Try will wrap the provided function with a panic recovery. If a panic occurs, the recovered panic will be sent to Sentry and logged as an error. Returns `true` if no panic and `false` otherwise.

Types

type Forever

type Forever struct {
	// contains filtered or unexported fields
}

Forever encapsulates logic to run a function forever.

func NewForever

func NewForever(logger log.Logger, backoff time.Duration) *Forever

NewForever creates a new Forever struct. The given duration controls how long retry of a function should be delayed if the function were to thrown an error.

func (*Forever) Cancel

func (f *Forever) Cancel()

Cancel cancels the walking loop.

func (*Forever) Go

func (f *Forever) Go(fn func())

Go will keep retrying a function fn in a goroutine forever in the background (until the process exits) while recovering from panics. Each time a closure panics, the recovered value will be sent to Sentry and logged at level error. The provided backoff will delay retries to enable "breathing" room to prevent potentially worsening the situation.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL