diff --git a/core/breaker/breakers.go b/core/breaker/breakers.go index 26760142f..6e320521b 100644 --- a/core/breaker/breakers.go +++ b/core/breaker/breakers.go @@ -60,17 +60,15 @@ func do(name string, execute func(b Breaker) error) error { lock.RUnlock() if ok { return execute(b) - } else { - lock.Lock() - b, ok = breakers[name] - if ok { - lock.Unlock() - return execute(b) - } else { - b = NewBreaker(WithName(name)) - breakers[name] = b - lock.Unlock() - return execute(b) - } } + + lock.Lock() + b, ok = breakers[name] + if !ok { + b = NewBreaker(WithName(name)) + breakers[name] = b + } + lock.Unlock() + + return execute(b) } diff --git a/core/collection/cache_test.go b/core/collection/cache_test.go index b296e3782..24366aa62 100644 --- a/core/collection/cache_test.go +++ b/core/collection/cache_test.go @@ -72,9 +72,9 @@ func TestCacheWithLruEvicts(t *testing.T) { cache.Set("third", "third element") cache.Set("fourth", "fourth element") - value, ok := cache.Get("first") + _, ok := cache.Get("first") assert.False(t, ok) - value, ok = cache.Get("second") + value, ok := cache.Get("second") assert.True(t, ok) assert.Equal(t, "second element", value) value, ok = cache.Get("third") @@ -94,9 +94,9 @@ func TestCacheWithLruEvicted(t *testing.T) { cache.Set("third", "third element") cache.Set("fourth", "fourth element") - value, ok := cache.Get("first") + _, ok := cache.Get("first") assert.False(t, ok) - value, ok = cache.Get("second") + value, ok := cache.Get("second") assert.True(t, ok) assert.Equal(t, "second element", value) cache.Set("fifth", "fifth element") diff --git a/core/filex/file_test.go b/core/filex/file_test.go index a5e508cb2..cb0b7f839 100644 --- a/core/filex/file_test.go +++ b/core/filex/file_test.go @@ -15,34 +15,34 @@ const ( text = `first line Cum sociis natoque penatibus et magnis dis parturient. Phasellus laoreet lorem vel dolor tempus vehicula. Vivamus sagittis lacus vel augue laoreet rutrum faucibus. Integer legentibus erat a ante historiarum dapibus. Quisque ut dolor gravida, placerat libero vel, euismod. Quam temere in vitiis, legem sancimus haerentia. Qui ipsorum lingua Celtae, nostra Galli appellantur. Quis aute iure reprehenderit in voluptate velit esse. Fabio vel iudice vincam, sunt in culpa qui officia. Cras mattis iudicium purus sit amet fermentum. -Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculus sed magna. +Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculous sed magna. Magna pars studiorum, prodita quaerimus. Cum ceteris in veneratione tui montes, nascetur mus. Morbi odio eros, volutpat ut pharetra vitae, lobortis sed nibh. Plura mihi bona sunt, inclinet, amari petere vellent. Idque Caesaris facere voluntate liceret: sese habere. Tu quoque, Brute, fili mi, nihil timor populi, nihil! Tityre, tu patulae recubans sub tegmine fagi dolor. Inmensae subtilitatis, obscuris et malesuada fames. Quae vero auctorem tractata ab fiducia dicuntur. Cum sociis natoque penatibus et magnis dis parturient. Phasellus laoreet lorem vel dolor tempus vehicula. Vivamus sagittis lacus vel augue laoreet rutrum faucibus. Integer legentibus erat a ante historiarum dapibus. Quisque ut dolor gravida, placerat libero vel, euismod. Quam temere in vitiis, legem sancimus haerentia. Qui ipsorum lingua Celtae, nostra Galli appellantur. Quis aute iure reprehenderit in voluptate velit esse. Fabio vel iudice vincam, sunt in culpa qui officia. Cras mattis iudicium purus sit amet fermentum. -Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculus sed magna. +Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculous sed magna. Magna pars studiorum, prodita quaerimus. Cum ceteris in veneratione tui montes, nascetur mus. Morbi odio eros, volutpat ut pharetra vitae, lobortis sed nibh. Plura mihi bona sunt, inclinet, amari petere vellent. Idque Caesaris facere voluntate liceret: sese habere. Tu quoque, Brute, fili mi, nihil timor populi, nihil! Tityre, tu patulae recubans sub tegmine fagi dolor. Inmensae subtilitatis, obscuris et malesuada fames. Quae vero auctorem tractata ab fiducia dicuntur. Cum sociis natoque penatibus et magnis dis parturient. Phasellus laoreet lorem vel dolor tempus vehicula. Vivamus sagittis lacus vel augue laoreet rutrum faucibus. Integer legentibus erat a ante historiarum dapibus. Quisque ut dolor gravida, placerat libero vel, euismod. Quam temere in vitiis, legem sancimus haerentia. Qui ipsorum lingua Celtae, nostra Galli appellantur. Quis aute iure reprehenderit in voluptate velit esse. Fabio vel iudice vincam, sunt in culpa qui officia. Cras mattis iudicium purus sit amet fermentum. -Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculus sed magna. +Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculous sed magna. Magna pars studiorum, prodita quaerimus. Cum ceteris in veneratione tui montes, nascetur mus. Morbi odio eros, volutpat ut pharetra vitae, lobortis sed nibh. Plura mihi bona sunt, inclinet, amari petere vellent. Idque Caesaris facere voluntate liceret: sese habere. Tu quoque, Brute, fili mi, nihil timor populi, nihil! Tityre, tu patulae recubans sub tegmine fagi dolor. Inmensae subtilitatis, obscuris et malesuada fames. Quae vero auctorem tractata ab fiducia dicuntur. ` + longLine textWithLastNewline = `first line Cum sociis natoque penatibus et magnis dis parturient. Phasellus laoreet lorem vel dolor tempus vehicula. Vivamus sagittis lacus vel augue laoreet rutrum faucibus. Integer legentibus erat a ante historiarum dapibus. Quisque ut dolor gravida, placerat libero vel, euismod. Quam temere in vitiis, legem sancimus haerentia. Qui ipsorum lingua Celtae, nostra Galli appellantur. Quis aute iure reprehenderit in voluptate velit esse. Fabio vel iudice vincam, sunt in culpa qui officia. Cras mattis iudicium purus sit amet fermentum. -Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculus sed magna. +Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculous sed magna. Magna pars studiorum, prodita quaerimus. Cum ceteris in veneratione tui montes, nascetur mus. Morbi odio eros, volutpat ut pharetra vitae, lobortis sed nibh. Plura mihi bona sunt, inclinet, amari petere vellent. Idque Caesaris facere voluntate liceret: sese habere. Tu quoque, Brute, fili mi, nihil timor populi, nihil! Tityre, tu patulae recubans sub tegmine fagi dolor. Inmensae subtilitatis, obscuris et malesuada fames. Quae vero auctorem tractata ab fiducia dicuntur. Cum sociis natoque penatibus et magnis dis parturient. Phasellus laoreet lorem vel dolor tempus vehicula. Vivamus sagittis lacus vel augue laoreet rutrum faucibus. Integer legentibus erat a ante historiarum dapibus. Quisque ut dolor gravida, placerat libero vel, euismod. Quam temere in vitiis, legem sancimus haerentia. Qui ipsorum lingua Celtae, nostra Galli appellantur. Quis aute iure reprehenderit in voluptate velit esse. Fabio vel iudice vincam, sunt in culpa qui officia. Cras mattis iudicium purus sit amet fermentum. -Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculus sed magna. +Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculous sed magna. Magna pars studiorum, prodita quaerimus. Cum ceteris in veneratione tui montes, nascetur mus. Morbi odio eros, volutpat ut pharetra vitae, lobortis sed nibh. Plura mihi bona sunt, inclinet, amari petere vellent. Idque Caesaris facere voluntate liceret: sese habere. Tu quoque, Brute, fili mi, nihil timor populi, nihil! Tityre, tu patulae recubans sub tegmine fagi dolor. Inmensae subtilitatis, obscuris et malesuada fames. Quae vero auctorem tractata ab fiducia dicuntur. Cum sociis natoque penatibus et magnis dis parturient. Phasellus laoreet lorem vel dolor tempus vehicula. Vivamus sagittis lacus vel augue laoreet rutrum faucibus. Integer legentibus erat a ante historiarum dapibus. Quisque ut dolor gravida, placerat libero vel, euismod. Quam temere in vitiis, legem sancimus haerentia. Qui ipsorum lingua Celtae, nostra Galli appellantur. Quis aute iure reprehenderit in voluptate velit esse. Fabio vel iudice vincam, sunt in culpa qui officia. Cras mattis iudicium purus sit amet fermentum. -Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculus sed magna. +Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculous sed magna. Magna pars studiorum, prodita quaerimus. Cum ceteris in veneratione tui montes, nascetur mus. Morbi odio eros, volutpat ut pharetra vitae, lobortis sed nibh. Plura mihi bona sunt, inclinet, amari petere vellent. Idque Caesaris facere voluntate liceret: sese habere. Tu quoque, Brute, fili mi, nihil timor populi, nihil! Tityre, tu patulae recubans sub tegmine fagi dolor. Inmensae subtilitatis, obscuris et malesuada fames. Quae vero auctorem tractata ab fiducia dicuntur. ` + longLine + "\n" diff --git a/core/stores/kv/store_test.go b/core/stores/kv/store_test.go index da58ae3f8..a3b3b27db 100644 --- a/core/stores/kv/store_test.go +++ b/core/stores/kv/store_test.go @@ -212,10 +212,12 @@ func TestRedis_Persist(t *testing.T) { assert.Nil(t, err) assert.False(t, ok) err = client.Expire("key", 5) + assert.Nil(t, err) ok, err = client.Persist("key") assert.Nil(t, err) assert.True(t, ok) err = client.Expireat("key", time.Now().Unix()+5) + assert.Nil(t, err) ok, err = client.Persist("key") assert.Nil(t, err) assert.True(t, ok) diff --git a/core/stores/redis/redis_test.go b/core/stores/redis/redis_test.go index e1a3a5aab..f284c7174 100644 --- a/core/stores/redis/redis_test.go +++ b/core/stores/redis/redis_test.go @@ -249,10 +249,12 @@ func TestRedis_Persist(t *testing.T) { assert.Nil(t, err) assert.False(t, ok) err = client.Expire("key", 5) + assert.Nil(t, err) ok, err = client.Persist("key") assert.Nil(t, err) assert.True(t, ok) err = client.Expireat("key", time.Now().Unix()+5) + assert.Nil(t, err) ok, err = client.Persist("key") assert.Nil(t, err) assert.True(t, ok) @@ -447,7 +449,7 @@ func TestRedis_SortedSet(t *testing.T) { rank, err := client.Zrank("key", "value2") assert.Nil(t, err) assert.Equal(t, int64(1), rank) - rank, err = client.Zrank("key", "value4") + _, err = client.Zrank("key", "value4") assert.Equal(t, Nil, err) num, err := client.Zrem("key", "value2", "value3") assert.Nil(t, err) @@ -558,6 +560,7 @@ func TestRedis_Pipelined(t *testing.T) { assert.Nil(t, err) assert.Equal(t, "1", value) score, err := client.Zscore("zadd", "zadd") + assert.Nil(t, err) assert.Equal(t, int64(12), score) }) } diff --git a/core/stringx/replacer.go b/core/stringx/replacer.go index 181933e4a..e615753b2 100644 --- a/core/stringx/replacer.go +++ b/core/stringx/replacer.go @@ -63,11 +63,6 @@ func (r *replacer) Replace(text string) string { i = j - 1 builder.WriteString(r.mapping[string(chars[start:end])]) } else { - if j < size { - end = j + 1 - } else { - end = size - } builder.WriteRune(chars[i]) } start = -1 diff --git a/example/http/breaker/client/client.go b/example/http/breaker/client/client.go index 131f14f94..3b9c60bb1 100644 --- a/example/http/breaker/client/client.go +++ b/example/http/breaker/client/client.go @@ -15,7 +15,7 @@ import ( ) var ( - freq = flag.Int("freq", 100, "frequence") + freq = flag.Int("freq", 100, "frequency") duration = flag.String("duration", "10s", "duration") ) @@ -84,8 +84,8 @@ func (m *metric) reset() counting { return result } -func runRequests(url string, frequence int, metrics *metric, done <-chan lang.PlaceholderType) { - ticker := time.NewTicker(time.Second / time.Duration(frequence)) +func runRequests(url string, frequency int, metrics *metric, done <-chan lang.PlaceholderType) { + ticker := time.NewTicker(time.Second / time.Duration(frequency)) defer ticker.Stop() for { diff --git a/rest/handler/contentsecurityhandler_test.go b/rest/handler/contentsecurityhandler_test.go index 4bd0ea737..62903bd38 100644 --- a/rest/handler/contentsecurityhandler_test.go +++ b/rest/handler/contentsecurityhandler_test.go @@ -217,6 +217,7 @@ func TestContentSecurityHandler(t *testing.T) { signature: test.signature, } req, err := buildRequest(setting) + assert.Nil(t, err) resp := httptest.NewRecorder() handler.ServeHTTP(resp, req) assert.Equal(t, test.statusCode, resp.Code) @@ -249,6 +250,7 @@ func TestContentSecurityHandler_UnsignedCallback(t *testing.T) { signature: "badone", } req, err := buildRequest(setting) + assert.Nil(t, err) resp := httptest.NewRecorder() handler.ServeHTTP(resp, req) assert.Equal(t, http.StatusOK, resp.Code) @@ -285,6 +287,7 @@ func TestContentSecurityHandler_UnsignedCallback_WrongTime(t *testing.T) { fingerprint: fingerprint, } req, err := buildRequest(setting) + assert.Nil(t, err) resp := httptest.NewRecorder() handler.ServeHTTP(resp, req) assert.Equal(t, http.StatusOK, resp.Code) diff --git a/tools/goctl/api/gogen/gen.go b/tools/goctl/api/gogen/gen.go index 80209f286..c20b49307 100644 --- a/tools/goctl/api/gogen/gen.go +++ b/tools/goctl/api/gogen/gen.go @@ -148,7 +148,6 @@ func createGoModFileIfNeed(dir string) { } tempPath = filepath.Dir(tempPath) if util.FileExists(filepath.Join(tempPath, goModeIdentifier)) { - tempPath = filepath.Dir(tempPath) hasGoMod = true break } diff --git a/tools/goctl/api/gogen/genhandlers.go b/tools/goctl/api/gogen/genhandlers.go index 1015a502b..e4879759d 100644 --- a/tools/goctl/api/gogen/genhandlers.go +++ b/tools/goctl/api/gogen/genhandlers.go @@ -72,7 +72,7 @@ func genHandler(dir string, group spec.Group, route spec.Route) error { req = "" } var logicResponse string - var writeResponse = "nil, nil" + var writeResponse string var respWriter = `httpx.WriteJson(w, http.StatusOK, resp)` if len(route.ResponseType.Name) > 0 { logicResponse = "resp, err :=" diff --git a/tools/goctl/api/ktgen/funcs.go b/tools/goctl/api/ktgen/funcs.go index d24642c18..17dee1364 100644 --- a/tools/goctl/api/ktgen/funcs.go +++ b/tools/goctl/api/ktgen/funcs.go @@ -34,7 +34,7 @@ func routeToFuncName(method, path string) string { path = strings.ReplaceAll(path, "-", "_") path = strings.ReplaceAll(path, ":", "With_") - return strings.ToLower(method)+strcase.ToCamel(path) + return strings.ToLower(method) + strcase.ToCamel(path) } func parseType(t string) string { diff --git a/tools/goctl/api/tsgen/util.go b/tools/goctl/api/tsgen/util.go index 5174d4bc7..94b4cd0ef 100644 --- a/tools/goctl/api/tsgen/util.go +++ b/tools/goctl/api/tsgen/util.go @@ -13,6 +13,10 @@ import ( func writeProperty(writer io.Writer, member spec.Member, indent int, prefixForType func(string) string) error { writeIndent(writer, indent) ty, err := goTypeToTs(member.Type, prefixForType) + if err != nil { + return err + } + optionalTag := "" if member.IsOptional() || member.IsOmitempty() { optionalTag = "?" @@ -21,13 +25,14 @@ func writeProperty(writer io.Writer, member spec.Member, indent int, prefixForTy if err != nil { return err } + comment := member.GetComment() if len(comment) > 0 { comment = strings.TrimPrefix(comment, "//") comment = " // " + strings.TrimSpace(comment) } if len(member.Docs) > 0 { - _, err = fmt.Fprintf(writer, "%s\n", strings.Join(member.Docs, "")) + fmt.Fprintf(writer, "%s\n", strings.Join(member.Docs, "")) writeIndent(writer, 1) } _, err = fmt.Fprintf(writer, "%s%s: %s%s\n", name, optionalTag, ty, comment) diff --git a/tools/goctl/api/util/util.go b/tools/goctl/api/util/util.go index afc77a55d..1223d5210 100644 --- a/tools/goctl/api/util/util.go +++ b/tools/goctl/api/util/util.go @@ -28,6 +28,9 @@ func MaybeCreateFile(dir, subdir, file string) (fp *os.File, created bool, err e func ClearAndOpenFile(fpath string) (*os.File, error) { f, err := os.OpenFile(fpath, os.O_WRONLY|os.O_TRUNC, 0600) + if err != nil { + return nil, err + } _, err = f.WriteString("") if err != nil { diff --git a/tools/goctl/goctl.go b/tools/goctl/goctl.go index 49cb90b55..3e3fba752 100644 --- a/tools/goctl/goctl.go +++ b/tools/goctl/goctl.go @@ -4,7 +4,6 @@ import ( "fmt" "os" - "github.com/tal-tech/go-zero/tools/goctl/api/ktgen" "github.com/tal-tech/go-zero/core/logx" "github.com/tal-tech/go-zero/tools/goctl/api/apigen" "github.com/tal-tech/go-zero/tools/goctl/api/dartgen" @@ -12,6 +11,7 @@ import ( "github.com/tal-tech/go-zero/tools/goctl/api/format" "github.com/tal-tech/go-zero/tools/goctl/api/gogen" "github.com/tal-tech/go-zero/tools/goctl/api/javagen" + "github.com/tal-tech/go-zero/tools/goctl/api/ktgen" "github.com/tal-tech/go-zero/tools/goctl/api/tsgen" "github.com/tal-tech/go-zero/tools/goctl/api/validate" "github.com/tal-tech/go-zero/tools/goctl/configgen"