Skip to content

Commit

Permalink
fix: Send updated selector on streaming reconnect
Browse files Browse the repository at this point in the history
  • Loading branch information
keelerm84 committed Dec 19, 2024
1 parent ed311e0 commit b187c17
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 28 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ require (
github.com/fsnotify/fsnotify v1.4.7
github.com/gregjones/httpcache v0.0.0-20171119193500-2bcd89a1743f
github.com/launchdarkly/ccache v1.1.0
github.com/launchdarkly/eventsource v1.6.2
github.com/launchdarkly/eventsource v1.8.0
github.com/launchdarkly/go-jsonstream/v3 v3.1.0
github.com/launchdarkly/go-ntlm-proxy-auth v1.0.1
github.com/launchdarkly/go-sdk-common/v3 v3.1.0
Expand Down
9 changes: 2 additions & 7 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/launchdarkly/ccache v1.1.0 h1:voD1M+ZJXR3MREOKtBwgTF9hYHl1jg+vFKS/+VAkR2k=
github.com/launchdarkly/ccache v1.1.0/go.mod h1:TlxzrlnzvYeXiLHmesMuvoZetu4Z97cV1SsdqqBJi1Q=
github.com/launchdarkly/eventsource v1.6.2 h1:5SbcIqzUomn+/zmJDrkb4LYw7ryoKFzH/0TbR0/3Bdg=
github.com/launchdarkly/eventsource v1.6.2/go.mod h1:LHxSeb4OnqznNZxCSXbFghxS/CjIQfzHovNoAqbO/Wk=
github.com/launchdarkly/eventsource v1.8.0 h1:o9TL53lINP9PCrKESlpIZADvN+eHWlSVmAzZDZ+FEA0=
github.com/launchdarkly/eventsource v1.8.0/go.mod h1:IBckHy1VOjJGqSg07EJJLiUnk5DPunX9LKD9vbcgeHo=
github.com/launchdarkly/go-jsonstream/v3 v3.1.0 h1:U/7/LplZO72XefBQ+FzHf6o4FwLHVqBE+4V58Ornu/E=
github.com/launchdarkly/go-jsonstream/v3 v3.1.0/go.mod h1:2Pt4BR5AwWgsuVTCcIpB6Os04JFIKWfoA+7faKkZB5E=
github.com/launchdarkly/go-ntlm-proxy-auth v1.0.1 h1:Iz5cg9mB/0vt5llZE+J0iGQ5+O/U8CWuRUUR7Ou8eNM=
Expand All @@ -32,7 +32,6 @@ github.com/launchdarkly/go-semver v1.0.3/go.mod h1:xFmMwXba5Mb+3h72Z+VeSs9ahCvKo
github.com/launchdarkly/go-server-sdk-evaluation/v3 v3.0.1 h1:rTgcYAFraGFj7sBMB2b7JCYCm0b9kph4FaMX02t4osQ=
github.com/launchdarkly/go-server-sdk-evaluation/v3 v3.0.1/go.mod h1:fPS5d+zOsgFnMunj+Ki6jjlZtFvo4h9iNbtNXxzYn58=
github.com/launchdarkly/go-test-helpers/v2 v2.2.0 h1:L3kGILP/6ewikhzhdNkHy1b5y4zs50LueWenVF0sBbs=
github.com/launchdarkly/go-test-helpers/v2 v2.2.0/go.mod h1:L7+th5govYp5oKU9iN7To5PgznBuIjBPn+ejqKR0avw=
github.com/launchdarkly/go-test-helpers/v3 v3.0.2 h1:rh0085g1rVJM5qIukdaQ8z1XTWZztbJ49vRZuveqiuU=
github.com/launchdarkly/go-test-helpers/v3 v3.0.2/go.mod h1:u2ZvJlc/DDJTFrshWW50tWMZHLVYXofuSHUfTU/eIwM=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
Expand All @@ -44,8 +43,6 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
Expand All @@ -69,8 +66,6 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/ghodss/yaml.v1 v1.0.0 h1:JlY4R6oVz+ZSvcDhVfNQ/k/8Xo6yb2s1PBhslPZPX4c=
gopkg.in/ghodss/yaml.v1 v1.0.0/go.mod h1:HDvRMPQLqycKPs9nWLuzZWxsxRzISLCRORiDpBUOMqg=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
Expand Down
20 changes: 12 additions & 8 deletions internal/datasourcev2/streaming_data_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -306,9 +306,6 @@ func (sp *StreamProcessor) consumeStream(stream *es.Stream, closeWhenReady chan<

func (sp *StreamProcessor) subscribe(closeWhenReady chan<- struct{}, selector fdv2proto.Selector) {

Check failure on line 307 in internal/datasourcev2/streaming_data_source.go

View workflow job for this annotation

GitHub Actions / ldai Linux, Go 1.23

`(*StreamProcessor).subscribe` - `selector` is unused (unparam)

Check failure on line 307 in internal/datasourcev2/streaming_data_source.go

View workflow job for this annotation

GitHub Actions / ldai Linux, Go 1.22

`(*StreamProcessor).subscribe` - `selector` is unused (unparam)

Check failure on line 307 in internal/datasourcev2/streaming_data_source.go

View workflow job for this annotation

GitHub Actions / ldai Linux, Go 1.18

`(*StreamProcessor).subscribe` - `selector` is unused (unparam)

Check failure on line 307 in internal/datasourcev2/streaming_data_source.go

View workflow job for this annotation

GitHub Actions / ldotel Linux, Go 1.23

`(*StreamProcessor).subscribe` - `selector` is unused (unparam)

Check failure on line 307 in internal/datasourcev2/streaming_data_source.go

View workflow job for this annotation

GitHub Actions / ldotel Linux, Go 1.22

`(*StreamProcessor).subscribe` - `selector` is unused (unparam)

Check failure on line 307 in internal/datasourcev2/streaming_data_source.go

View workflow job for this annotation

GitHub Actions / ldotel Linux, Go 1.18

`(*StreamProcessor).subscribe` - `selector` is unused (unparam)

Check failure on line 307 in internal/datasourcev2/streaming_data_source.go

View workflow job for this annotation

GitHub Actions / Linux, Go 1.18 / Unit Tests and Coverage

`(*StreamProcessor).subscribe` - `selector` is unused (unparam)

Check failure on line 307 in internal/datasourcev2/streaming_data_source.go

View workflow job for this annotation

GitHub Actions / Linux, Go 1.22 / Unit Tests and Coverage

`(*StreamProcessor).subscribe` - `selector` is unused (unparam)

Check failure on line 307 in internal/datasourcev2/streaming_data_source.go

View workflow job for this annotation

GitHub Actions / Linux, Go 1.23 / Unit Tests and Coverage

`(*StreamProcessor).subscribe` - `selector` is unused (unparam)
path := endpoints.AddPath(sp.cfg.URI, endpoints.StreamingRequestPath)
if selector.IsDefined() {
path = path + "?basis=" + selector.State()
}
req, reqErr := http.NewRequest("GET", path, nil)
if reqErr != nil {
sp.loggers.Errorf(
Expand All @@ -324,11 +321,7 @@ func (sp *StreamProcessor) subscribe(closeWhenReady chan<- struct{}, selector fd
close(closeWhenReady)
return
}
if sp.cfg.FilterKey != "" {
req.URL.RawQuery = url.Values{
"filter": {sp.cfg.FilterKey},
}.Encode()
}

if sp.headers != nil {
req.Header = maps.Clone(sp.headers)
}
Expand Down Expand Up @@ -384,6 +377,17 @@ func (sp *StreamProcessor) subscribe(closeWhenReady chan<- struct{}, selector fd
}

stream, err := es.SubscribeWithRequestAndOptions(req,
es.StreamOptionDynamicQueryParams(func(existing url.Values) url.Values {
if selector := sp.dataDestination.Selector(); selector.IsDefined() {
existing.Set("basis", selector.State())
}

if sp.cfg.FilterKey != "" {
existing.Set("filter", sp.cfg.FilterKey)
}

return existing
}),
es.StreamOptionHTTPClient(sp.client),
es.StreamOptionReadTimeout(streamReadTimeout),
es.StreamOptionInitialRetry(initialRetryDelay),
Expand Down
24 changes: 21 additions & 3 deletions internal/sharedtest/mocks/mock_data_destination.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ type MockDataDestination struct {
Statuses chan interfaces.DataSourceStatus
dataStoreStatusProvider *mockDataStoreStatusProvider
lastStatus interfaces.DataSourceStatus
lastKnownSelector fdv2proto.Selector
lock sync.Mutex
}

Expand All @@ -40,11 +41,18 @@ func NewMockDataDestination(realStore subsystems.DataStore) *MockDataDestination
DataStore: dataStore,
Statuses: make(chan interfaces.DataSourceStatus, 10),
dataStoreStatusProvider: dataStoreStatusProvider,
lastKnownSelector: fdv2proto.NoSelector(),
}
}

func (d *MockDataDestination) Selector() fdv2proto.Selector {

Check failure on line 48 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / ldai Linux, Go 1.23

exported: exported method MockDataDestination.Selector should have comment or be unexported (revive)

Check failure on line 48 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / ldai Linux, Go 1.22

exported: exported method MockDataDestination.Selector should have comment or be unexported (revive)

Check failure on line 48 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / ldai Linux, Go 1.18

exported: exported method MockDataDestination.Selector should have comment or be unexported (revive)

Check failure on line 48 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / ldotel Linux, Go 1.23

exported: exported method MockDataDestination.Selector should have comment or be unexported (revive)

Check failure on line 48 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / ldotel Linux, Go 1.22

exported: exported method MockDataDestination.Selector should have comment or be unexported (revive)

Check failure on line 48 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / ldotel Linux, Go 1.18

exported: exported method MockDataDestination.Selector should have comment or be unexported (revive)

Check failure on line 48 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / Linux, Go 1.18 / Unit Tests and Coverage

exported: exported method MockDataDestination.Selector should have comment or be unexported (revive)

Check failure on line 48 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / Linux, Go 1.22 / Unit Tests and Coverage

exported: exported method MockDataDestination.Selector should have comment or be unexported (revive)

Check failure on line 48 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / Linux, Go 1.23 / Unit Tests and Coverage

exported: exported method MockDataDestination.Selector should have comment or be unexported (revive)
d.lock.Lock()
defer d.lock.Unlock()
return d.lastKnownSelector
}

// SetBasis in this test implementation, delegates to d.DataStore.CapturedUpdates.
func (d *MockDataDestination) SetBasis(events []fdv2proto.Change, _ fdv2proto.Selector, _ bool) {
func (d *MockDataDestination) SetBasis(events []fdv2proto.Change, selector fdv2proto.Selector, _ bool) {
// For now, the selector is ignored. When the data sources start making use of it, it should be
// stored so that assertions can be made.

Expand All @@ -56,11 +64,17 @@ func (d *MockDataDestination) SetBasis(events []fdv2proto.Change, _ fdv2proto.Se
for _, coll := range collections {
AssertNotNil(coll.Kind)
}
_ = d.DataStore.Init(toposort.Sort(collections))

if err := d.DataStore.Init(toposort.Sort(collections)); err == nil {
d.lock.Lock()
d.lastKnownSelector = selector
d.lock.Unlock()
}

}

Check failure on line 74 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / ldai Linux, Go 1.23

unnecessary trailing newline (whitespace)

Check failure on line 74 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / ldai Linux, Go 1.22

unnecessary trailing newline (whitespace)

Check failure on line 74 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / ldai Linux, Go 1.18

unnecessary trailing newline (whitespace)

Check failure on line 74 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / ldotel Linux, Go 1.23

unnecessary trailing newline (whitespace)

Check failure on line 74 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / ldotel Linux, Go 1.22

unnecessary trailing newline (whitespace)

Check failure on line 74 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / ldotel Linux, Go 1.18

unnecessary trailing newline (whitespace)

Check failure on line 74 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / Linux, Go 1.18 / Unit Tests and Coverage

unnecessary trailing newline (whitespace)

Check failure on line 74 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / Linux, Go 1.22 / Unit Tests and Coverage

unnecessary trailing newline (whitespace)

Check failure on line 74 in internal/sharedtest/mocks/mock_data_destination.go

View workflow job for this annotation

GitHub Actions / Linux, Go 1.23 / Unit Tests and Coverage

unnecessary trailing newline (whitespace)

// ApplyDelta in this test implementation, delegates to d.DataStore.CapturedUpdates.
func (d *MockDataDestination) ApplyDelta(events []fdv2proto.Change, _ fdv2proto.Selector, _ bool) {
func (d *MockDataDestination) ApplyDelta(events []fdv2proto.Change, selector fdv2proto.Selector, _ bool) {
// For now, the selector is ignored. When the data sources start making use of it, it should be
// stored so that assertions can be made.

Expand All @@ -80,6 +94,10 @@ func (d *MockDataDestination) ApplyDelta(events []fdv2proto.Change, _ fdv2proto.
}
}
}

d.lock.Lock()
d.lastKnownSelector = selector
d.lock.Unlock()
}

// UpdateStatus in this test implementation, pushes a value onto the Statuses channel.
Expand Down
3 changes: 3 additions & 0 deletions subsystems/data_destination.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ import (
// Do not use it.
// You have been warned.
type DataDestination interface {
// Selector returns the last known selector for the data store.
Selector() fdv2proto.Selector

// SetBasis defines a new basis for the data store. This means the store must
// be emptied of any existing data before applying the events. This operation should be
// atomic with respect to any other operations that modify the store.
Expand Down
4 changes: 2 additions & 2 deletions testservice/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ require (
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/launchdarkly/ccache v1.1.0 // indirect
github.com/launchdarkly/eventsource v1.6.2 // indirect
github.com/launchdarkly/eventsource v1.8.0 // indirect
github.com/launchdarkly/go-jsonstream/v3 v3.1.0 // indirect
github.com/launchdarkly/go-sdk-events/v3 v3.4.0 // indirect
github.com/launchdarkly/go-semver v1.0.3 // indirect
Expand All @@ -57,7 +57,7 @@ require (
github.com/redis/go-redis/v9 v9.0.2 // indirect
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.15.0 // indirect
golang.org/x/sys v0.28.0 // indirect
)

replace github.com/launchdarkly/go-server-sdk/v7 => ../
11 changes: 4 additions & 7 deletions testservice/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/launchdarkly/ccache v1.1.0 h1:voD1M+ZJXR3MREOKtBwgTF9hYHl1jg+vFKS/+VAkR2k=
github.com/launchdarkly/ccache v1.1.0/go.mod h1:TlxzrlnzvYeXiLHmesMuvoZetu4Z97cV1SsdqqBJi1Q=
github.com/launchdarkly/eventsource v1.6.2 h1:5SbcIqzUomn+/zmJDrkb4LYw7ryoKFzH/0TbR0/3Bdg=
github.com/launchdarkly/eventsource v1.6.2/go.mod h1:LHxSeb4OnqznNZxCSXbFghxS/CjIQfzHovNoAqbO/Wk=
github.com/launchdarkly/eventsource v1.8.0 h1:o9TL53lINP9PCrKESlpIZADvN+eHWlSVmAzZDZ+FEA0=
github.com/launchdarkly/eventsource v1.8.0/go.mod h1:IBckHy1VOjJGqSg07EJJLiUnk5DPunX9LKD9vbcgeHo=
github.com/launchdarkly/go-jsonstream/v3 v3.1.0 h1:U/7/LplZO72XefBQ+FzHf6o4FwLHVqBE+4V58Ornu/E=
github.com/launchdarkly/go-jsonstream/v3 v3.1.0/go.mod h1:2Pt4BR5AwWgsuVTCcIpB6Os04JFIKWfoA+7faKkZB5E=
github.com/launchdarkly/go-sdk-common/v3 v3.1.0 h1:KNCP5rfkOt/25oxGLAVgaU1BgrZnzH9Y/3Z6I8bMwDg=
Expand All @@ -120,7 +120,6 @@ github.com/launchdarkly/go-server-sdk-evaluation/v3 v3.0.1 h1:rTgcYAFraGFj7sBMB2
github.com/launchdarkly/go-server-sdk-evaluation/v3 v3.0.1/go.mod h1:fPS5d+zOsgFnMunj+Ki6jjlZtFvo4h9iNbtNXxzYn58=
github.com/launchdarkly/go-server-sdk-redis-go-redis v1.1.0 h1:vakIXWDxa/P0xhtLVQRIBBIaZv4gm1l9rhIUFtvLVaE=
github.com/launchdarkly/go-server-sdk-redis-go-redis v1.1.0/go.mod h1:ds9ixtQFLpkxXcBYCGNBBj0H2uhLVbba1VzM0rTCZWk=
github.com/launchdarkly/go-test-helpers/v2 v2.2.0/go.mod h1:L7+th5govYp5oKU9iN7To5PgznBuIjBPn+ejqKR0avw=
github.com/launchdarkly/go-test-helpers/v2 v2.3.2 h1:WX6qSzt7v8xz6d94nVcoil9ljuLTC/6OzQt0MhWYxsQ=
github.com/launchdarkly/go-test-helpers/v3 v3.0.2 h1:rh0085g1rVJM5qIukdaQ8z1XTWZztbJ49vRZuveqiuU=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
Expand Down Expand Up @@ -165,8 +164,6 @@ github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/wsxiaoys/terminal v0.0.0-20160513160801-0940f3fc43a0 h1:3UeQBvD0TFrlVjOeLOBz+CPAI8dnbqNSVwUwRrkp7vQ=
Expand Down Expand Up @@ -198,8 +195,8 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
Expand Down

0 comments on commit b187c17

Please sign in to comment.