Skip to content

Commit 745c21a

Browse files
committed
MB-60197 Move sync to log/slog
Change-Id: Iaee411ae8569234f8f6259ee8ed67b83cdeb1ab1 Reviewed-on: https://review.couchbase.org/c/tools-common/+/203125 Reviewed-by: Matt Hall <[email protected]> Tested-by: Build Bot <[email protected]>
1 parent e2150bf commit 745c21a

File tree

7 files changed

+33
-37
lines changed

7 files changed

+33
-37
lines changed

sync/CHANGES.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changes
22

3+
## v2.0.0
4+
5+
- Moved to `log/slog`
6+
37
## v1.0.3
48

59
- Upgraded dependencies

sync/go.mod

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
1-
module github.com/couchbase/tools-common/sync
1+
module github.com/couchbase/tools-common/sync/v2
22

33
go 1.21
44

55
require (
6-
github.com/couchbase/tools-common/core v1.0.0
7-
github.com/couchbase/tools-common/utils/v2 v2.0.3
6+
github.com/couchbase/tools-common/utils/v3 v3.0.0
87
github.com/stretchr/testify v1.8.4
98
)
109

1110
require (
1211
github.com/couchbase/tools-common/strings v1.0.0 // indirect
1312
github.com/davecgh/go-spew v1.1.1 // indirect
1413
github.com/pmezard/go-difflib v1.0.0 // indirect
15-
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
16-
golang.org/x/sys v0.14.0 // indirect
14+
golang.org/x/sys v0.15.0 // indirect
1715
gopkg.in/yaml.v3 v3.0.1 // indirect
1816
)

sync/go.sum

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
1-
github.com/couchbase/tools-common/core v1.0.0 h1:pHz0xN+qhAd/OchSDPQKsZvIulJzFoLK95RVPLbeEBY=
2-
github.com/couchbase/tools-common/core v1.0.0/go.mod h1:jzRm/z2CehQ8xcUAlNL7wRz6EN3o7OPrAgncFiEEA6s=
31
github.com/couchbase/tools-common/strings v1.0.0 h1:GSP3nA/dDkoLbBPt4Zezfl0KJxLiPyw61PoWrNBsK5g=
42
github.com/couchbase/tools-common/strings v1.0.0/go.mod h1:946T46RH9TQ9BwDag7oJsKCJrPguvYFeLlfMir7DFAY=
5-
github.com/couchbase/tools-common/utils/v2 v2.0.3 h1:EcnS4eZCEpcdxqAAZC2FJMyGeLKZB+hOccVOTRROpWs=
6-
github.com/couchbase/tools-common/utils/v2 v2.0.3/go.mod h1:VlSdVSq3B0Sv2MV5Gc46fQ0n6BEX2YggE8XPd54pIyM=
3+
github.com/couchbase/tools-common/utils/v3 v3.0.0 h1:j9o3D2Ue6b6AQg3B8WuaQ14UyIqg00m8SpbVuM4+NrM=
4+
github.com/couchbase/tools-common/utils/v3 v3.0.0/go.mod h1:3hsaJwSI1FhAc6PK0YgsUz1Z9rTn+viqLx+Ar9t3mHI=
75
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
86
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
97
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
108
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
119
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
1210
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
13-
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
14-
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
15-
golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
16-
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
11+
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
12+
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
1713
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
1814
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
1915
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

sync/hofp/options.go

+5-9
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ package hofp
22

33
import (
44
"context"
5+
"log/slog"
56

6-
"github.com/couchbase/tools-common/core/log"
7-
"github.com/couchbase/tools-common/utils/v2/system"
7+
"github.com/couchbase/tools-common/utils/v3/system"
88
)
99

1010
// Options encapsulates the available options which can be used when creating a worker pool.
@@ -19,12 +19,8 @@ type Options struct {
1919
// before calls to 'Queue' block. This value is multiplied by the number of goroutines, and defaults to one.
2020
BufferMultiplier int
2121

22-
// LogPrefix is the prefix used when logging errors which occur once teardown has already begun. Defaults to
23-
// '(hofp)'.
24-
LogPrefix string
25-
2622
// Logger is the passed Logger struct that implements the Log method for logger the user wants to use.
27-
Logger log.Logger
23+
Logger *slog.Logger
2824
}
2925

