Skip to content

Commit c612002

Browse files
authored
don't cache if the schema registry is unavailable (#143)
1 parent 2184516 commit c612002

File tree

6 files changed

+36
-28
lines changed

6 files changed

+36
-28
lines changed

Diff for: .github/workflows/avro.yaml

+5-5
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ jobs:
3535
- 8081:8081
3636
steps:
3737
- name: Checkout
38-
uses: actions/checkout@v3
38+
uses: actions/checkout@v4
3939
- name: Set up env
40-
uses: actions/setup-go@v3
40+
uses: actions/setup-go@v5
4141
with:
4242
cache: true
4343
check-latest: true
@@ -54,12 +54,12 @@ jobs:
5454
- name: "Lint: static"
5555
id: lint-static
5656
continue-on-error: false
57-
uses: golangci/golangci-lint-action@v3
57+
uses: golangci/golangci-lint-action@v6
5858
with:
59-
version: v1.52.2
59+
version: v1.64.8
6060
working-directory: ${{ env.directory }}
6161
args: --timeout=5m
62-
skip-cache: true
62+
only-new-issues: true
6363
- name: "Lint: security"
6464
id: lint-security
6565
continue-on-error: true

Diff for: cmd/go2avro/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ be generated for exported Go types.
3434
For example:
3535
3636
go2avro foo.com/bar/somepkg.Foo
37-
`[1:])
37+
`)
3838
}
3939
if flag.Parse(os.Args[1:]) != nil {
4040
return 2

Diff for: cmd/go2avro/testdata/unknowntype.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
! go2avro Foo
2-
stderr 'undefined: bar.Foo'
2+
stderr 'undefined: pkg.Foo'
33

44
-- bar.go --
55
package bar

Diff for: go.mod

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
11
module github.com/heetch/avro
22

3-
go 1.19
3+
go 1.23.0
44

55
require (
66
github.com/actgardner/gogen-avro/v10 v10.2.1
77
github.com/frankban/quicktest v1.14.0
8-
github.com/google/uuid v1.3.0
8+
github.com/google/uuid v1.6.0
99
github.com/kr/pretty v0.3.0
1010
github.com/linkedin/goavro/v2 v2.11.1
11-
github.com/rogpeppe/go-internal v1.9.0
11+
github.com/rogpeppe/go-internal v1.14.1
1212
github.com/sebdah/goldie/v2 v2.5.5
1313
github.com/stretchr/testify v1.7.1
14-
golang.org/x/text v0.3.0
14+
golang.org/x/text v0.23.0
1515
gopkg.in/httprequest.v1 v1.2.1
1616
gopkg.in/retry.v1 v1.0.3
1717
)
1818

1919
require (
2020
github.com/davecgh/go-spew v1.1.1 // indirect
2121
github.com/golang/snappy v0.0.4 // indirect
22-
github.com/google/go-cmp v0.5.6 // indirect
22+
github.com/google/go-cmp v0.6.0 // indirect
2323
github.com/julienschmidt/httprouter v1.3.0 // indirect
2424
github.com/kr/text v0.2.0 // indirect
25-
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e // indirect
2625
github.com/pmezard/go-difflib v1.0.0 // indirect
2726
github.com/sergi/go-diff v1.0.0 // indirect
28-
golang.org/x/net v0.0.0-20200505041828-1ed23360d12c // indirect
29-
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 // indirect
27+
golang.org/x/net v0.33.0 // indirect
28+
golang.org/x/sys v0.28.0 // indirect
29+
golang.org/x/tools v0.26.0 // indirect
3030
gopkg.in/errgo.v1 v1.0.0 // indirect
3131
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
3232
)

Diff for: go.sum

+14-10
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW
1515
github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
1616
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
1717
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
18-
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
1918
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
20-
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
21-
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
19+
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
20+
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
21+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
22+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
2223
github.com/juju/qthttptest v0.1.1 h1:JPju5P5CDMCy8jmBJV2wGLjDItUsx2KKL514EfOYueM=
2324
github.com/juju/qthttptest v0.1.1/go.mod h1:aTlAv8TYaflIiTDIQYzxnl1QdPjAg8Q8qJMErpKy6A4=
2425
github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=
@@ -33,16 +34,14 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
3334
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
3435
github.com/linkedin/goavro/v2 v2.11.1 h1:4cuAtbDfqkKnBXp9E+tRkIJGa6W6iAjwonwt8O1f4U0=
3536
github.com/linkedin/goavro/v2 v2.11.1/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA=
36-
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A=
37-
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
3837
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
3938
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
4039
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
4140
github.com/rogpeppe/clock v0.0.0-20190514195947-2896927a307a h1:3QH7VyOaaiUHNrA9Se4YQIRkDTCw1EJls9xTUCaCeRM=
4241
github.com/rogpeppe/clock v0.0.0-20190514195947-2896927a307a/go.mod h1:4r5QyqhjIWCcK8DO4KMclc5Iknq5qVBAlbYYzAbUScQ=
4342
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
44-
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
45-
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
43+
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
44+
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
4645
github.com/sebdah/goldie/v2 v2.5.5 h1:rx1mwF95RxZ3/83sdS4Yp7t2C5TCokvWP4TBRbAyEWY=
4746
github.com/sebdah/goldie/v2 v2.5.5/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=
4847
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
@@ -58,20 +57,25 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
5857
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
5958
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
6059
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
61-
golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M=
6260
golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
61+
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
62+
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
6363
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
6464
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
6565
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
6666
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
6767
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
68-
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
68+
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
69+
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
6970
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
71+
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
72+
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
7073
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
7174
golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
75+
golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
76+
golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
7277
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
7378
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
74-
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
7579
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
7680
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
7781
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=

Diff for: singledecoder.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"reflect"
7+
"strings"
78
"sync"
89
)
910

@@ -117,9 +118,12 @@ func (c *SingleDecoder) getProgram(ctx context.Context, vt reflect.Type, wID int
117118
} else {
118119
// We haven't seen the writer schema before, so try to fetch it.
119120
wType, err = c.registry.SchemaForID(ctx, wID)
120-
// TODO look at the SchemaForID error
121-
// and return an error without caching it if it's temporary?
122-
// See https://github.com/heetch/avro/issues/39
121+
// do not cache the error when schema registry is unavailable
122+
// we can't import avroregistry, to compare the error, so we're looking at the error message to see if the
123+
// error is of type `UnavailableError` (avroregistry/errors.go)
124+
if err != nil && strings.HasPrefix(err.Error(), "schema registry unavailability caused by") {
125+
return nil, err
126+
}
123127
}
124128
c.mu.Lock()
125129
defer c.mu.Unlock()

0 commit comments

Comments
 (0)