diff --git a/cmd/cart/main.go b/cmd/cart/main.go index e1e8601..bb8b84f 100644 --- a/cmd/cart/main.go +++ b/cmd/cart/main.go @@ -159,6 +159,15 @@ func main() { // go diskStorage.SaveLoop(10 * time.Second) UseDiscovery(pool) + sigs := make(chan os.Signal, 1) + done := make(chan bool, 1) + signal.Notify(sigs, syscall.SIGTERM) + + otelShutdown, err := setupOTelSDK(context.Background()) + if err != nil { + log.Fatalf("Unable to start otel %v", err) + } + mux.Handle("/cart/", http.StripPrefix("/cart", syncedServer.Serve())) // only for local mux.HandleFunc("GET /add/remote/{host}", func(w http.ResponseWriter, r *http.Request) { @@ -203,15 +212,6 @@ func main() { mux.HandleFunc("/openapi.json", ServeEmbeddedOpenAPI) - sigs := make(chan os.Signal, 1) - done := make(chan bool, 1) - signal.Notify(sigs, syscall.SIGTERM) - - otelShutdown, err := setupOTelSDK(context.Background()) - if err != nil { - log.Fatalf("Unable to start otel %v", err) - } - go func() { sig := <-sigs fmt.Println("Shutting down due to signal:", sig) diff --git a/cmd/cart/pool-server.go b/cmd/cart/pool-server.go index aafc50e..4aa063f 100644 --- a/cmd/cart/pool-server.go +++ b/cmd/cart/pool-server.go @@ -20,6 +20,7 @@ import ( "go.opentelemetry.io/contrib/bridges/otelslog" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" ) var ( @@ -452,16 +453,18 @@ func CartIdHandler(fn func(cartId cart.CartId, w http.ResponseWriter, r *http.Re func (s *PoolServer) ProxyHandler(fn func(w http.ResponseWriter, r *http.Request, cartId cart.CartId) error) func(cartId cart.CartId, w http.ResponseWriter, r *http.Request) error { return func(cartId cart.CartId, w http.ResponseWriter, r *http.Request) error { if ownerHost, ok := s.OwnerHost(uint64(cartId)); ok { - ctx, span := tracer.Start(r.Context(), "proxy") + _, span := tracer.Start(r.Context(), "proxy") defer span.End() + span.SetAttributes(attribute.String("other host", ownerHost.Name())) handled, err := ownerHost.Proxy(uint64(cartId), w, r) - logger.InfoContext(ctx, fmt.Sprintf("owner host %s", ownerHost.Name())) + grainLookups.Inc() if err == nil && handled { return nil } } - + _, span := tracer.Start(r.Context(), "own") + defer span.End() return fn(w, r, cartId) } @@ -594,16 +597,16 @@ func (s *PoolServer) Serve() *http.ServeMux { //mux.HandleFunc("GET /checkout", CookieCartIdHandler(s.ProxyHandler(s.HandleCheckout))) //mux.HandleFunc("GET /confirmation/{orderId}", CookieCartIdHandler(s.ProxyHandler(s.HandleConfirmation))) - handleFunc("GET /byid/{id}", CartIdHandler(s.ProxyHandler(s.GetCartHandler))) - handleFunc("GET /byid/{id}/add/{sku}", CartIdHandler(s.ProxyHandler(s.AddSkuToCartHandler))) - handleFunc("POST /byid/{id}", CartIdHandler(s.ProxyHandler(s.AddSkuRequestHandler))) - handleFunc("DELETE /byid/{id}/{itemId}", CartIdHandler(s.ProxyHandler(s.DeleteItemHandler))) - handleFunc("PUT /byid/{id}", CartIdHandler(s.ProxyHandler(s.QuantityChangeHandler))) - handleFunc("POST /byid/{id}/delivery", CartIdHandler(s.ProxyHandler(s.SetDeliveryHandler))) - handleFunc("DELETE /byid/{id}/delivery/{deliveryId}", CartIdHandler(s.ProxyHandler(s.RemoveDeliveryHandler))) - handleFunc("PUT /byid/{id}/delivery/{deliveryId}/pickupPoint", CartIdHandler(s.ProxyHandler(s.SetPickupPointHandler))) - handleFunc("PUT /byid/{id}/voucher", CookieCartIdHandler(s.ProxyHandler(s.AddVoucherHandler))) - handleFunc("DELETE /byid/{id}/voucher/{voucherId}", CookieCartIdHandler(s.ProxyHandler(s.RemoveVoucherHandler))) + mux.HandleFunc("GET /byid/{id}", CartIdHandler(s.ProxyHandler(s.GetCartHandler))) + mux.HandleFunc("GET /byid/{id}/add/{sku}", CartIdHandler(s.ProxyHandler(s.AddSkuToCartHandler))) + mux.HandleFunc("POST /byid/{id}", CartIdHandler(s.ProxyHandler(s.AddSkuRequestHandler))) + mux.HandleFunc("DELETE /byid/{id}/{itemId}", CartIdHandler(s.ProxyHandler(s.DeleteItemHandler))) + mux.HandleFunc("PUT /byid/{id}", CartIdHandler(s.ProxyHandler(s.QuantityChangeHandler))) + mux.HandleFunc("POST /byid/{id}/delivery", CartIdHandler(s.ProxyHandler(s.SetDeliveryHandler))) + mux.HandleFunc("DELETE /byid/{id}/delivery/{deliveryId}", CartIdHandler(s.ProxyHandler(s.RemoveDeliveryHandler))) + mux.HandleFunc("PUT /byid/{id}/delivery/{deliveryId}/pickupPoint", CartIdHandler(s.ProxyHandler(s.SetPickupPointHandler))) + mux.HandleFunc("PUT /byid/{id}/voucher", CookieCartIdHandler(s.ProxyHandler(s.AddVoucherHandler))) + mux.HandleFunc("DELETE /byid/{id}/voucher/{voucherId}", CookieCartIdHandler(s.ProxyHandler(s.RemoveVoucherHandler))) //mux.HandleFunc("GET /byid/{id}/checkout", CartIdHandler(s.ProxyHandler(s.HandleCheckout))) //mux.HandleFunc("GET /byid/{id}/confirmation", CartIdHandler(s.ProxyHandler(s.HandleConfirmation)))