From 173d3469f3d8be8c911e4f3029534992a524ddc5 Mon Sep 17 00:00:00 2001 From: Joshua Rubin Date: Tue, 21 Aug 2018 18:15:22 -0600 Subject: [PATCH] fix race Signed-off-by: Joshua Rubin --- Gopkg.lock | 139 +++++++++++++++++++++++++++++++--------- Gopkg.toml | 10 ++- go.mod | 6 +- go.sum | 8 ++- internal/zvelo/zvelo.go | 20 ++++++ 5 files changed, 144 insertions(+), 39 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 4ddd4b1..561c723 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -2,29 +2,36 @@ [[projects]] + digest = "1:5c3894b2aa4d6bead0ceeea6831b305d62879c871780e7b76296ded1b004bc57" name = "cloud.google.com/go" packages = ["compute/metadata"] - revision = "aad3f485ee528456e0768f20397b4d9dd941e755" - version = "v0.25.0" + pruneopts = "NUT" + revision = "64a2037ec6be8a4b0c1d1f706ed35b428b989239" + version = "v0.26.0" [[projects]] + digest = "1:ade392a843b2035effb4b4a2efa2c3bab3eb29b992e98bacf9c898b0ecb54e45" name = "github.com/fatih/color" packages = ["."] + pruneopts = "NUT" revision = "5b77d2a35fb0ede96d138fc9a99f5c9b6aef11b4" version = "v1.7.0" [[projects]] + digest = "1:e1827a8b8c38ef43aff6b8fc65a15aca650fbb3248a2be05ae369fc1199e6b86" name = "github.com/gogo/protobuf" packages = [ "jsonpb", "proto", "sortkeys", - "types" + "types", ] + pruneopts = "NUT" revision = "636bf0302bc95575d69441b25a2603156ffdddf1" version = "v1.1.1" [[projects]] + digest = "1:f7c90cef96e0622c16b4b5f3d54b2ec51dbd0f7aa60328c981d76f5a2e624ce8" name = "github.com/golang/protobuf" packages = [ "jsonpb", @@ -35,24 +42,28 @@ "ptypes/duration", "ptypes/empty", "ptypes/struct", - "ptypes/timestamp" + "ptypes/timestamp", ] - revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265" - version = "v1.1.0" + pruneopts = "NUT" + revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" + version = "v1.2.0" [[projects]] + digest = "1:2e3c336fc7fde5c984d2841455a658a6d626450b1754a854b3b32e7a8f49a07a" name = "github.com/google/go-cmp" packages = [ "cmp", "cmp/internal/diff", "cmp/internal/function", - "cmp/internal/value" + "cmp/internal/value", ] + pruneopts = "NUT" revision = "3af367b6b30c263d47e8895973edcca9a49cf029" version = "v0.2.0" [[projects]] branch = "master" + digest = "1:ecda5a73ecd72e3e7b3d117cff4c556339b3c2cd27290dc03693cf354dd02f87" name = "github.com/graph-gophers/graphql-go" packages = [ ".", @@ -67,77 +78,98 @@ "internal/validation", "introspection", "log", - "trace" + "trace", ] - revision = "bb9738501bd42a6536227b96068349b814379d6e" + pruneopts = "NUT" + revision = "94da0f0031f9d30a1d56cd4b56e40852516c3301" [[projects]] + digest = "1:5c3363169fc963321cd0789dda2ddff90562817d277e78011b0e1bbf51a6b473" name = "github.com/grpc-ecosystem/grpc-gateway" packages = [ "runtime", "runtime/internal", - "utilities" + "utilities", ] + pruneopts = "NUT" revision = "92583770e3f01b09a0d3e9bdf64321d8bebd48f2" version = "v1.4.1" [[projects]] branch = "master" + digest = "1:7b760aa6dbe426378f54934270dde1b176fda379111da2154748f030fffe4d3f" name = "github.com/grpc-ecosystem/grpc-opentracing" packages = ["go/otgrpc"] + pruneopts = "NUT" revision = "8e809c8a86450a29b90dcc9efbf062d0fe6d9746" [[projects]] + digest = "1:08c231ec84231a7e23d67e4b58f975e1423695a32467a362ee55a803f9de8061" name = "github.com/mattn/go-colorable" packages = ["."] + pruneopts = "NUT" revision = "167de6bfdfba052fa6b2d3664c8f5272e23c9072" version = "v0.0.9" [[projects]] + digest = "1:bc4f7eec3b7be8c6cb1f0af6c1e3333d5bb71072951aaaae2f05067b0803f287" name = "github.com/mattn/go-isatty" packages = ["."] + pruneopts = "NUT" revision = "0360b2af4f38e8d38c7fce2a9f4e702702d73a39" version = "v0.0.3" [[projects]] + digest = "1:7da29c22bcc5c2ffb308324377dc00b5084650348c2799e573ed226d8cc9faf0" name = "github.com/opentracing/opentracing-go" packages = [ ".", "ext", - "log" + "log", ] + pruneopts = "NUT" revision = "1949ddbfd147afd4d964a9f00b24eb291e0e7c38" version = "v1.0.2" [[projects]] branch = "master" + digest = "1:fb519f672ebe265e5316551188145afd54dfb928452b125afe6dfaa26f800397" name = "github.com/pkg/browser" packages = ["."] + pruneopts = "NUT" revision = "c90ca0c84f15f81c982e32665bffd8d7aac8f097" [[projects]] + digest = "1:5cf3f025cbee5951a4ee961de067c8a89fc95a5adabead774f82822efabab121" name = "github.com/pkg/errors" packages = ["."] + pruneopts = "NUT" revision = "645ef00459ed84a119197bfb8d8205042c6df63d" version = "v0.8.0" [[projects]] + digest = "1:e131953e0822abeff314f8f7cc869e26dc799d4718aa967c7db120aeb28f58f9" name = "github.com/segmentio/ksuid" packages = ["."] + pruneopts = "NUT" revision = "112f929a3020abfcd06b77c963ec919130796a35" version = "1.0.1" [[projects]] branch = "master" + digest = "1:b8fa1ff0fc20983395978b3f771bb10438accbfe19326b02e236c1d4bf1c91b2" name = "golang.org/x/crypto" packages = [ "ed25519", - "ed25519/internal/edwards25519" + "ed25519/internal/edwards25519", + "pbkdf2", ] - revision = "a2144134853fc9a27a7b1e3eb4f19f1a76df13c9" + pruneopts = "NUT" + revision = "614d502a4dac94afa3a6ce146bd1736da82514c6" [[projects]] branch = "master" + digest = "1:274c2fa94d93c89fb107c18f715732390bcc4cf337d8d82cdeee5d92d162ff14" name = "golang.org/x/net" packages = [ "context", @@ -147,12 +179,14 @@ "http2/hpack", "idna", "internal/timeseries", - "trace" + "trace", ] - revision = "81d44fd177a98d09fe3bc40a5a78d495d3f042ea" + pruneopts = "NUT" + revision = "922f4815f713f213882e8ef45e0d315b164d705c" [[projects]] branch = "master" + digest = "1:b20a60bb1085d4c535af064faf3e74b4e185781b58bba1ad7406cd9733d82403" name = "golang.org/x/oauth2" packages = [ ".", @@ -160,17 +194,21 @@ "google", "internal", "jws", - "jwt" + "jwt", ] - revision = "ef147856a6ddbb60760db74283d2424e98c87bff" + pruneopts = "NUT" + revision = "d2e6202438beef2727060aa7cabdd924d92ebfd9" [[projects]] branch = "master" + digest = "1:79209e00ef385d406c6f7404fcb5ddadce9f1d68669f8526ea890d590d56c8bb" name = "golang.org/x/sys" packages = ["unix"] - revision = "ac767d655b305d4e9612f5f6e33120b9176c4ad4" + pruneopts = "NUT" + revision = "3b58ed4ad3395d483fc92d5d14123ce2c3581fec" [[projects]] + digest = "1:e7071ed636b5422cc51c0e3a6cebc229d6c9fffc528814b519a980641422d619" name = "golang.org/x/text" packages = [ "collate", @@ -186,12 +224,14 @@ "unicode/bidi", "unicode/cldr", "unicode/norm", - "unicode/rangetable" + "unicode/rangetable", ] + pruneopts = "NUT" revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0" version = "v0.3.0" [[projects]] + digest = "1:b5aeceb800276be69165a745328380c8a4b6f2edc7a6bac112e22c8596ed8a49" name = "google.golang.org/appengine" packages = [ ".", @@ -203,21 +243,25 @@ "internal/modules", "internal/remote_api", "internal/urlfetch", - "urlfetch" + "urlfetch", ] + pruneopts = "NUT" revision = "b1f26356af11148e710935ed1ac8a7f5702c7612" version = "v1.1.0" [[projects]] branch = "master" + digest = "1:6c6b70cf6d2788d9f7dc6589bc88e0e1c7edc40612294431ebb7d09536d12240" name = "google.golang.org/genproto" packages = [ "googleapis/api/annotations", - "googleapis/rpc/status" + "googleapis/rpc/status", ] - revision = "fedd2861243fd1a8152376292b921b394c7bef7e" + pruneopts = "NUT" + revision = "c66870c02cf823ceb633bcd05be3c7cda29976f4" [[projects]] + digest = "1:a6b0b7f7e3b3d0d3bd090b120948c4519b6407828078935868d3207b12958a00" name = "google.golang.org/grpc" packages = [ ".", @@ -234,7 +278,9 @@ "internal", "internal/backoff", "internal/channelz", + "internal/envconfig", "internal/grpcrand", + "internal/transport", "keepalive", "metadata", "naming", @@ -245,44 +291,75 @@ "stats", "status", "tap", - "transport" ] - revision = "168a6198bcb0ef175f7dacec0b8691fc141dc9b8" - version = "v1.13.0" + pruneopts = "NUT" + revision = "32fb0ac620c32ba40a4626ddf94d90d12cce3455" + version = "v1.14.0" [[projects]] + digest = "1:3b7124c543146736e07107be13ea6288923c4a743e07c7a31d6b7209a00a9dab" name = "gopkg.in/square/go-jose.v2" packages = [ ".", "cipher", - "json" + "json", ] - revision = "76dd09796242edb5b897103a75df2645c028c960" - version = "v2.1.6" + pruneopts = "NUT" + revision = "8254d6c783765f38c8675fae4427a1fe73fbd09d" + version = "v2.1.8" [[projects]] + digest = "1:f3007df34dab5a4367e6a669f1ade9834764324133113e30b5c7a70e6f01b18d" name = "zvelo.io/httpsig" packages = [ ".", - "digest" + "digest", ] + pruneopts = "NUT" revision = "7495edfda6fbaafa6855956f44eafcb487fdc64a" version = "v1.1.5" [[projects]] + digest = "1:65cb6ce0942f88ed1dffdcfd5dd51098a6c0747f4c49a56df6ae1bb393ea078d" name = "zvelo.io/msg" packages = [ "internal/static", "mock", "msgpb", - "status" + "status", ] + pruneopts = "NUT" revision = "2fe4471834e7f0e79c006ece41a0442c77aea79f" version = "v1.14.1" [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "30a2663ae46876cbf03f40fc8186673ac74d7303d905f0113d3de1cbf4707b6e" + input-imports = [ + "github.com/fatih/color", + "github.com/gogo/protobuf/jsonpb", + "github.com/gogo/protobuf/proto", + "github.com/golang/protobuf/ptypes/empty", + "github.com/google/go-cmp/cmp", + "github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc", + "github.com/opentracing/opentracing-go", + "github.com/opentracing/opentracing-go/ext", + "github.com/opentracing/opentracing-go/log", + "github.com/pkg/browser", + "github.com/pkg/errors", + "golang.org/x/net/http2", + "golang.org/x/oauth2", + "golang.org/x/oauth2/clientcredentials", + "google.golang.org/grpc", + "google.golang.org/grpc/codes", + "google.golang.org/grpc/credentials", + "google.golang.org/grpc/credentials/oauth", + "google.golang.org/grpc/metadata", + "google.golang.org/grpc/status", + "gopkg.in/square/go-jose.v2", + "zvelo.io/httpsig", + "zvelo.io/msg/mock", + "zvelo.io/msg/msgpb", + ] solver-name = "gps-cdcl" solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml index b3b9cf1..e5f75ce 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -13,7 +13,7 @@ [[constraint]] name = "github.com/golang/protobuf" - version = "1.1.0" + version = "1.2.0" [[constraint]] name = "github.com/google/go-cmp" @@ -35,17 +35,21 @@ name = "github.com/pkg/errors" version = "0.8.0" +[[constraint]] + name = "golang.org/x/net" + branch = "master" + [[constraint]] name = "golang.org/x/oauth2" branch = "master" [[constraint]] name = "google.golang.org/grpc" - version = "1.13.0" + version = "1.14.0" [[constraint]] name = "gopkg.in/square/go-jose.v2" - version = "2.1.6" + version = "2.1.8" [[constraint]] name = "zvelo.io/httpsig" diff --git a/go.mod b/go.mod index 6ec6ca6..dae4714 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ require ( cloud.google.com/go v0.25.0 // indirect github.com/fatih/color v1.7.0 github.com/gogo/protobuf v1.1.1 - github.com/golang/protobuf v1.1.0 + github.com/golang/protobuf v1.2.0 github.com/google/go-cmp v0.2.0 github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 github.com/mattn/go-colorable v0.0.9 // indirect @@ -18,8 +18,8 @@ require ( golang.org/x/sys v0.0.0-20180715085529-ac767d655b30 // indirect google.golang.org/appengine v1.1.0 // indirect google.golang.org/genproto v0.0.0-20180718234121-fedd2861243f // indirect - google.golang.org/grpc v1.13.0 - gopkg.in/square/go-jose.v2 v2.1.6 + google.golang.org/grpc v1.14.0 + gopkg.in/square/go-jose.v2 v2.1.8 zvelo.io/httpsig v1.1.5 zvelo.io/msg v1.14.1 ) diff --git a/go.sum b/go.sum index 5ffbc25..f571ee6 100644 --- a/go.sum +++ b/go.sum @@ -21,6 +21,8 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekf github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/protobuf v1.1.0 h1:0iH4Ffd/meGoXqF2lSAhZHt8X+cPgkfn/cb6Cce5Vpc= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/graph-gophers/graphql-go v0.0.0-20180609140535-bb9738501bd4 h1:9zqRp6Jht1Ii/U07Jg9TcaEjICuO81JAOLL3MbSi018= @@ -72,11 +74,13 @@ google.golang.org/genproto v0.0.0-20180718234121-fedd2861243f h1:f+hrkCD3gqmC3Ht google.golang.org/genproto v0.0.0-20180718234121-fedd2861243f/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/grpc v1.13.0 h1:bHIbVsCwmvbArgCJmLdgOdHFXlKqTOVjbibbS19cXHc= google.golang.org/grpc v1.13.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.14.0 h1:ArxJuB1NWfPY6r9Gp9gqwplT0Ge7nqv9msgu03lHLmo= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/square/go-jose.v2 v2.1.6 h1:oB3Nsrhs3CNwP1t2WZ/eGtjH8BQhmcGx3zD8Lla+NjA= -gopkg.in/square/go-jose.v2 v2.1.6/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.1.8 h1:yECBkTX7ypNaRFILw4trAAYXRLvcGxTeHCBKj/fc8gU= +gopkg.in/square/go-jose.v2 v2.1.8/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= zvelo.io/httpsig v1.1.5 h1:fAD8+eob44d40VFyEHwJysL8U6W8PRLGHGwaUcy+VtY= zvelo.io/httpsig v1.1.5/go.mod h1:JpjNXVKQNAuqfrCZHKmj1fGAYFwiMgXLCmzmv6kOYyQ= diff --git a/internal/zvelo/zvelo.go b/internal/zvelo/zvelo.go index b62b4bd..f831d44 100644 --- a/internal/zvelo/zvelo.go +++ b/internal/zvelo/zvelo.go @@ -11,6 +11,7 @@ import ( "net/http/httputil" "strconv" "strings" + "sync" "time" "github.com/fatih/color" @@ -25,35 +26,54 @@ func DebugRequest(w io.Writer, req *http.Request) { // DebugRequestTiming logs http request timing to w func DebugRequestTiming(w io.Writer, req *http.Request) *http.Request { var start, dnsStart, connectStart, tlsStart, reqStart time.Time + var mu sync.Mutex trace := &httptrace.ClientTrace{ GetConn: func(hostPort string) { + mu.Lock() start = time.Now() + mu.Unlock() }, DNSStart: func(info httptrace.DNSStartInfo) { + mu.Lock() dnsStart = time.Now() + mu.Unlock() }, DNSDone: func(dnsInfo httptrace.DNSDoneInfo) { + mu.Lock() DebugTiming(w, "DNS Lookup", time.Since(dnsStart)) + mu.Unlock() }, ConnectStart: func(network, addr string) { + mu.Lock() connectStart = time.Now() + mu.Unlock() }, ConnectDone: func(network, addr string, err error) { + mu.Lock() DebugTiming(w, "TCP Connection", time.Since(connectStart)) + mu.Unlock() }, TLSHandshakeStart: func() { + mu.Lock() tlsStart = time.Now() + mu.Unlock() }, TLSHandshakeDone: func(tls.ConnectionState, error) { + mu.Lock() DebugTiming(w, "TLS Handshake", time.Since(tlsStart)) + mu.Unlock() }, WroteRequest: func(info httptrace.WroteRequestInfo) { + mu.Lock() reqStart = time.Now() + mu.Unlock() }, GotFirstResponseByte: func() { + mu.Lock() DebugTiming(w, "Server Processing", time.Since(reqStart)) DebugTiming(w, "Total", time.Since(start)) + mu.Unlock() }, }