...

Source file src/edge-infra.dev/pkg/edge/datasync/chirp/server/http/readiness.go

Documentation: edge-infra.dev/pkg/edge/datasync/chirp/server/http

     1  package http
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  
     7  	dsHTTP "edge-infra.dev/pkg/edge/datasync/http"
     8  
     9  	"edge-infra.dev/pkg/edge/datasync/internal/config"
    10  )
    11  
    12  var isGRPCServerReady = false
    13  
    14  func NewReadinessServer(shouldRun chan bool, cfg *config.Config) *dsHTTP.Server {
    15  	serverMux := http.NewServeMux()
    16  
    17  	serverMux.HandleFunc("/readiness", readiness)
    18  
    19  	return dsHTTP.NewServer(cfg.ReadinessPort, serverMux, shouldRun)
    20  }
    21  
    22  func readiness(w http.ResponseWriter, _ *http.Request) {
    23  	if isServerReady() {
    24  		fmt.Fprintf(w, "up")
    25  		return
    26  	}
    27  
    28  	w.WriteHeader(http.StatusServiceUnavailable)
    29  	fmt.Fprintf(w, "not ready")
    30  }
    31  
    32  // isServerReady returns a boolean indicating the server is ready to accept requests. Chirp serves
    33  // an http server and a gRPC server. Since the readiness endpoint is served through the http server
    34  // and there are no downstream dependencies to check, we can imply the http server is up. We do not
    35  // need to explicitly check for http server readiness here.
    36  func isServerReady() bool {
    37  	return isGRPCServerReady
    38  }
    39  
    40  func SetIsGRPCServerReady(isReady bool) {
    41  	isGRPCServerReady = isReady
    42  }
    43  

View as plain text