
This commit includes updates that affects the build, testing, and deployment of Tile38. - The root level build.sh has been broken up into multiple scripts and placed in the "scripts" directory. - The vendor directory has been updated to follow the Go modules rules, thus `make` should work on isolated environments. Also some vendored packages may have been updated to a later version, if needed. - The Makefile has been updated to allow for making single binaries such as `make tile38-server`. There is some scaffolding during the build process, so from now on all binaries should be made using make. For example, to run a development version of the tile38-cli binary, do this: make tile38-cli && ./tile38-cli not this: go run cmd/tile38-cli/main.go - Travis.CI docker push script has been updated to address a change to Docker's JSON repo meta output, which in turn fixes a bug where new Tile38 versions were not being properly pushed to Docker
34 lines
903 B
Markdown
34 lines
903 B
Markdown
circuit-breaker
|
|
===============
|
|
|
|
[](https://travis-ci.org/eapache/go-resiliency)
|
|
[](https://godoc.org/github.com/eapache/go-resiliency/breaker)
|
|
|
|
The circuit-breaker resiliency pattern for golang.
|
|
|
|
Creating a breaker takes three parameters:
|
|
- error threshold (for opening the breaker)
|
|
- success threshold (for closing the breaker)
|
|
- timeout (how long to keep the breaker open)
|
|
|
|
```go
|
|
b := breaker.New(3, 1, 5*time.Second)
|
|
|
|
for {
|
|
result := b.Run(func() error {
|
|
// communicate with some external service and
|
|
// return an error if the communication failed
|
|
return nil
|
|
})
|
|
|
|
switch result {
|
|
case nil:
|
|
// success!
|
|
case breaker.ErrBreakerOpen:
|
|
// our function wasn't run because the breaker was open
|
|
default:
|
|
// some other error
|
|
}
|
|
}
|
|
```
|