errorbuffer

package module
v0.0.0-...-1bb61b1 Latest Latest
Warning

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

Go to latest
Published: May 15, 2023 License: MIT Imports: 4 Imported by: 0

README

Build Status

go-error-buffer

A tiny library that makes it easy to make sure you don't have too many errors happening too fast.

For example, say you have a long running process talking to a DB. A few errors here and there could be normal, e.g. if your network is not always reliable, so you just want to keep re-trying when errors happen; but not if they start happening too fast.

Usage

Specify how many errors is too much in how much time when you create your ErrorBuffer:

// import  "github.com/wk8/go-error-buffer"

buffer := errorbuffer.NewErrorBuffer(3, time.Minute)

Then add errors as they come in. If it's too much too fast, then the buffer will overflow:

for {
	err := myFunc()

	if err := buffer.Add(err); err != nil {
		// there were more than 3 errors in the last minute
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ErrorBuffer

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

An ErrorBuffer is meant to make sure that something doesn't error out too much, too fast.

func NewErrorBuffer

func NewErrorBuffer(maxCount uint, window time.Duration) *ErrorBuffer

NewErrorBuffer creates a new error buffer, that will accept up to maxCount errors in the given time window.

func (*ErrorBuffer) Add

func (b *ErrorBuffer) Add(err error) error

Add adds an error to the buffer. If there have been too many errors (i.e. more than the buffer's maxCount) in too short a time (i.e. in the buffer's current sliding window), then it returns an error aggregating those; otherwise returns nil. This is not thread-safe.

Jump to

Keyboard shortcuts

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