3026
// defaults fills any missing attributes to a sane default.
@@ -39,7 +35,7 @@ func (o *Options) defaults() {
3935

4036
o.BufferMultiplier = max(1, o.BufferMultiplier)
4137

42-
if o.LogPrefix == "" {
43-
o.LogPrefix = "(hofp)"
38+
if o.Logger == nil {
39+
o.Logger = slog.Default()
4440
}
4541
}

sync/hofp/options_test.go

+12-8
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ package hofp
22

33
import (
44
"context"
5+
"log/slog"
6+
"os"
57
"testing"
68

79
"github.com/stretchr/testify/require"
810

9-
"github.com/couchbase/tools-common/utils/v2/system"
11+
"github.com/couchbase/tools-common/utils/v3/system"
1012
)
1113

1214
func TestOptionsDefaults(t *testing.T) {
@@ -21,21 +23,21 @@ func TestOptionsDefaults(t *testing.T) {
2123
Context: ctx,
2224
Size: system.NumCPU(),
2325
BufferMultiplier: 1,
24-
LogPrefix: "(hofp)",
26+
Logger: slog.Default(),
2527
}
2628

2729
require.Equal(t, expected, opts)
2830
})
2931

3032
t.Run("Size", func(t *testing.T) {
31-
opts := Options{LogPrefix: "test prefix:"}
33+
var opts Options
3234
opts.defaults()
3335

3436
expected := Options{
3537
Context: context.Background(),
3638
Size: system.NumCPU(),
3739
BufferMultiplier: 1,
38-
LogPrefix: "test prefix:",
40+
Logger: slog.Default(),
3941
}
4042

4143
require.Equal(t, expected, opts)
@@ -49,21 +51,23 @@ func TestOptionsDefaults(t *testing.T) {
4951
Context: context.Background(),
5052
Size: system.NumCPU(),
5153
BufferMultiplier: 42,
52-
LogPrefix: "(hofp)",
54+
Logger: slog.Default(),
5355
}
5456

5557
require.Equal(t, expected, opts)
5658
})
5759

58-
t.Run("LogPrefix", func(t *testing.T) {
59-
opts := Options{Size: 1}
60+
t.Run("Logger", func(t *testing.T) {
61+
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
62+
63+
opts := Options{Size: 1, Logger: logger}
6064
opts.defaults()
6165

6266
expected := Options{
6367
Context: context.Background(),
6468
Size: 1,
6569
BufferMultiplier: 1,
66-
LogPrefix: "(hofp)",
70+
Logger: logger,
6771
}
6872

6973
require.Equal(t, expected, opts)

sync/hofp/pool.go

+4-5
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ package hofp
44

55
import (
66
"context"
7+
"log/slog"
78
"sync"
8-
9-
"github.com/couchbase/tools-common/core/log"
109
)
1110

1211
// Function is a higher order function to be executed by the worker pool, where possible, the function should honor the
@@ -31,7 +30,7 @@ type Pool struct {
3130

3231
lock sync.RWMutex
3332

34-
logger log.WrappedLogger
33+
logger *slog.Logger
3534
}
3635

3736
// NewPool returns a new higher order function worker pool with the provided number of workers.
@@ -46,7 +45,7 @@ func NewPool(opts Options) *Pool {
4645
hofs: make(chan Function, opts.Size*opts.BufferMultiplier),
4746
ctx: ctx,
4847
cancel: cancel,
49-
logger: log.NewWrappedLogger(opts.Logger),
48+
logger: opts.Logger,
5049
}
5150

5251
pool.wg.Add(opts.Size)
@@ -80,7 +79,7 @@ func (p *Pool) work() {
8079
// The worker pool may already be tearing down, in which case we should log the function error so that it's
8180
// not missed whilst debugging.
8281
if !p.setErr(err) {
83-
p.logger.Errorf("%s Failed to execute function: %v", p.opts.LogPrefix, err)
82+
p.logger.Error("failed to execute function", "error", err)
8483
}
8584

8685
return

sync/hofp/pool_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,12 @@ import (
1010
"github.com/stretchr/testify/assert"
1111
"github.com/stretchr/testify/require"
1212

13-
"github.com/couchbase/tools-common/utils/v2/system"
13+
"github.com/couchbase/tools-common/utils/v3/system"
1414
)
1515

1616
func TestNewPool(t *testing.T) {
1717
pool := NewPool(Options{Size: 1})
1818
require.Equal(t, pool.opts.Size, 1)
19-
require.Equal(t, "(hofp)", pool.opts.LogPrefix)
2019
require.NotNil(t, pool.ctx)
2120
require.NotNil(t, pool.cancel)
2221
require.Equal(t, 1, cap(pool.hofs))

0 commit comments

Comments
 (0)