diff options
author | Alex Vandiver <github@chmrr.net> | 2021-10-23 14:46:27 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-23 23:46:27 +0200 |
commit | e3ffbcadd82d71e87e7f5841f9a037f9358a010b (patch) | |
tree | 82b5e6588254d587e07ff23541090f46527cc8f5 | |
parent | b7d73077e5944056c1078ed22a3211e6a11ffad4 (diff) | |
download | matterbridge-msglm-e3ffbcadd82d71e87e7f5841f9a037f9358a010b.tar.gz matterbridge-msglm-e3ffbcadd82d71e87e7f5841f9a037f9358a010b.tar.bz2 matterbridge-msglm-e3ffbcadd82d71e87e7f5841f9a037f9358a010b.zip |
Add better error handling on Zulip (#1589)
* zulip: Treat unknown errors with a 10-second backoff.
An unknown error (including an unauthorized error) would fall through
with no calls to time.Sleep, resulting in hammering the server as
quickly as possible.
Add a 10-second sleep in the default error case. The heartbeat is
left with no explicit sleep, but all other codepaths now contain one.
* version: Move version information into a separate package.
This will allow it to be accessed by other sections of the code.
* zulip: Use the matterbridge version in the user-agent.
Co-authored-by: Wim <wim@42.be>
-rw-r--r-- | .github/workflows/development.yml | 6 | ||||
-rw-r--r-- | .goreleaser.yml | 2 | ||||
-rw-r--r-- | Dockerfile | 2 | ||||
-rw-r--r-- | bridge/zulip/zulip.go | 5 | ||||
-rw-r--r-- | matterbridge.go | 10 | ||||
-rw-r--r-- | tgs.Dockerfile | 2 | ||||
-rw-r--r-- | version/version.go | 6 |
7 files changed, 20 insertions, 13 deletions
diff --git a/.github/workflows/development.yml b/.github/workflows/development.yml index ff7313cf..0f62c997 100644 --- a/.github/workflows/development.yml +++ b/.github/workflows/development.yml @@ -35,9 +35,9 @@ jobs: run: | mkdir -p output/{win,lin,arm,mac} VERSION=$(git describe --tags) - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -X main.githash=$(git log --pretty=format:'%h' -n 1)" -o output/lin/matterbridge-$VERSION-linux-amd64 - CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -X main.githash=$(git log --pretty=format:'%h' -n 1)" -o output/win/matterbridge-$VERSION-windows-amd64.exe - CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "-s -X main.githash=$(git log --pretty=format:'%h' -n 1)" -o output/mac/matterbridge-$VERSION-darwin-amd64 + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -X github.com/42wim/matterbridge/version.GitHash=$(git log --pretty=format:'%h' -n 1)" -o output/lin/matterbridge-$VERSION-linux-amd64 + CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -X github.com/42wim/matterbridge/version.GitHash=$(git log --pretty=format:'%h' -n 1)" -o output/win/matterbridge-$VERSION-windows-amd64.exe + CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "-s -X github.com/42wim/matterbridge/version.GitHash=$(git log --pretty=format:'%h' -n 1)" -o output/mac/matterbridge-$VERSION-darwin-amd64 - name: Upload linux 64-bit if: startsWith(matrix.go-version,'1.17') uses: actions/upload-artifact@v2 diff --git a/.goreleaser.yml b/.goreleaser.yml index 5af21a85..c4f9064b 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -22,7 +22,7 @@ builds: - 6 - 7 ldflags: - - -s -w -X main.githash={{.ShortCommit}} + - -s -w -X github.com/42wim/matterbridge/version.GitHash={{.ShortCommit}} archives: - @@ -3,7 +3,7 @@ FROM alpine:edge AS builder COPY . /go/src/matterbridge RUN apk --no-cache add go git \ && cd /go/src/matterbridge \ - && CGO_ENABLED=0 go build -mod vendor -ldflags "-X main.githash=$(git log --pretty=format:'%h' -n 1)" -o /bin/matterbridge + && CGO_ENABLED=0 go build -mod vendor -ldflags "-X github.com/42wim/matterbridge/version.GitHash=$(git log --pretty=format:'%h' -n 1)" -o /bin/matterbridge FROM alpine RUN apk --no-cache add ca-certificates mailcap diff --git a/bridge/zulip/zulip.go b/bridge/zulip/zulip.go index e66558a2..c912b6f0 100644 --- a/bridge/zulip/zulip.go +++ b/bridge/zulip/zulip.go @@ -2,6 +2,7 @@ package bzulip import ( "encoding/json" + "fmt" "io/ioutil" "strconv" "strings" @@ -11,6 +12,7 @@ import ( "github.com/42wim/matterbridge/bridge" "github.com/42wim/matterbridge/bridge/config" "github.com/42wim/matterbridge/bridge/helper" + "github.com/42wim/matterbridge/version" gzb "github.com/matterbridge/gozulipbot" ) @@ -27,7 +29,7 @@ func New(cfg *bridge.Config) bridge.Bridger { } func (b *Bzulip) Connect() error { - bot := gzb.Bot{APIKey: b.GetString("token"), APIURL: b.GetString("server") + "/api/v1/", Email: b.GetString("login")} + bot := gzb.Bot{APIKey: b.GetString("token"), APIURL: b.GetString("server") + "/api/v1/", Email: b.GetString("login"), UserAgent: fmt.Sprintf("matterbridge/%s", version.Release)} bot.Init() q, err := bot.RegisterAll() b.q = q @@ -125,6 +127,7 @@ func (b *Bzulip) handleQueue() error { b.Log.Debug("heartbeat received.") default: b.Log.Debugf("receiving error: %#v", err) + time.Sleep(time.Second * 10) } if err != nil { continue diff --git a/matterbridge.go b/matterbridge.go index b9b7d6d3..7ab29784 100644 --- a/matterbridge.go +++ b/matterbridge.go @@ -10,15 +10,13 @@ import ( "github.com/42wim/matterbridge/bridge/config" "github.com/42wim/matterbridge/gateway" "github.com/42wim/matterbridge/gateway/bridgemap" + "github.com/42wim/matterbridge/version" "github.com/google/gops/agent" prefixed "github.com/matterbridge/logrus-prefixed-formatter" "github.com/sirupsen/logrus" ) var ( - version = "1.23.1-dev" - githash string - flagConfig = flag.String("conf", "matterbridge.toml", "config file") flagDebug = flag.Bool("debug", false, "enable debug") flagVersion = flag.Bool("version", false, "show version") @@ -28,7 +26,7 @@ var ( func main() { flag.Parse() if *flagVersion { - fmt.Printf("version: %s %s\n", version, githash) + fmt.Printf("version: %s %s\n", version.Release, version.GitHash) return } @@ -43,8 +41,8 @@ func main() { } } - logger.Printf("Running version %s %s", version, githash) - if strings.Contains(version, "-dev") { + logger.Printf("Running version %s %s", version.Release, version.GitHash) + if strings.Contains(version.Release, "-dev") { logger.Println("WARNING: THIS IS A DEVELOPMENT VERSION. Things may break.") } diff --git a/tgs.Dockerfile b/tgs.Dockerfile index 83a77e73..5badc0a7 100644 --- a/tgs.Dockerfile +++ b/tgs.Dockerfile @@ -5,7 +5,7 @@ RUN apk add \ go \ git \ && cd /go/src/matterbridge \ - && go build -mod vendor -ldflags "-X main.githash=$(git log --pretty=format:'%h' -n 1)" -o /bin/matterbridge + && go build -mod vendor -ldflags "-X github.com/42wim/matterbridge/version.GitHash=$(git log --pretty=format:'%h' -n 1)" -o /bin/matterbridge FROM alpine RUN apk --no-cache add \ diff --git a/version/version.go b/version/version.go new file mode 100644 index 00000000..19f3fa3a --- /dev/null +++ b/version/version.go @@ -0,0 +1,6 @@ +package version + +var ( + Release = "1.23.1-dev" + GitHash string +) |