Created
March 7, 2023 19:12
-
-
Save flopex/1c55053b9ce291ec4290e92b221b79e2 to your computer and use it in GitHub Desktop.
Vitess Patch to allow vttablets to bind to specific addresses.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/go/cmd/vttablet/vttablet.go b/go/cmd/vttablet/vttablet.go | |
index f9c43bd2a2..30d6564601 100644 | |
--- a/go/cmd/vttablet/vttablet.go | |
+++ b/go/cmd/vttablet/vttablet.go | |
@@ -136,6 +136,7 @@ func main() { | |
// tm uses ts. So, it should be closed after tm. | |
ts.Close() | |
}) | |
+ servenv.Address = tablet.Hostname | |
servenv.RunDefault() | |
} | |
diff --git a/go/vt/servenv/grpc_server.go b/go/vt/servenv/grpc_server.go | |
index 97749bf7ef..737ee4523b 100644 | |
--- a/go/vt/servenv/grpc_server.go | |
+++ b/go/vt/servenv/grpc_server.go | |
@@ -263,7 +263,7 @@ func interceptors() []grpc.ServerOption { | |
return interceptors.Build() | |
} | |
-func serveGRPC() { | |
+func serveGRPC(address string) { | |
if grpccommon.EnableGRPCPrometheus() { | |
grpc_prometheus.Register(GRPCServer) | |
grpc_prometheus.EnableHandlingTimeHistogram() | |
@@ -286,7 +286,7 @@ func serveGRPC() { | |
// listen on the port | |
log.Infof("Listening for gRPC calls on port %v", gRPCPort) | |
- listener, err := net.Listen("tcp", fmt.Sprintf(":%d", gRPCPort)) | |
+ listener, err := net.Listen("tcp", fmt.Sprintf("%v:%d", address, gRPCPort)) | |
if err != nil { | |
log.Exitf("Cannot listen on port %v for gRPC: %v", gRPCPort, err) | |
} | |
diff --git a/go/vt/servenv/run.go b/go/vt/servenv/run.go | |
index 82dfc285ef..8a9d896c89 100644 | |
--- a/go/vt/servenv/run.go | |
+++ b/go/vt/servenv/run.go | |
@@ -38,14 +38,14 @@ var ( | |
// Run starts listening for RPC and HTTP requests, | |
// and blocks until it the process gets a signal. | |
-func Run(port int) { | |
+func Run(address string, port int) { | |
populateListeningURL(int32(port)) | |
createGRPCServer() | |
onRunHooks.Fire() | |
- serveGRPC() | |
+ serveGRPC(address) | |
serveSocketFile() | |
- l, err := net.Listen("tcp", fmt.Sprintf(":%v", port)) | |
+ l, err := net.Listen("tcp", fmt.Sprintf("%v:%v", address, port)) | |
if err != nil { | |
log.Exit(err) | |
} | |
diff --git a/go/vt/servenv/servenv.go b/go/vt/servenv/servenv.go | |
index f0144359d7..840ab86099 100644 | |
--- a/go/vt/servenv/servenv.go | |
+++ b/go/vt/servenv/servenv.go | |
@@ -60,6 +60,7 @@ import ( | |
var ( | |
// port is part of the flags used when calling RegisterDefaultFlags. | |
port int | |
+ Address string | |
// mutex used to protect the Init function | |
mu sync.Mutex | |
@@ -103,6 +104,8 @@ func Init() { | |
mu.Lock() | |
defer mu.Unlock() | |
+ Address = "" | |
+ | |
// Ignore SIGPIPE if specified | |
// The Go runtime catches SIGPIPE for us on all fds except stdout/stderr | |
// See https://golang.org/pkg/os/signal/#hdr-SIGPIPE | |
@@ -253,7 +256,7 @@ func Port() int { | |
// RunDefault calls Run() with the parameters from the flags. | |
func RunDefault() { | |
- Run(port) | |
+ Run(Address, port) | |
} | |
var ( | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment