diff --git a/vendor/git.autistici.org/ai3/go-common/ldap/pool.go b/vendor/git.autistici.org/ai3/go-common/ldap/pool.go index 560d639b7091334e83d290b5c0ac1ff56b1261ee..520dcf2bdcdb719873315324477cbae09aa902ca 100644 --- a/vendor/git.autistici.org/ai3/go-common/ldap/pool.go +++ b/vendor/git.autistici.org/ai3/go-common/ldap/pool.go @@ -7,11 +7,30 @@ import ( "net/url" "time" - "git.autistici.org/ai3/go-common/clientutil" "github.com/cenkalti/backoff" "gopkg.in/ldap.v2" ) +// Parameters that define the exponential backoff algorithm used. +var ( + ExponentialBackOffInitialInterval = 100 * time.Millisecond + ExponentialBackOffMultiplier = 1.4142 +) + +// newExponentialBackOff creates a backoff.ExponentialBackOff object +// with our own default values. +func newExponentialBackOff() *backoff.ExponentialBackOff { + b := backoff.NewExponentialBackOff() + b.InitialInterval = ExponentialBackOffInitialInterval + b.Multiplier = ExponentialBackOffMultiplier + + // Set MaxElapsedTime to 0 because we expect the overall + // timeout to be dictated by the request Context. + b.MaxElapsedTime = 0 + + return b +} + // ConnectionPool provides a goroutine-safe pool of long-lived LDAP // connections that will reconnect on errors. type ConnectionPool struct { @@ -129,14 +148,14 @@ func NewConnectionPool(uri, bindDN, bindPw string, cacheSize int) (*ConnectionPo } func (p *ConnectionPool) doRequest(ctx context.Context, fn func(*ldap.Conn) error) error { - return clientutil.Retry(func() error { + return backoff.Retry(func() error { conn, err := p.Get(ctx) if err != nil { // Here conn is nil, so we don't need to Release it. if isTemporaryLDAPError(err) { - return clientutil.TempError(err) + return err } - return err + return backoff.Permanent(err) } if deadline, ok := ctx.Deadline(); ok { @@ -144,13 +163,12 @@ func (p *ConnectionPool) doRequest(ctx context.Context, fn func(*ldap.Conn) erro } err = fn(conn) - if err != nil && isTemporaryLDAPError(err) { - p.Release(conn, err) - return clientutil.TempError(err) - } p.Release(conn, err) + if err != nil && !isTemporaryLDAPError(err) { + err = backoff.Permanent(err) + } return err - }, backoff.WithContext(clientutil.NewExponentialBackOff(), ctx)) + }, backoff.WithContext(newExponentialBackOff(), ctx)) } // Search performs the given search request. It will retry the request diff --git a/vendor/vendor.json b/vendor/vendor.json index a75080acba2ef3edf2ecf6e27fc74b1fcc76670f..c59c8229cb6518072ef2b9aaca2aac0545bd66cd 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -5,44 +5,44 @@ { "checksumSHA1": "raJx5BjBbVQG0ylGSjPpi+JvqjU=", "path": "git.autistici.org/ai3/go-common", - "revision": "193e29e61c81e6bb5548bfe89bba05836d06b61f", - "revisionTime": "2018-08-16T21:47:58Z" + "revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357", + "revisionTime": "2018-08-17T06:38:25Z" }, { "checksumSHA1": "49MChcx9D+/+pCyl/F469TcQcK4=", "path": "git.autistici.org/ai3/go-common/clientutil", - "revision": "193e29e61c81e6bb5548bfe89bba05836d06b61f", - "revisionTime": "2018-08-16T21:47:58Z" + "revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357", + "revisionTime": "2018-08-17T06:38:25Z" }, { - "checksumSHA1": "udgeRdy83f6tJmhoKXFxCfwOIZw=", + "checksumSHA1": "kQbBWZqrXc95wodlrOKEshQVaBo=", "path": "git.autistici.org/ai3/go-common/ldap", - "revision": "193e29e61c81e6bb5548bfe89bba05836d06b61f", - "revisionTime": "2018-08-16T21:47:58Z" + "revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357", + "revisionTime": "2018-08-17T06:38:25Z" }, { "checksumSHA1": "7VBLbwaK1m/jwsk8sLsh4iD9T/s=", "path": "git.autistici.org/ai3/go-common/serverutil", - "revision": "193e29e61c81e6bb5548bfe89bba05836d06b61f", - "revisionTime": "2018-08-16T21:47:58Z" + "revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357", + "revisionTime": "2018-08-17T06:38:25Z" }, { "checksumSHA1": "T2vf4xzKRqoIjfXlofMgudKA8rA=", "path": "git.autistici.org/ai3/go-common/unix", - "revision": "193e29e61c81e6bb5548bfe89bba05836d06b61f", - "revisionTime": "2018-08-16T21:47:58Z" + "revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357", + "revisionTime": "2018-08-17T06:38:25Z" }, { "checksumSHA1": "OY/kamdVCtqr00dhc+STq7ApbmA=", "path": "git.autistici.org/ai3/go-common/userenckey", - "revision": "193e29e61c81e6bb5548bfe89bba05836d06b61f", - "revisionTime": "2018-08-16T21:47:58Z" + "revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357", + "revisionTime": "2018-08-17T06:38:25Z" }, { "checksumSHA1": "QHzKyLU57jphYBzuhl4ELbCwVX0=", "path": "git.autistici.org/id/go-sso", - "revision": "dc62a1d65832c8a3f73e7a0cffb78ad0b4d3d8fc", - "revisionTime": "2018-02-18T15:46:43Z" + "revision": "a7ddc7fb9c9053ad8c239e6e968a6f73bb181021", + "revisionTime": "2018-08-17T07:29:35Z" }, { "checksumSHA1": "spyv5/YFBjYyZLZa1U2LBfDR8PM=",