From e20112f209cb4b860815c208d88041885c2efcdd Mon Sep 17 00:00:00 2001 From: Clement Michaud Date: Sat, 16 Nov 2019 15:53:16 +0100 Subject: [PATCH] Remove retry mechanism from mysql provider. The retry logic is implemented in the reflex service script instead. --- cmd/authelia-suites/main.go | 18 ++++++++-------- example/compose/authelia/resources/run.sh | 25 ++++++++++++++++++++++- go.mod | 4 ++++ go.sum | 10 +++++++++ storage/mysql_provider.go | 15 -------------- 5 files changed, 47 insertions(+), 25 deletions(-) diff --git a/cmd/authelia-suites/main.go b/cmd/authelia-suites/main.go index 714130346..cd5140e66 100644 --- a/cmd/authelia-suites/main.go +++ b/cmd/authelia-suites/main.go @@ -108,18 +108,18 @@ func teardownSuite(cmd *cobra.Command, args []string) { s := suites.GlobalRegistry.Get(args[0]) + suiteTmpDirectory := tmpDirectory + args[0] + if err := s.TearDown(suiteTmpDirectory); err != nil { + log.Fatal(err) + } + + if err := os.RemoveAll(suiteTmpDirectory); err != nil { + log.Fatal(err) + } + if err := removeRunningSuiteFile(); err != nil { log.Print(err) } - suiteTmpDirectory := tmpDirectory + args[0] - s.TearDown(suiteTmpDirectory) - - err := os.RemoveAll(suiteTmpDirectory) - - if err != nil { - log.Fatal(err) - } - log.Info("Environment has been cleaned!") } diff --git a/example/compose/authelia/resources/run.sh b/example/compose/authelia/resources/run.sh index cc62a502b..f6fab20e0 100755 --- a/example/compose/authelia/resources/run.sh +++ b/example/compose/authelia/resources/run.sh @@ -2,9 +2,32 @@ set -e +# Retries a command on failure. +# $1 - the max number of attempts +# $2... - the command to run + +retry() { + local -r -i max_attempts="$1"; shift + local -r cmd="$@" + local -i attempt_num=1 + until $cmd + do + if ((attempt_num==max_attempts)) + then + echo "Attempt $attempt_num failed and there are no more attempts left!" + return 1 + else + echo "Attempt $attempt_num failed! Trying again in 10 seconds..." + sleep 10 + fi + done +} + + # Build the binary go build -o /tmp/authelia/authelia-tmp cmd/authelia/main.go # Run the temporary binary cd $SUITE_PATH -/tmp/authelia/authelia-tmp -config ${SUITE_PATH}/configuration.yml \ No newline at end of file + +retry 3 /tmp/authelia/authelia-tmp -config ${SUITE_PATH}/configuration.yml \ No newline at end of file diff --git a/go.mod b/go.mod index 2610a8915..ede1c8e1a 100644 --- a/go.mod +++ b/go.mod @@ -5,13 +5,17 @@ go 1.13 require ( github.com/Workiva/go-datastructures v1.0.50 github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a + github.com/cespare/reflex v0.2.0 // indirect github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74 github.com/fasthttp/router v0.5.2 github.com/fasthttp/session v1.1.3 github.com/go-sql-driver/mysql v1.4.1 github.com/golang/mock v1.3.1 + github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect + github.com/kr/pty v1.1.8 // indirect github.com/mattn/go-sqlite3 v1.11.0 + github.com/ogier/pflag v0.0.1 // indirect github.com/onsi/ginkgo v1.10.3 // indirect github.com/onsi/gomega v1.7.1 // indirect github.com/otiai10/copy v1.0.2 diff --git a/go.sum b/go.sum index 6c369cae4..bef7c81e4 100644 --- a/go.sum +++ b/go.sum @@ -19,11 +19,15 @@ github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bradfitz/gomemcache v0.0.0-20190329173943-551aad21a668/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= +github.com/cespare/reflex v0.2.0 h1:6d9WpWJseKjJvZEevKP7Pk42nPx2+BUTqmhNk8wZPwM= +github.com/cespare/reflex v0.2.0/go.mod h1:ooqOLJ4algvHP/oYvKWfWJ9tFUzCLDk5qkIJduMYrgI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/creack/pty v1.1.7 h1:6pwm8kMQKCmgUg0ZHTm5+/YvRK0s3THD/28+T6/kk4A= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -72,12 +76,16 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/klauspost/compress v1.8.2 h1:Bx0qjetmNjdFXASH02NSAREKpiaDwkO1DRZ3dV2KCcs= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/cpuid v1.2.1 h1:vJi+O/nMdFt0vqm8NZBI6wzALWdA2X+egi0ogNyrC/w= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -88,6 +96,8 @@ github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/ogier/pflag v0.0.1 h1:RW6JSWSu/RkSatfcLtogGfFgpim5p7ARQ10ECk5O750= +github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3 h1:OoxbjfXVZyod1fmWYhI7SEyaD8B00ynP3T+D5GiyHOY= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= diff --git a/storage/mysql_provider.go b/storage/mysql_provider.go index 116fd0ebf..6503f0df7 100644 --- a/storage/mysql_provider.go +++ b/storage/mysql_provider.go @@ -3,7 +3,6 @@ package storage import ( "database/sql" "fmt" - "time" "github.com/clems4ever/authelia/configuration/schema" "github.com/clems4ever/authelia/logging" @@ -44,20 +43,6 @@ func NewSQLProvider(configuration schema.SQLStorageConfiguration) *MySQLProvider logging.Logger().Fatalf("Unable to connect to SQL database: %v", err) } - for i := 0; i < 3; i++ { - if err = db.Ping(); err == nil { - logging.Logger().Debug("Connection to the database is established") - break - } - - if i == 2 { - logging.Logger().Fatal("Aborting because connection to database failed") - } - - logging.Logger().Errorf("Unable to ping database retrying in 10 seconds. error: %v", err) - time.Sleep(10 * time.Second) - } - provider := MySQLProvider{} if err := provider.initialize(db); err != nil { logging.Logger().Fatalf("Unable to initialize SQL database: %v", err)