Skip to content

Instantly share code, notes, and snippets.

@flopex
Created March 7, 2023 19:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save flopex/1c55053b9ce291ec4290e92b221b79e2 to your computer and use it in GitHub Desktop.
Save flopex/1c55053b9ce291ec4290e92b221b79e2 to your computer and use it in GitHub Desktop.
Vitess Patch to allow vttablets to bind to specific addresses.
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