From 87dde7589c132fcbf0c335c7c31e7ec0f1d79a11 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Thu, 29 Jun 2023 17:44:42 -0700 Subject: [PATCH] app: resolve port :9000 conflicts (change to :49000 Signed-off-by: Stephen Gutekanst --- cmd/blobstore/shared/BUILD.bazel | 1 + cmd/blobstore/shared/shared.go | 9 ++---- cmd/server/shared/BUILD.bazel | 1 + cmd/server/shared/blobstore.go | 4 ++- .../shared/lsifuploadstore/BUILD.bazel | 1 + .../shared/lsifuploadstore/config.go | 3 +- enterprise/internal/embeddings/BUILD.bazel | 1 + enterprise/internal/embeddings/uploadstore.go | 3 +- internal/conf/deploy/BUILD.bazel | 6 +++- internal/conf/deploy/endpoints.go | 28 +++++++++++++++++++ internal/singleprogram/singleprogram.go | 6 ++-- 11 files changed, 49 insertions(+), 14 deletions(-) create mode 100644 internal/conf/deploy/endpoints.go diff --git a/cmd/blobstore/shared/BUILD.bazel b/cmd/blobstore/shared/BUILD.bazel index 0badc1bf5b2c..1fcb3e17ce0d 100644 --- a/cmd/blobstore/shared/BUILD.bazel +++ b/cmd/blobstore/shared/BUILD.bazel @@ -12,6 +12,7 @@ go_library( "//cmd/blobstore/internal/blobstore", "//internal/actor", "//internal/conf", + "//internal/conf/deploy", "//internal/debugserver", "//internal/env", "//internal/goroutine", diff --git a/cmd/blobstore/shared/shared.go b/cmd/blobstore/shared/shared.go index c192ecc7d70f..ceb29f9e94d5 100644 --- a/cmd/blobstore/shared/shared.go +++ b/cmd/blobstore/shared/shared.go @@ -18,7 +18,7 @@ import ( "github.com/sourcegraph/sourcegraph/cmd/blobstore/internal/blobstore" "github.com/sourcegraph/sourcegraph/internal/actor" "github.com/sourcegraph/sourcegraph/internal/conf" - "github.com/sourcegraph/sourcegraph/internal/env" + "github.com/sourcegraph/sourcegraph/internal/conf/deploy" "github.com/sourcegraph/sourcegraph/internal/goroutine" "github.com/sourcegraph/sourcegraph/internal/instrumentation" "github.com/sourcegraph/sourcegraph/internal/observation" @@ -26,8 +26,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/trace" ) -const port = "9000" - func shutdownOnSignal(ctx context.Context, server *http.Server) error { // Listen for shutdown signals. When we receive one attempt to clean up, // but do an insta-shutdown if we receive more than one signal. @@ -75,10 +73,7 @@ func Start(ctx context.Context, observationCtx *observation.Context, config *Con defer cancel() g, ctx := errgroup.WithContext(ctx) - host := "" - if env.InsecureDev { - host = "127.0.0.1" - } + host, port := deploy.BlobstoreHostPort() addr := net.JoinHostPort(host, port) server := &http.Server{ ReadTimeout: 75 * time.Second, diff --git a/cmd/server/shared/BUILD.bazel b/cmd/server/shared/BUILD.bazel index 19bf27a3acdf..fd5811f2e41f 100644 --- a/cmd/server/shared/BUILD.bazel +++ b/cmd/server/shared/BUILD.bazel @@ -20,6 +20,7 @@ go_library( deps = [ "//cmd/server/internal/goreman", "//cmd/server/shared/assets", + "//internal/conf/deploy", "//internal/database/postgresdsn", "//internal/env", "//internal/hostname", diff --git a/cmd/server/shared/blobstore.go b/cmd/server/shared/blobstore.go index 977978fb8131..1590b284068d 100644 --- a/cmd/server/shared/blobstore.go +++ b/cmd/server/shared/blobstore.go @@ -5,6 +5,8 @@ import ( "path/filepath" sglog "github.com/sourcegraph/log" + + "github.com/sourcegraph/sourcegraph/internal/conf/deploy" ) func maybeBlobstore(logger sglog.Logger) []string { @@ -14,7 +16,7 @@ func maybeBlobstore(logger sglog.Logger) []string { } // Point at local blobstore endpoint. - SetDefaultEnv("PRECISE_CODE_INTEL_UPLOAD_AWS_ENDPOINT", "http://127.0.0.1:9000") + SetDefaultEnv("PRECISE_CODE_INTEL_UPLOAD_AWS_ENDPOINT", deploy.BlobstoreDefaultEndpoint()) SetDefaultEnv("PRECISE_CODE_INTEL_UPLOAD_BACKEND", "blobstore") // cmd/server-specific blobstore env vars diff --git a/enterprise/internal/codeintel/shared/lsifuploadstore/BUILD.bazel b/enterprise/internal/codeintel/shared/lsifuploadstore/BUILD.bazel index 818b0321dc5b..ca83c1920c3c 100644 --- a/enterprise/internal/codeintel/shared/lsifuploadstore/BUILD.bazel +++ b/enterprise/internal/codeintel/shared/lsifuploadstore/BUILD.bazel @@ -10,6 +10,7 @@ go_library( importpath = "github.com/sourcegraph/sourcegraph/enterprise/internal/codeintel/shared/lsifuploadstore", visibility = ["//enterprise:__subpackages__"], deps = [ + "//internal/conf/deploy", "//internal/env", "//internal/observation", "//internal/uploadstore", diff --git a/enterprise/internal/codeintel/shared/lsifuploadstore/config.go b/enterprise/internal/codeintel/shared/lsifuploadstore/config.go index 274db7fe9877..2f2732472246 100644 --- a/enterprise/internal/codeintel/shared/lsifuploadstore/config.go +++ b/enterprise/internal/codeintel/shared/lsifuploadstore/config.go @@ -4,6 +4,7 @@ import ( "strings" "time" + "github.com/sourcegraph/sourcegraph/internal/conf/deploy" "github.com/sourcegraph/sourcegraph/internal/env" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -40,7 +41,7 @@ func (c *Config) Load() { if c.Backend == "blobstore" || c.Backend == "s3" { c.S3Region = c.Get("PRECISE_CODE_INTEL_UPLOAD_AWS_REGION", "us-east-1", "The target AWS region.") - c.S3Endpoint = c.Get("PRECISE_CODE_INTEL_UPLOAD_AWS_ENDPOINT", "http://blobstore:9000", "The target AWS endpoint.") + c.S3Endpoint = c.Get("PRECISE_CODE_INTEL_UPLOAD_AWS_ENDPOINT", deploy.BlobstoreDefaultEndpoint(), "The target AWS endpoint.") c.S3UsePathStyle = c.GetBool("PRECISE_CODE_INTEL_UPLOAD_AWS_USE_PATH_STYLE", "false", "Whether to use path calling (vs subdomain calling).") ec2RoleCredentials := c.GetBool("PRECISE_CODE_INTEL_UPLOAD_AWS_USE_EC2_ROLE_CREDENTIALS", "false", "Whether to use the EC2 metadata API, or use the provided static credentials.") diff --git a/enterprise/internal/embeddings/BUILD.bazel b/enterprise/internal/embeddings/BUILD.bazel index 45ac6e3a684a..f5a08b85dfa6 100644 --- a/enterprise/internal/embeddings/BUILD.bazel +++ b/enterprise/internal/embeddings/BUILD.bazel @@ -28,6 +28,7 @@ go_library( "//internal/api", "//internal/codeintel/types", "//internal/conf/conftypes", + "//internal/conf/deploy", "//internal/database", "//internal/endpoint", "//internal/env", diff --git a/enterprise/internal/embeddings/uploadstore.go b/enterprise/internal/embeddings/uploadstore.go index f068bd990539..cba97c3a4a0f 100644 --- a/enterprise/internal/embeddings/uploadstore.go +++ b/enterprise/internal/embeddings/uploadstore.go @@ -6,6 +6,7 @@ import ( "github.com/sourcegraph/sourcegraph/lib/errors" + "github.com/sourcegraph/sourcegraph/internal/conf/deploy" "github.com/sourcegraph/sourcegraph/internal/env" "github.com/sourcegraph/sourcegraph/internal/observation" "github.com/sourcegraph/sourcegraph/internal/uploadstore" @@ -41,7 +42,7 @@ func (c *EmbeddingsUploadStoreConfig) Load() { if c.Backend == "blobstore" || c.Backend == "s3" { c.S3Region = c.Get("EMBEDDINGS_UPLOAD_AWS_REGION", "us-east-1", "The target AWS region.") - c.S3Endpoint = c.Get("EMBEDDINGS_UPLOAD_AWS_ENDPOINT", "http://blobstore:9000", "The target AWS endpoint.") + c.S3Endpoint = c.Get("EMBEDDINGS_UPLOAD_AWS_ENDPOINT", deploy.BlobstoreDefaultEndpoint(), "The target AWS endpoint.") c.S3UsePathStyle = c.GetBool("EMBEDDINGS_UPLOAD_AWS_USE_PATH_STYLE", "false", "Whether to use path calling (vs subdomain calling).") ec2RoleCredentials := c.GetBool("EMBEDDINGS_UPLOAD_AWS_USE_EC2_ROLE_CREDENTIALS", "false", "Whether to use the EC2 metadata API, or use the provided static credentials.") diff --git a/internal/conf/deploy/BUILD.bazel b/internal/conf/deploy/BUILD.bazel index eaee92007c93..c1ef3fe4faa7 100644 --- a/internal/conf/deploy/BUILD.bazel +++ b/internal/conf/deploy/BUILD.bazel @@ -2,7 +2,11 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "deploy", - srcs = ["deploytype.go"], + srcs = [ + "deploytype.go", + "endpoints.go", + ], importpath = "github.com/sourcegraph/sourcegraph/internal/conf/deploy", visibility = ["//:__subpackages__"], + deps = ["//internal/env"], ) diff --git a/internal/conf/deploy/endpoints.go b/internal/conf/deploy/endpoints.go new file mode 100644 index 000000000000..6b5394973c76 --- /dev/null +++ b/internal/conf/deploy/endpoints.go @@ -0,0 +1,28 @@ +package deploy + +import ( + "github.com/sourcegraph/sourcegraph/internal/env" +) + +// BlobstoreEndpoint returns the default blobstore endpoint that should be used for this deployment +// type. +func BlobstoreDefaultEndpoint() string { + if IsApp() { + return "http://127.0.0.1:49000" + } + if IsSingleBinary() { + return "http://127.0.0.1:9000" + } + return "http://blobstore:9000" +} + +// BlobstoreHostPort returns the host/port that should be listened on for this deployment type. +func BlobstoreHostPort() (string, string) { + if IsApp() { + return "127.0.0.1", "49000" + } + if env.InsecureDev || IsSingleBinary() { + return "127.0.0.1", "9000" + } + return "", "9000" +} diff --git a/internal/singleprogram/singleprogram.go b/internal/singleprogram/singleprogram.go index 95745ff2f9f2..b70033100953 100644 --- a/internal/singleprogram/singleprogram.go +++ b/internal/singleprogram/singleprogram.go @@ -52,7 +52,7 @@ func Init(logger log.Logger) CleanupFunc { setDefaultEnv(logger, "SYMBOLS_URL", "http://127.0.0.1:3184") setDefaultEnv(logger, "SEARCHER_URL", "http://127.0.0.1:3181") - setDefaultEnv(logger, "BLOBSTORE_URL", "http://127.0.0.1:9000") + setDefaultEnv(logger, "BLOBSTORE_URL", deploy.BlobstoreDefaultEndpoint()) setDefaultEnv(logger, "EMBEDDINGS_URL", "http://127.0.0.1:9991") // The syntax-highlighter might not be running, but this is a better default than an internal @@ -69,9 +69,9 @@ func Init(logger log.Logger) CleanupFunc { // setDefaultEnv(logger, "JAEGER_SERVER_URL", "http://localhost:16686") // Use blobstore on localhost. - setDefaultEnv(logger, "PRECISE_CODE_INTEL_UPLOAD_AWS_ENDPOINT", "http://localhost:9000") + setDefaultEnv(logger, "PRECISE_CODE_INTEL_UPLOAD_AWS_ENDPOINT", deploy.BlobstoreDefaultEndpoint()) setDefaultEnv(logger, "PRECISE_CODE_INTEL_UPLOAD_BACKEND", "blobstore") - setDefaultEnv(logger, "EMBEDDINGS_UPLOAD_AWS_ENDPOINT", "http://localhost:9000") + setDefaultEnv(logger, "EMBEDDINGS_UPLOAD_AWS_ENDPOINT", deploy.BlobstoreDefaultEndpoint()) // Need to override this because without a host (eg ":3080") it listens only on localhost, which // is not accessible from the containers