Skip to content

Commit 02fa35e

Browse files
committed
move backoff to new package
1 parent 4071467 commit 02fa35e

2 files changed

Lines changed: 25 additions & 23 deletions

File tree

backoff.go renamed to backoff/backoff.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
package pgsql
1+
package backoff
22

33
import (
44
"math"
55
"math/rand/v2"
66
"time"
7+
8+
"github.com/acoshift/pgsql"
79
)
810

911
// BackoffConfig contains common configuration for all backoff strategies
@@ -38,7 +40,7 @@ const (
3840
)
3941

4042
// NewExponentialBackoff creates a new exponential backoff function
41-
func NewExponentialBackoff(config ExponentialBackoffConfig) BackoffDelayFunc {
43+
func NewExponentialBackoff(config ExponentialBackoffConfig) pgsql.BackoffDelayFunc {
4244
return func(attempt int) time.Duration {
4345
baseDelay := time.Duration(float64(config.BaseDelay) * math.Pow(config.Multiplier, float64(attempt)))
4446
if baseDelay > config.MaxDelay {
@@ -71,7 +73,7 @@ func NewExponentialBackoff(config ExponentialBackoffConfig) BackoffDelayFunc {
7173
}
7274

7375
// NewLinearBackoff creates a new linear backoff function
74-
func NewLinearBackoff(config LinearBackoffConfig) BackoffDelayFunc {
76+
func NewLinearBackoff(config LinearBackoffConfig) pgsql.BackoffDelayFunc {
7577
return func(attempt int) time.Duration {
7678
delay := config.BaseDelay + time.Duration(attempt)*config.Increment
7779
if delay > config.MaxDelay {
@@ -81,7 +83,7 @@ func NewLinearBackoff(config LinearBackoffConfig) BackoffDelayFunc {
8183
}
8284
}
8385

84-
func DefaultExponentialBackoff() BackoffDelayFunc {
86+
func DefaultExponentialBackoff() pgsql.BackoffDelayFunc {
8587
return NewExponentialBackoff(ExponentialBackoffConfig{
8688
BackoffConfig: BackoffConfig{
8789
BaseDelay: 100 * time.Millisecond,
@@ -92,7 +94,7 @@ func DefaultExponentialBackoff() BackoffDelayFunc {
9294
})
9395
}
9496

95-
func DefaultExponentialBackoffWithFullJitter() BackoffDelayFunc {
97+
func DefaultExponentialBackoffWithFullJitter() pgsql.BackoffDelayFunc {
9698
return NewExponentialBackoff(ExponentialBackoffConfig{
9799
BackoffConfig: BackoffConfig{
98100
BaseDelay: 100 * time.Millisecond,
@@ -103,7 +105,7 @@ func DefaultExponentialBackoffWithFullJitter() BackoffDelayFunc {
103105
})
104106
}
105107

106-
func DefaultExponentialBackoffWithEqualJitter() BackoffDelayFunc {
108+
func DefaultExponentialBackoffWithEqualJitter() pgsql.BackoffDelayFunc {
107109
return NewExponentialBackoff(ExponentialBackoffConfig{
108110
BackoffConfig: BackoffConfig{
109111
BaseDelay: 100 * time.Millisecond,
@@ -114,7 +116,7 @@ func DefaultExponentialBackoffWithEqualJitter() BackoffDelayFunc {
114116
})
115117
}
116118

117-
func DefaultLinearBackoff() BackoffDelayFunc {
119+
func DefaultLinearBackoff() pgsql.BackoffDelayFunc {
118120
return NewLinearBackoff(LinearBackoffConfig{
119121
BackoffConfig: BackoffConfig{
120122
BaseDelay: 100 * time.Millisecond,

backoff_test.go renamed to backoff/backoff_test.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
package pgsql_test
1+
package backoff_test
22

33
import (
44
"testing"
55
"time"
66

7-
"github.com/acoshift/pgsql"
7+
"github.com/acoshift/pgsql/backoff"
88
)
99

1010
func TestExponentialBackoff(t *testing.T) {
1111
t.Parallel()
1212

13-
config := pgsql.ExponentialBackoffConfig{
14-
BackoffConfig: pgsql.BackoffConfig{
13+
config := backoff.ExponentialBackoffConfig{
14+
BackoffConfig: backoff.BackoffConfig{
1515
BaseDelay: 10 * time.Millisecond,
1616
MaxDelay: 1 * time.Second,
1717
},
1818
Multiplier: 2.0,
1919
}
20-
backoff := pgsql.NewExponentialBackoff(config)
20+
backoff := backoff.NewExponentialBackoff(config)
2121

2222
// Test exponential growth
2323
delays := []time.Duration{}
@@ -45,15 +45,15 @@ func TestExponentialBackoff(t *testing.T) {
4545
func TestExponentialBackoffWithFullJitter(t *testing.T) {
4646
t.Parallel()
4747

48-
config := pgsql.ExponentialBackoffConfig{
49-
BackoffConfig: pgsql.BackoffConfig{
48+
config := backoff.ExponentialBackoffConfig{
49+
BackoffConfig: backoff.BackoffConfig{
5050
BaseDelay: 100 * time.Millisecond,
5151
MaxDelay: 1 * time.Second,
5252
},
5353
Multiplier: 2.0,
54-
JitterType: pgsql.FullJitter,
54+
JitterType: backoff.FullJitter,
5555
}
56-
backoff := pgsql.NewExponentialBackoff(config)
56+
backoff := backoff.NewExponentialBackoff(config)
5757

5858
// Test that jitter introduces randomness
5959
var delays []time.Duration
@@ -86,15 +86,15 @@ func TestExponentialBackoffWithFullJitter(t *testing.T) {
8686
func TestExponentialBackoffWithEqualJitter(t *testing.T) {
8787
t.Parallel()
8888

89-
config := pgsql.ExponentialBackoffConfig{
90-
BackoffConfig: pgsql.BackoffConfig{
89+
config := backoff.ExponentialBackoffConfig{
90+
BackoffConfig: backoff.BackoffConfig{
9191
BaseDelay: 100 * time.Millisecond,
9292
MaxDelay: 1 * time.Second,
9393
},
9494
Multiplier: 2.0,
95-
JitterType: pgsql.EqualJitter,
95+
JitterType: backoff.EqualJitter,
9696
}
97-
backoff := pgsql.NewExponentialBackoff(config)
97+
backoff := backoff.NewExponentialBackoff(config)
9898

9999
delay := backoff(2)
100100

@@ -116,14 +116,14 @@ func TestExponentialBackoffWithEqualJitter(t *testing.T) {
116116
func TestLinearBackoff(t *testing.T) {
117117
t.Parallel()
118118

119-
config := pgsql.LinearBackoffConfig{
120-
BackoffConfig: pgsql.BackoffConfig{
119+
config := backoff.LinearBackoffConfig{
120+
BackoffConfig: backoff.BackoffConfig{
121121
BaseDelay: 100 * time.Millisecond,
122122
MaxDelay: 1 * time.Second,
123123
},
124124
Increment: 100 * time.Millisecond,
125125
}
126-
backoff := pgsql.NewLinearBackoff(config)
126+
backoff := backoff.NewLinearBackoff(config)
127127

128128
// Test linear growth
129129
delays := []time.Duration{}

0 commit comments

Comments
 (0)