kellydunn / breaker Goto Github PK
View Code? Open in Web Editor NEWA small circuit breaker implementation in golang
A small circuit breaker implementation in golang
Reset()
is currently unreachable here: https://github.com/kellydunn/breaker/blob/master/breaker.go#L109-L110
The intent of Do
is to get either a signal from the timeout channel or the err channel, or succeed with its call. We could also have a successchan
that could poll on success of the event, which would be observing the absence of an error on the function that's being called.
Acceptance Critieria:
Do()
exitscontext: i was curious how much faster it would be to use atomics instead of locks to handle mutating the failures member.
(looks like it's about 45ns/op to use locks, 8ns/op to use atomics, if you were curious)
// Trip increments the failure count of the current Breaker. func (b *Breaker) Trip() { atomic.AddInt64(&b.failures, 1) } // Reset resets the current Breaker's failure count to zero. func (b *Breaker) Reset() { atomic.StoreInt64(&b.failures, 0) } ```
Acceptance Criteria:
atomic
operations to Trip()
and Reset()
on those channels where the value doesn't matter, you can send down an empty struct too (there's a Dave Cheney post about that somewhere, since it takes 0 bytes)
yo! i was poking around that breaker lib ... there's some raciness afoot (try running the tests on master with
-race
on, or write a benchmark that calls Trip()
repeatedly)
-race
Trip()
repeatedlyTrip()
in a multi-goroutine contextA declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.