From 06f482e4ef09d0dc1b53ebb1723cfafbdaf5c0e1 Mon Sep 17 00:00:00 2001 From: EL MASRI Chadi <celmasri@murex.com> Date: Fri, 13 Dec 2019 18:26:50 +0100 Subject: [PATCH 1/9] Admin/Query: Log the real port instead of the provided one to enable the use of port 0. Signed-off-by: Chadi El Masri <celmasri@murex.com> --- cmd/flags/admin.go | 9 ++++++++- cmd/query/app/server.go | 16 +++++++++++++--- cmd/query/app/server_test.go | 20 ++++++++++++++++++++ pkg/netutils/port.go | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 pkg/netutils/port.go diff --git a/cmd/flags/admin.go b/cmd/flags/admin.go index 5f088b1d299..cda3f0447c4 100644 --- a/cmd/flags/admin.go +++ b/cmd/flags/admin.go @@ -26,6 +26,7 @@ import ( "go.uber.org/zap" "github.com/jaegertracing/jaeger/pkg/healthcheck" + "github.com/jaegertracing/jaeger/pkg/netutils" "github.com/jaegertracing/jaeger/pkg/recoveryhandler" "github.com/jaegertracing/jaeger/pkg/version" ) @@ -97,9 +98,15 @@ func (s *AdminServer) Serve() error { return err } s.serveWithListener(l) + + tcpPort := s.adminPort + if port, err := netutils.GetPort(l.Addr()); err == nil { + tcpPort = port + } + s.logger.Info( "Admin server started", - zap.Int("http-port", s.adminPort), + zap.Int("http-port", tcpPort), zap.Stringer("health-status", s.hc.Get())) return nil } diff --git a/cmd/query/app/server.go b/cmd/query/app/server.go index c53abd7d11d..4eda7d95597 100644 --- a/cmd/query/app/server.go +++ b/cmd/query/app/server.go @@ -29,6 +29,7 @@ import ( "github.com/jaegertracing/jaeger/cmd/flags" "github.com/jaegertracing/jaeger/cmd/query/app/querysvc" "github.com/jaegertracing/jaeger/pkg/healthcheck" + "github.com/jaegertracing/jaeger/pkg/netutils" "github.com/jaegertracing/jaeger/pkg/recoveryhandler" "github.com/jaegertracing/jaeger/proto-gen/api_v2" ) @@ -99,6 +100,15 @@ func (s *Server) Start() error { } s.conn = conn + tcpPort := s.queryOptions.Port + if port, err := netutils.GetPort(s.conn.Addr()); err == nil { + tcpPort = port + } + + s.svc.Logger.Info( + "Query server started", + zap.Int("port", tcpPort)) + // cmux server acts as a reverse-proxy between HTTP and GRPC backends. cmuxServer := cmux.New(s.conn) @@ -109,7 +119,7 @@ func (s *Server) Start() error { httpListener := cmuxServer.Match(cmux.Any()) go func() { - s.svc.Logger.Info("Starting HTTP server", zap.Int("port", s.queryOptions.Port)) + s.svc.Logger.Info("Starting HTTP server", zap.Int("port", tcpPort)) switch err := s.httpServer.Serve(httpListener); err { case nil, http.ErrServerClosed, cmux.ErrListenerClosed: @@ -122,7 +132,7 @@ func (s *Server) Start() error { // Start GRPC server concurrently go func() { - s.svc.Logger.Info("Starting GRPC server", zap.Int("port", s.queryOptions.Port)) + s.svc.Logger.Info("Starting GRPC server", zap.Int("port", tcpPort)) if err := s.grpcServer.Serve(grpcListener); err != nil { s.svc.Logger.Error("Could not start GRPC server", zap.Error(err)) @@ -132,7 +142,7 @@ func (s *Server) Start() error { // Start cmux server concurrently. go func() { - s.svc.Logger.Info("Starting CMUX server", zap.Int("port", s.queryOptions.Port)) + s.svc.Logger.Info("Starting CMUX server", zap.Int("port", tcpPort)) err := cmuxServer.Serve() // TODO: Remove string comparison when https://github.com/soheilhy/cmux/pull/69 is merged diff --git a/cmd/query/app/server_test.go b/cmd/query/app/server_test.go index c32aeb43160..c5053edbcc9 100644 --- a/cmd/query/app/server_test.go +++ b/cmd/query/app/server_test.go @@ -103,3 +103,23 @@ func TestServerGracefulExit(t *testing.T) { "Error log found on server exit: %v", logEntry) } } + +func TestServerHandlesPortZero(t *testing.T) { + flagsSvc := flags.NewService(ports.QueryAdminHTTP) + zapCore, logs := observer.New(zap.InfoLevel) + flagsSvc.Logger = zap.New(zapCore) + + querySvc := &querysvc.QueryService{} + tracer := opentracing.NoopTracer{} + server := NewServer(flagsSvc, querySvc, &QueryOptions{Port: 0}, tracer) + assert.NoError(t, server.Start()) + server.Close() + + message := logs.FilterMessage("Query server started") + assert.Equal(t, 1, message.Len(), "Expected query started log message.") + + onlyEntry := message.All()[0] + port := onlyEntry.ContextMap()["port"].(int) + assert.True(t, port > 0, + "Expected a non-zero port in the logs, got instead: %d", port) +} diff --git a/pkg/netutils/port.go b/pkg/netutils/port.go new file mode 100644 index 00000000000..77637a7e6fe --- /dev/null +++ b/pkg/netutils/port.go @@ -0,0 +1,34 @@ +// Copyright (c) 2019 The Jaeger Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package netutils + +import ( + "net" + "strconv" +) + +func GetPort(addr net.Addr) (int, error) { + _, port, err := net.SplitHostPort(addr.String()) + if err != nil { + return -1, err + } + + parsedPort, err := strconv.Atoi(port) + if err != nil { + return -1, err + } + + return parsedPort, nil +} From 6b99d1ae0696d886eecac9646eef3532a393385e Mon Sep 17 00:00:00 2001 From: EL MASRI Chadi <celmasri@murex.com> Date: Mon, 6 Jan 2020 17:53:46 +0100 Subject: [PATCH 2/9] Added comment on GetPort. Signed-off-by: Chadi El Masri <celmasri@murex.com> --- pkg/netutils/port.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/netutils/port.go b/pkg/netutils/port.go index 77637a7e6fe..af6fac42aff 100644 --- a/pkg/netutils/port.go +++ b/pkg/netutils/port.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The Jaeger Authors. +// Copyright (c) 2020 The Jaeger Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ import ( "strconv" ) +// GetPort returns the port of an endpoint address func GetPort(addr net.Addr) (int, error) { _, port, err := net.SplitHostPort(addr.String()) if err != nil { From 632758267074a104a724b0a3c4c455e872790c31 Mon Sep 17 00:00:00 2001 From: EL MASRI Chadi <celmasri@murex.com> Date: Tue, 7 Jan 2020 01:05:35 +0100 Subject: [PATCH 3/9] Use assert.Greater. Signed-off-by: Chadi El Masri <celmasri@murex.com> --- cmd/query/app/server_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/query/app/server_test.go b/cmd/query/app/server_test.go index c5053edbcc9..577fc4395b1 100644 --- a/cmd/query/app/server_test.go +++ b/cmd/query/app/server_test.go @@ -119,7 +119,7 @@ func TestServerHandlesPortZero(t *testing.T) { assert.Equal(t, 1, message.Len(), "Expected query started log message.") onlyEntry := message.All()[0] - port := onlyEntry.ContextMap()["port"].(int) - assert.True(t, port > 0, + port := onlyEntry.ContextMap()["port"].(int64) + assert.Greater(t, port, int64(0), "Expected a non-zero port in the logs, got instead: %d", port) } From 0fe8c884386be8f2b65af516feefd4faafe5bb99 Mon Sep 17 00:00:00 2001 From: Chadi El Masri <celmasri@murex.com> Date: Tue, 7 Jan 2020 01:33:20 +0100 Subject: [PATCH 4/9] End comment with a period. Signed-off-by: Chadi El Masri <celmasri@murex.com> --- pkg/netutils/port.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/netutils/port.go b/pkg/netutils/port.go index af6fac42aff..79d8ca7aceb 100644 --- a/pkg/netutils/port.go +++ b/pkg/netutils/port.go @@ -19,7 +19,7 @@ import ( "strconv" ) -// GetPort returns the port of an endpoint address +// GetPort returns the port of an endpoint address. func GetPort(addr net.Addr) (int, error) { _, port, err := net.SplitHostPort(addr.String()) if err != nil { From 7883c4730f426f78825c84d60c4056b5ed78a445 Mon Sep 17 00:00:00 2001 From: Chadi El Masri <celmasri@murex.com> Date: Tue, 7 Jan 2020 01:45:21 +0100 Subject: [PATCH 5/9] Added unit test for port. Signed-off-by: Chadi El Masri <celmasri@murex.com> --- pkg/netutils/port_test.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 pkg/netutils/port_test.go diff --git a/pkg/netutils/port_test.go b/pkg/netutils/port_test.go new file mode 100644 index 00000000000..debad6ccbc0 --- /dev/null +++ b/pkg/netutils/port_test.go @@ -0,0 +1,35 @@ +// Copyright (c) 2020 The Jaeger Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package netutils + +import ( + "net" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestPortZero(t *testing.T) { + lis, err := net.Listen("tcp", "localhost:0") + require.NoError(t, err) + defer lis.Close() + + port, err := GetPort(lis.Addr()) + require.NoError(t, err) + + assert.Greater(t, port, 0, + "Expected a non-zero port, got instead: %d", port) +} From 77d0b5eeaf618be18a040db5e557aadc66130fbe Mon Sep 17 00:00:00 2001 From: Chadi El Masri <celmasri@murex.com> Date: Tue, 7 Jan 2020 11:15:54 +0100 Subject: [PATCH 6/9] Removed redundant error message. Signed-off-by: Chadi El Masri <celmasri@murex.com> --- cmd/query/app/server_test.go | 3 +-- pkg/netutils/port_test.go | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cmd/query/app/server_test.go b/cmd/query/app/server_test.go index 577fc4395b1..2afa1460d52 100644 --- a/cmd/query/app/server_test.go +++ b/cmd/query/app/server_test.go @@ -120,6 +120,5 @@ func TestServerHandlesPortZero(t *testing.T) { onlyEntry := message.All()[0] port := onlyEntry.ContextMap()["port"].(int64) - assert.Greater(t, port, int64(0), - "Expected a non-zero port in the logs, got instead: %d", port) + assert.Greater(t, port, int64(0)) } diff --git a/pkg/netutils/port_test.go b/pkg/netutils/port_test.go index debad6ccbc0..d4e8020b3b7 100644 --- a/pkg/netutils/port_test.go +++ b/pkg/netutils/port_test.go @@ -30,6 +30,5 @@ func TestPortZero(t *testing.T) { port, err := GetPort(lis.Addr()) require.NoError(t, err) - assert.Greater(t, port, 0, - "Expected a non-zero port, got instead: %d", port) + assert.Greater(t, port, 0) } From 74f53b248ce15a2ff60b4dac4fe3c5d9de5ff654 Mon Sep 17 00:00:00 2001 From: Chadi El Masri <celmasri@murex.com> Date: Wed, 8 Jan 2020 10:28:41 +0100 Subject: [PATCH 7/9] Added unit test for admin. Signed-off-by: Chadi El Masri <celmasri@murex.com> --- cmd/flags/admin_test.go | 45 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 cmd/flags/admin_test.go diff --git a/cmd/flags/admin_test.go b/cmd/flags/admin_test.go new file mode 100644 index 00000000000..ce09d4819a3 --- /dev/null +++ b/cmd/flags/admin_test.go @@ -0,0 +1,45 @@ +// Copyright (c) 2020 The Jaeger Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package flags + +import ( + "testing" + + "github.com/jaegertracing/jaeger/pkg/config" + "github.com/stretchr/testify/assert" + "go.uber.org/zap" + "go.uber.org/zap/zaptest/observer" +) + +func TestAdminServerHandlesPortZero(t *testing.T) { + adminServer := NewAdminServer(0) + + v, _ := config.Viperize(adminServer.AddFlags) + + zapCore, logs := observer.New(zap.InfoLevel) + logger := zap.New(zapCore) + + adminServer.initFromViper(v, logger) + + assert.NoError(t, adminServer.Serve()) + defer adminServer.Close() + + message := logs.FilterMessage("Admin server started") + assert.Equal(t, 1, message.Len(), "Expected Admin server started log message.") + + onlyEntry := message.All()[0] + port := onlyEntry.ContextMap()["http-port"].(int64) + assert.Greater(t, port, int64(0)) +} From ed3812fca06bc3ab1438b8fa66232f61e6ad0fff Mon Sep 17 00:00:00 2001 From: Chadi El Masri <celmasri@murex.com> Date: Wed, 8 Jan 2020 12:13:52 +0100 Subject: [PATCH 8/9] Added tests to launch two servers at port 0. Signed-off-by: Chadi El Masri <celmasri@murex.com> --- Gopkg.lock | 9 +++++++++ Gopkg.toml | 4 ++++ cmd/flags/admin_test.go | 36 +++++++++++++++++++++++++++++++++++- cmd/query/app/server_test.go | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 80 insertions(+), 1 deletion(-) diff --git a/Gopkg.lock b/Gopkg.lock index f1df8cac07a..8d300ced1e5 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -580,6 +580,14 @@ revision = "1b2b06f5f209fea48ff5922d8bfb2b9ed5d8f00b" version = "v0.7.0" +[[projects]] + digest = "1:e6cc30a1c1ffbc1e422e1cebecbdc3bdf2d11bf492fc614446b480af2d73a8e8" + name = "github.com/marusama/cyclicbarrier" + packages = ["."] + pruneopts = "UT" + revision = "08d457ab265cd9b97264ea3f933c16354e15fb06" + version = "1.0.2" + [[projects]] digest = "1:ff5ebae34cfbf047d505ee150de27e60570e8c394b3b8fdbb720ff6ac71985fc" name = "github.com/matttproud/golang_protobuf_extensions" @@ -1362,6 +1370,7 @@ "github.com/hashicorp/go-hclog", "github.com/hashicorp/go-plugin", "github.com/kr/pretty", + "github.com/marusama/cyclicbarrier", "github.com/olivere/elastic", "github.com/opentracing-contrib/go-stdlib/nethttp", "github.com/opentracing/opentracing-go", diff --git a/Gopkg.toml b/Gopkg.toml index 7f53b7c2096..9ed1c0291eb 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -187,3 +187,7 @@ required = [ [[override]] name = "github.com/Shopify/sarama" revision = "cd910a683f9faa57222e5120d17b60d2e65f7fa9" + +[[constraint]] + name = "github.com/marusama/cyclicbarrier" + version = "1.0.2" diff --git a/cmd/flags/admin_test.go b/cmd/flags/admin_test.go index ce09d4819a3..187d6a3cd97 100644 --- a/cmd/flags/admin_test.go +++ b/cmd/flags/admin_test.go @@ -15,12 +15,17 @@ package flags import ( + "context" + "sync" "testing" - "github.com/jaegertracing/jaeger/pkg/config" + "github.com/marusama/cyclicbarrier" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zaptest/observer" + + "github.com/jaegertracing/jaeger/pkg/config" ) func TestAdminServerHandlesPortZero(t *testing.T) { @@ -43,3 +48,32 @@ func TestAdminServerHandlesPortZero(t *testing.T) { port := onlyEntry.ContextMap()["http-port"].(int64) assert.Greater(t, port, int64(0)) } + +func TestAdminServerHandlesSimultaneousStartupOnPortZero(t *testing.T) { + const parallelInstances = 2 + + var wg sync.WaitGroup + barrier := cyclicbarrier.New(parallelInstances) + + for i := 0; i < parallelInstances; i++ { + wg.Add(1) + + go func() { + defer wg.Done() + + adminServer := NewAdminServer(0) + + v, _ := config.Viperize(adminServer.AddFlags) + logger := zap.NewNop() + adminServer.initFromViper(v, logger) + + if assert.NoError(t, adminServer.Serve(), "Failed to start two Admin servers at port 0") { + defer adminServer.Close() + } + + require.NoError(t, barrier.Await(context.Background())) + }() + } + + wg.Wait() +} diff --git a/cmd/query/app/server_test.go b/cmd/query/app/server_test.go index 2afa1460d52..6cbba9a9d60 100644 --- a/cmd/query/app/server_test.go +++ b/cmd/query/app/server_test.go @@ -17,12 +17,15 @@ package app import ( "context" "fmt" + "sync" "testing" "time" + "github.com/marusama/cyclicbarrier" opentracing "github.com/opentracing/opentracing-go" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zaptest/observer" @@ -122,3 +125,32 @@ func TestServerHandlesPortZero(t *testing.T) { port := onlyEntry.ContextMap()["port"].(int64) assert.Greater(t, port, int64(0)) } + +func TestServerHandlesSimultaneousStartupOnPortZero(t *testing.T) { + const parallelInstances = 2 + + var wg sync.WaitGroup + barrier := cyclicbarrier.New(parallelInstances) + + for i := 0; i < parallelInstances; i++ { + wg.Add(1) + + go func() { + defer wg.Done() + + flagsSvc := flags.NewService(ports.QueryAdminHTTP) + flagsSvc.Logger = zap.NewNop() + + querySvc := &querysvc.QueryService{} + tracer := opentracing.NoopTracer{} + server := NewServer(flagsSvc, querySvc, &QueryOptions{Port: 0}, tracer) + if assert.NoError(t, server.Start(), "Failed to start two Query services at port 0") { + defer server.Close() + } + + require.NoError(t, barrier.Await(context.Background())) + }() + } + + wg.Wait() +} From 162eee039ad57908563e9a4edbd1e266dc9f8ebf Mon Sep 17 00:00:00 2001 From: Yuri Shkuro <ys@uber.com> Date: Fri, 10 Jan 2020 21:26:04 -0500 Subject: [PATCH 9/9] Remove unnecessary tests and 3rd party deps Signed-off-by: Yuri Shkuro <ys@uber.com> --- Gopkg.lock | 178 +++++++++++++++++------------------ Gopkg.toml | 4 - cmd/flags/admin_test.go | 33 ------- cmd/query/app/server_test.go | 32 ------- 4 files changed, 89 insertions(+), 158 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 8d300ced1e5..70ea399e660 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -68,12 +68,12 @@ version = "0.9.3" [[projects]] - digest = "1:320e7ead93de9fd2b0e59b50fd92a4d50c1f8ab455d96bc2eb083267453a9709" + digest = "1:c68aba66f5db6052fd838d9a7d60d8859f8c11b8c1d9ac9758f69c7a51efc07a" name = "github.com/asaskevich/govalidator" packages = ["."] pruneopts = "UT" - revision = "ccb8e960c48f04d6935e72476ae4a51028f9e22f" - version = "v9" + revision = "475eaeb164960a651e97470412a7d3b0c5036105" + version = "v10" [[projects]] digest = "1:d6afaeed1502aa28e80a4ed0981d570ad91b2579193404256ce672ed0a609e0d" @@ -144,11 +144,11 @@ [[projects]] branch = "master" - digest = "1:6e8109ce247a59ab1eeb5330166c12735f6590de99c9647b6162d11518d32c9a" + digest = "1:7b5b445d4d7b8d18eb794783e7559e90d1f1fca4bf3c2f1c249f11b582e6f546" name = "github.com/dgryski/go-farm" packages = ["."] pruneopts = "UT" - revision = "6a90982ecee230ff6cba02d5bd386acc030be9d3" + revision = "c2139c5d712b01d0410c2e51d4bdc588b4eb6ca3" [[projects]] digest = "1:1f0c7ab489b407a7f8f9ad16c25a504d28ab461517a971d341388a56156c1bd7" @@ -204,23 +204,23 @@ version = "v0.9.0" [[projects]] - digest = "1:ec1763a0b23c3c610dc2a0310c9afd01513c9b95091c05a9207718a61181c276" + digest = "1:59e98a91b61e51b9457ee4e13a128f207bd66871cc84bef92a779a7d82711e93" name = "github.com/go-openapi/analysis" packages = [ ".", "internal", ] pruneopts = "UT" - revision = "1024f3482ddc2c381cc918eb9eca596d51a70272" - version = "v0.19.6" + revision = "01a3bdad024cd0b80f267b070347538b6edb1c77" + version = "v0.19.7" [[projects]] - digest = "1:3bca1e4623bc7e1f9849a14fe730c093953727991f0592be3dad0168cb67758e" + digest = "1:dd9d7a334e7d246a8501ac0cf5d408024c91ff8b8308930cd98916629970da97" name = "github.com/go-openapi/errors" packages = ["."] pruneopts = "UT" - revision = "0b2a0a1f89aa2eec2d13e03cd80ab0fdaf01f8ce" - version = "v0.19.2" + revision = "9b273e805998abc751853b4e1574d66e5df888b4" + version = "v0.19.3" [[projects]] digest = "1:ed15647db08b6d63666bf9755d337725960c302bbfa5e23754b4b915a4797e42" @@ -247,7 +247,7 @@ version = "v0.19.4" [[projects]] - digest = "1:dce067db51b765f24e2588aff417b306c61fcacfca7f3fd71e129e67ef2e1e5f" + digest = "1:b2254eaaff849ab98571fd3c8800c110e23e4f17013a841a9d118547d458d969" name = "github.com/go-openapi/runtime" packages = [ ".", @@ -259,40 +259,40 @@ "security", ] pruneopts = "UT" - revision = "553c9d1fb273d9550562d9f76949a413af265138" - version = "v0.19.7" + revision = "cc90213cf1bd091201a1f7ee230feeb7662c4a48" + version = "v0.19.9" [[projects]] - digest = "1:55d1c09fc8b3320b6842565249a9e4d0f363bead6f9b8be05c3b47f2c4264eda" + digest = "1:a60f47e736cc96075451c3c3502274d86ec6d96588c03d1ab56142ccbb8a5364" name = "github.com/go-openapi/spec" packages = ["."] pruneopts = "UT" - revision = "8557d72e4f077c2dbe1e48df09e596b6fb9b7991" - version = "v0.19.4" + revision = "772572fd19ebcc983369e53bfaed4bde2077fe0c" + version = "v0.19.5" [[projects]] - digest = "1:787b399bfeddd801aca6144bd9928f4fe1d40eadcb09c59fcbd421cc528ea11c" + digest = "1:97d14436dd6f314edfd1cff0caae50342c5435718f0adfd7490db353342bfca4" name = "github.com/go-openapi/strfmt" packages = ["."] pruneopts = "UT" - revision = "6faa644e1cdafc07f7b38eb06c1af5f92128f289" - version = "v0.19.3" + revision = "1940fb2f8aba2045ae5493bd64b76ad4af8b5856" + version = "v0.19.4" [[projects]] - digest = "1:43d0f99f53acce97119181dcd592321084690c2d462c57680ccb4472ae084949" + digest = "1:d79ccf65d7721efa48200dc7fc827f8fb29e1fba4db4d55be675fdec84e7cfe1" name = "github.com/go-openapi/swag" packages = ["."] pruneopts = "UT" - revision = "c3d0f7896d589f3babb99eea24bbc7de98108e72" - version = "v0.19.5" + revision = "8a84ec635f1b280a7062edeab609f0667a053248" + version = "v0.19.6" [[projects]] - digest = "1:683e8ed8f90886b6338ab90d12aa8f4111383506313173ef02ad0724608512b5" + digest = "1:313e98ecd90b82d00c6b480c7458602f2c669b93c396772680fd3a9bb9ad13c0" name = "github.com/go-openapi/validate" packages = ["."] pruneopts = "UT" - revision = "80d596e2af47cef147b636dfd76abce249d2b847" - version = "v0.19.4" + revision = "08232b6614a50c4f62d1efa77e966421d327d3d3" + version = "v0.19.5" [[projects]] digest = "1:586ea76dbd0374d6fb649a91d70d652b7fe0ccffb8910a77468e7702e7901f3d" @@ -544,12 +544,12 @@ version = "v1.0.0" [[projects]] - digest = "1:ca955a9cd5b50b0f43d2cc3aeb35c951473eeca41b34eb67507f1dbcc0542394" + digest = "1:4cc7748b74453830951f95ddc3fd980387e7c13f77cc33d7cba54cd6b96dad26" name = "github.com/kr/pretty" packages = ["."] pruneopts = "UT" - revision = "73f6ac0b30a98e433b289500d779f50c1a6f0712" - version = "v0.1.0" + revision = "4e0886370c3a67530192c6a238cff68f56c141b0" + version = "v0.2.0" [[projects]] digest = "1:15b5cc79aad436d47019f814fde81a10221c740dc8ddf769221a65097fb6c2e9" @@ -580,14 +580,6 @@ revision = "1b2b06f5f209fea48ff5922d8bfb2b9ed5d8f00b" version = "v0.7.0" -[[projects]] - digest = "1:e6cc30a1c1ffbc1e422e1cebecbdc3bdf2d11bf492fc614446b480af2d73a8e8" - name = "github.com/marusama/cyclicbarrier" - packages = ["."] - pruneopts = "UT" - revision = "08d457ab265cd9b97264ea3f933c16354e15fb06" - version = "1.0.2" - [[projects]] digest = "1:ff5ebae34cfbf047d505ee150de27e60570e8c394b3b8fdbb720ff6ac71985fc" name = "github.com/matttproud/golang_protobuf_extensions" @@ -632,7 +624,7 @@ "x86", ] pruneopts = "UT" - revision = "15d6a9a17e5386cb169227dd4dea9a23100a5029" + revision = "205fc6a3d76b01529817bc64d037340b558d2c05" [[projects]] digest = "1:66b0a65aba488ca6c72f77132d5b8d7e2c5baf07d577dee64502b69a2c90c791" @@ -653,15 +645,15 @@ version = "v0.1" [[projects]] - digest = "1:9ec6cf1df5ad1d55cf41a43b6b1e7e118a91bade4f68ff4303379343e40c0e25" + digest = "1:109a4e5eccbcaea2e63f89e2eccecbd7f427a893a8712defce705e14c1d51d3c" name = "github.com/oklog/run" packages = ["."] pruneopts = "UT" - revision = "4dadeb3030eda0273a12382bb2348ffc7c9d1a39" - version = "v1.0.0" + revision = "9c53bcd6fefd554246da88d55efcc283aff63659" + version = "v1.1.0" [[projects]] - digest = "1:4753e9dba3c4dea247a1b65b638d74561c2f3df47fbac74b704d2603bbb41974" + digest = "1:55222c9ad95811b5e0217a53bc4808a06549589b0026f0fdaf020ff34dd0c967" name = "github.com/olivere/elastic" packages = [ ".", @@ -669,8 +661,8 @@ "uritemplates", ] pruneopts = "UT" - revision = "dc1492fc8d9d981e6a2e927933aac5546e473452" - version = "v6.2.26" + revision = "d7ed85d223ef32bd5ca4c324c444faf5001236fb" + version = "v6.2.27" [[projects]] branch = "master" @@ -701,15 +693,15 @@ version = "v1.6.0" [[projects]] - digest = "1:cef870622e603ac1305922eb5d380455cad27e354355ae7a855d8633ffa66197" + digest = "1:d843e9c8e27913780ac7a3d9014a19a4b2752d1dda1250e6fdba48bafe75fa6e" name = "github.com/pierrec/lz4" packages = [ ".", "internal/xxh32", ] pruneopts = "UT" - revision = "645f9b948eee34cbcc335c70999f79c29c420fbf" - version = "v2.3.0" + revision = "9085dacd1e1eca033047a5514195779360363ced" + version = "v2.4.0" [[projects]] digest = "1:cf31692c14422fa27c83a05292eb5cbe0fb2775972e8f1f8446a71549bd8980b" @@ -740,12 +732,12 @@ version = "v1.1.0" [[projects]] - branch = "master" - digest = "1:2d5cd61daa5565187e1d96bae64dbbc6080dacf741448e9629c64fd93203b0d4" + digest = "1:982be0b5396e16a663697899ce69cc7b1e71ddcae4153af157578d4dc9bc3f88" name = "github.com/prometheus/client_model" packages = ["go"] pruneopts = "UT" - revision = "14fe0d1b01d4d5fc031dd4bec1823bd3ebbe8016" + revision = "d1d2010b5beead3fa1c5f271a5cf626e40b3ad6e" + version = "v0.1.0" [[projects]] digest = "1:f119e3205d3a1f0f19dbd7038eb37528e2c6f0933269dc344e305951fb87d632" @@ -760,7 +752,7 @@ version = "v0.7.0" [[projects]] - digest = "1:a210815b437763623ecca8eb91e6a0bf4f2d6773c5a6c9aec0e28f19e5fd6deb" + digest = "1:ec0ff4bd619a67065e34d6477711ed0117e335f99059a4c508e0fe21cfe7b304" name = "github.com/prometheus/procfs" packages = [ ".", @@ -768,8 +760,8 @@ "internal/util", ] pruneopts = "UT" - revision = "499c85531f756d1129edd26485a5f73871eeb308" - version = "v0.0.5" + revision = "6d489fc7f1d9cd890a250f3ea3431b1744b9623f" + version = "v0.0.8" [[projects]] branch = "master" @@ -836,12 +828,12 @@ version = "v1.2.2" [[projects]] - digest = "1:08d65904057412fc0270fc4812a1c90c594186819243160dc779a402d4b6d0bc" + digest = "1:ff4cd55a3666b6ea3a876c9e133bfb54d6c812e725409a773f2c94a0b3a92f4f" name = "github.com/spf13/cast" packages = ["."] pruneopts = "UT" - revision = "8c9545af88b134710ab1cd196795e7f2388358d7" - version = "v1.3.0" + revision = "1ffadf551085444af981432dd0f6d1160c11ec64" + version = "v1.3.1" [[projects]] digest = "1:654214e86a044cfb1815afd41ff2a8e34402bdfafa0dd79fec5452ca1dc1f779" @@ -871,12 +863,12 @@ version = "v1.0.5" [[projects]] - digest = "1:0b60fc944fb6a7b6c985832bd341bdb7ed8fe894fea330414e7774bb24652962" + digest = "1:8d0b79a29be9946ea00b2f2b778ec5b36db07453d97abe9d754b25bc2cc49a0e" name = "github.com/spf13/viper" packages = ["."] pruneopts = "UT" - revision = "72b022eb357a56469725dcd03918449e2278d02e" - version = "v1.5.0" + revision = "eabbc68a3ecd5cf8c11a2f84dbda5e7a38493b2f" + version = "v1.6.1" [[projects]] digest = "1:ac83cf90d08b63ad5f7e020ef480d319ae890c208f8524622a2f3136e2686b02" @@ -908,7 +900,7 @@ version = "v1.2.0" [[projects]] - digest = "1:ea9632313cd7ceffb62188cd5e4bf940e9b91446fc310f9a62372ae536011fdb" + digest = "1:b2871caffbaef2e8f6d6f42318b985a16297626df8669be365da99e9d4bab10f" name = "github.com/uber/jaeger-client-go" packages = [ ".", @@ -932,8 +924,8 @@ "utils", ] pruneopts = "UT" - revision = "54da50209f6acdcb06df61e60eeda5b52a4ef47c" - version = "v2.20.0" + revision = "f2e1f58485aacf2975cdde9c9f5396e6d98c35ba" + version = "v2.21.1" [[projects]] digest = "1:abbb7762b4200f8b1d82193dcc02a3d8a62efc0a0ffc8ec4f4e9ef8abf797a9c" @@ -976,27 +968,28 @@ version = "v1.16.0" [[projects]] - digest = "1:8458b1a19a304c09d8f109a9463a419f703e3d1a81615afcaf3593dcce6749b9" + digest = "1:f15085b9880b96dc2c043eb279a11f88d80d3e24e3ba8ccbf8391a9a7ed1ba0f" name = "go.mongodb.org/mongo-driver" packages = [ "bson", "bson/bsoncodec", + "bson/bsonoptions", "bson/bsonrw", "bson/bsontype", "bson/primitive", "x/bsonx/bsoncore", ] pruneopts = "UT" - revision = "797e0a635920c291b1808180bf7249eaac5eafed" - version = "v1.1.3" + revision = "55b507b3e45a2ef5dc1d5a4cba3333c45dce443c" + version = "v1.2.1" [[projects]] - digest = "1:0bdcb0c740d79d400bd3f7946ac22a715c94db62b20bfd2e01cd50693aba0600" + digest = "1:c708d00d1097e62bf4f3a72f239efa7dafc257581421b0b7d3789e1ff5299f30" name = "go.uber.org/atomic" packages = ["."] pruneopts = "UT" - revision = "9dc4df04d0d1c39369750a9f6c32c39560672089" - version = "v1.5.0" + revision = "40ae6a40a970ef4cdbffa7b24b280e316db8accc" + version = "v1.5.1" [[projects]] digest = "1:a51a1c97b728b00cc514dfe5f78aad3354491792e69b881ea88176dd3fa30ef6" @@ -1028,7 +1021,7 @@ revision = "2cfd321de3ee5d5f8a5fda2521d1703478334d98" [[projects]] - digest = "1:d41c2589529fbacca8d78e18a7cc3e58304dc20735427838c25bb905a5a44e5d" + digest = "1:46ad3fed3cf8956a73166039328ab019c7ab9757a840488ee127d8b9b9a3178b" name = "go.uber.org/zap" packages = [ ".", @@ -1042,8 +1035,8 @@ "zaptest/observer", ] pruneopts = "UT" - revision = "a6015e13fab9b744d96085308ce4e8f11bad1996" - version = "v1.12.0" + revision = "33e58d4d0120aa28d4df84cd244838c490846c9d" + version = "v1.13.0" [[projects]] branch = "master" @@ -1054,22 +1047,22 @@ "pbkdf2", ] pruneopts = "UT" - revision = "ed6320f186d4e69b2ba748dd0084746281301a8e" + revision = "5d647ca1575777a812e903a7e98177174d8c295a" [[projects]] branch = "master" - digest = "1:21d7bad9b7da270fd2d50aba8971a041bd691165c95096a2a4c68db823cbc86a" + digest = "1:334b27eac455cb6567ea28cd424230b07b1a64334a2f861a8075ac26ce10af43" name = "golang.org/x/lint" packages = [ ".", "golint", ] pruneopts = "UT" - revision = "16217165b5de779cb6a5e4fc81fa9c1166fda457" + revision = "fdd1cda4f05fd1fd86124f0ef9ce31a0b72c8448" [[projects]] branch = "master" - digest = "1:ab87fcd483258ad8fb999dbd24d9175a7ce6b7630021a9a905bfbe6ef4783b96" + digest = "1:be532d3e419ae0a9001a05f78754b803473c76c55cfb94af715fc06eaf311b13" name = "golang.org/x/net" packages = [ "bpf", @@ -1089,18 +1082,18 @@ "trace", ] pruneopts = "UT" - revision = "a882066a44e04a21d46e51451c71e131344e830e" + revision = "c0dbc17a35534bf2e581d7a942408dc936316da4" [[projects]] branch = "master" - digest = "1:1017834f19e0d987e8b1b928f016b0a1186a202ec1867fee7112efd4b4475bd1" + digest = "1:c8faf148023f13e62a93d3ed6c01fc586b3c6b52a40c5c9b0f2220bae71f390a" name = "golang.org/x/sys" packages = [ "unix", "windows", ] pruneopts = "UT" - revision = "c1f44814a5cd81a6d1cb589ef1e528bc5d305e07" + revision = "548cf772de5052aa878ccb47cdeb7d262b75c8ec" [[projects]] digest = "1:66a2f252a58b4fbbad0e4e180e1d85a83c222b6bce09c3dcdef3dc87c72eda7c" @@ -1130,7 +1123,7 @@ [[projects]] branch = "master" - digest = "1:416b82a27fe1a8768ee1f2a143178cb5ca829b889081b66a096377e35fcdb6e4" + digest = "1:1025e9e880900028dc2ec8d648c486ba65e33c9bf1ce3498d3cc1984cd3a8a9c" name = "golang.org/x/tools" packages = [ "go/analysis", @@ -1149,10 +1142,9 @@ "internal/fastwalk", "internal/gopathwalk", "internal/semver", - "internal/span", ] pruneopts = "UT" - revision = "0c330b00b1a74f19a7237de8f5c46b9483084fa2" + revision = "89082a3841783366cb82b3dc4ce9258fb3dad1a9" [[projects]] branch = "master" @@ -1163,13 +1155,14 @@ "googleapis/rpc/status", ] pruneopts = "UT" - revision = "919d9bdd9fe6f1a5dd95ce5d5e4cdb8fd3c516d0" + revision = "bd8f9a0ef82f9870cb10caef4f23c348069600cb" [[projects]] - digest = "1:55bc501ec595858b173f6bb7eb76af149c892a1708c1729204ccc80fd009015a" + digest = "1:b2c9ea388537a402c7f618e11eda34ec5358b67c3c6aef9df113c7022b46e0b1" name = "google.golang.org/grpc" packages = [ ".", + "attributes", "backoff", "balancer", "balancer/base", @@ -1211,8 +1204,8 @@ "test/grpc_testing", ] pruneopts = "UT" - revision = "9d331e2b02dd47daeecae02790f61cc88dc75a64" - version = "v1.25.0" + revision = "f5b0812e6fe574d90da76b205e9eb51f6ddb1919" + version = "v1.26.0" [[projects]] digest = "1:2d1fbdc6777e5408cabeb02bf336305e724b925ff4546ded0fa8715a7267922a" @@ -1222,6 +1215,14 @@ revision = "d2d2541c53f18d2a059457998ce2876cc8e67cbf" version = "v0.9.1" +[[projects]] + digest = "1:c4b5592c342f273e18de68e16957f536f6648f2e90c9d7ece653ac90c22079a9" + name = "gopkg.in/ini.v1" + packages = ["."] + pruneopts = "UT" + revision = "94291fffe2b14f4632ec0e67c1bfecfc1287a168" + version = "v1.51.1" + [[projects]] digest = "1:c902038ee2d6f964d3b9f2c718126571410c5d81251cbab9fe58abd37803513c" name = "gopkg.in/jcmturner/aescts.v1" @@ -1289,12 +1290,12 @@ version = "v1.1.0" [[projects]] - digest = "1:f26a5d382387e03a40d1471dddfba85dfff9bf05352d7e42d37612677c4d3c5c" + digest = "1:b75b3deb2bce8bc079e16bb2aecfe01eb80098f5650f9e93e5643ca8b7b73737" name = "gopkg.in/yaml.v2" packages = ["."] pruneopts = "UT" - revision = "f90ceb4f409096b60e2e9076b38b304b8246e5fa" - version = "v2.2.5" + revision = "1f64d6156d11335c3f22d9330b0ad14fc1e789ce" + version = "v2.2.7" [[projects]] digest = "1:131158a88aad1f94854d0aa21a64af2802d0a470fb0f01cb33c04fafd2047111" @@ -1370,7 +1371,6 @@ "github.com/hashicorp/go-hclog", "github.com/hashicorp/go-plugin", "github.com/kr/pretty", - "github.com/marusama/cyclicbarrier", "github.com/olivere/elastic", "github.com/opentracing-contrib/go-stdlib/nethttp", "github.com/opentracing/opentracing-go", diff --git a/Gopkg.toml b/Gopkg.toml index 9ed1c0291eb..7f53b7c2096 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -187,7 +187,3 @@ required = [ [[override]] name = "github.com/Shopify/sarama" revision = "cd910a683f9faa57222e5120d17b60d2e65f7fa9" - -[[constraint]] - name = "github.com/marusama/cyclicbarrier" - version = "1.0.2" diff --git a/cmd/flags/admin_test.go b/cmd/flags/admin_test.go index 187d6a3cd97..6d6cef71700 100644 --- a/cmd/flags/admin_test.go +++ b/cmd/flags/admin_test.go @@ -15,13 +15,9 @@ package flags import ( - "context" - "sync" "testing" - "github.com/marusama/cyclicbarrier" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zaptest/observer" @@ -48,32 +44,3 @@ func TestAdminServerHandlesPortZero(t *testing.T) { port := onlyEntry.ContextMap()["http-port"].(int64) assert.Greater(t, port, int64(0)) } - -func TestAdminServerHandlesSimultaneousStartupOnPortZero(t *testing.T) { - const parallelInstances = 2 - - var wg sync.WaitGroup - barrier := cyclicbarrier.New(parallelInstances) - - for i := 0; i < parallelInstances; i++ { - wg.Add(1) - - go func() { - defer wg.Done() - - adminServer := NewAdminServer(0) - - v, _ := config.Viperize(adminServer.AddFlags) - logger := zap.NewNop() - adminServer.initFromViper(v, logger) - - if assert.NoError(t, adminServer.Serve(), "Failed to start two Admin servers at port 0") { - defer adminServer.Close() - } - - require.NoError(t, barrier.Await(context.Background())) - }() - } - - wg.Wait() -} diff --git a/cmd/query/app/server_test.go b/cmd/query/app/server_test.go index 6cbba9a9d60..2afa1460d52 100644 --- a/cmd/query/app/server_test.go +++ b/cmd/query/app/server_test.go @@ -17,15 +17,12 @@ package app import ( "context" "fmt" - "sync" "testing" "time" - "github.com/marusama/cyclicbarrier" opentracing "github.com/opentracing/opentracing-go" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" - "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zaptest/observer" @@ -125,32 +122,3 @@ func TestServerHandlesPortZero(t *testing.T) { port := onlyEntry.ContextMap()["port"].(int64) assert.Greater(t, port, int64(0)) } - -func TestServerHandlesSimultaneousStartupOnPortZero(t *testing.T) { - const parallelInstances = 2 - - var wg sync.WaitGroup - barrier := cyclicbarrier.New(parallelInstances) - - for i := 0; i < parallelInstances; i++ { - wg.Add(1) - - go func() { - defer wg.Done() - - flagsSvc := flags.NewService(ports.QueryAdminHTTP) - flagsSvc.Logger = zap.NewNop() - - querySvc := &querysvc.QueryService{} - tracer := opentracing.NoopTracer{} - server := NewServer(flagsSvc, querySvc, &QueryOptions{Port: 0}, tracer) - if assert.NoError(t, server.Start(), "Failed to start two Query services at port 0") { - defer server.Close() - } - - require.NoError(t, barrier.Await(context.Background())) - }() - } - - wg.Wait() -}