summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Vandiver <github@chmrr.net>2021-10-23 14:46:27 -0700
committerGitHub <noreply@github.com>2021-10-23 23:46:27 +0200
commite3ffbcadd82d71e87e7f5841f9a037f9358a010b (patch)
tree82b5e6588254d587e07ff23541090f46527cc8f5
parentb7d73077e5944056c1078ed22a3211e6a11ffad4 (diff)
downloadmatterbridge-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.yml6
-rw-r--r--.goreleaser.yml2
-rw-r--r--Dockerfile2
-rw-r--r--bridge/zulip/zulip.go5
-rw-r--r--matterbridge.go10
-rw-r--r--tgs.Dockerfile2
-rw-r--r--version/version.go6
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:
-
diff --git a/Dockerfile b/Dockerfile
index 8e2dded6..6a2b8659 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -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
+)