Giter VIP home page Giter VIP logo

breaker's People

Contributors

kellydunn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

breaker's Issues

Reset is unreachable in `Do` Call

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:

  • Ensure Do() exits
  • Improve coverage by adding a sufficient test.

Use atomics for improved performance

context: 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:

  • Add atomic operations to Trip() and Reset()
  • Improve tests by adding benchmarks to operations (optional)

Investigate race condition issues with `Trip()`, improve testing to add resiliency

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)

  • Investigate race issue
  • Improve tests by adding -race
  • Improve tests by calling Trip() repeatedly
  • Improve tests by calling Trip() in a multi-goroutine context

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.