update
All checks were successful
Build and Publish / Metadata (push) Successful in 4s
Build and Publish / BuildAndDeployAmd64 (push) Successful in 47s
Build and Publish / BuildAndDeployArm64 (push) Successful in 4m18s

This commit is contained in:
matst80
2025-10-12 22:26:05 +02:00
parent b8266d80f9
commit b591e3d3f5
4 changed files with 69 additions and 77 deletions

View File

@@ -24,12 +24,8 @@ func NewPoolServer(pool *CartPool, pod_name string) *PoolServer {
}
}
func (s *PoolServer) process(id CartId, mutation interface{}) (*CartGrain, error) {
grain, err := s.pool.Apply(uint64(id), mutation)
if err != nil {
return nil, err
}
return grain, nil
func (s *PoolServer) ApplyLocal(id CartId, mutation interface{}) (*CartGrain, error) {
return s.pool.Apply(uint64(id), mutation)
}
func (s *PoolServer) HandleGet(w http.ResponseWriter, r *http.Request, id CartId) error {
@@ -43,7 +39,7 @@ func (s *PoolServer) HandleGet(w http.ResponseWriter, r *http.Request, id CartId
func (s *PoolServer) HandleAddSku(w http.ResponseWriter, r *http.Request, id CartId) error {
sku := r.PathValue("sku")
data, err := s.process(id, &messages.AddRequest{Sku: sku, Quantity: 1})
data, err := s.ApplyLocal(id, &messages.AddRequest{Sku: sku, Quantity: 1})
if err != nil {
return err
}
@@ -74,7 +70,7 @@ func (s *PoolServer) HandleDeleteItem(w http.ResponseWriter, r *http.Request, id
if err != nil {
return err
}
data, err := s.process(id, &messages.RemoveItem{Id: int64(itemId)})
data, err := s.ApplyLocal(id, &messages.RemoveItem{Id: int64(itemId)})
if err != nil {
return err
}
@@ -94,7 +90,7 @@ func (s *PoolServer) HandleSetDelivery(w http.ResponseWriter, r *http.Request, i
if err != nil {
return err
}
data, err := s.process(id, &messages.SetDelivery{
data, err := s.ApplyLocal(id, &messages.SetDelivery{
Provider: delivery.Provider,
Items: delivery.Items,
PickupPoint: delivery.PickupPoint,
@@ -117,7 +113,7 @@ func (s *PoolServer) HandleSetPickupPoint(w http.ResponseWriter, r *http.Request
if err != nil {
return err
}
reply, err := s.process(id, &messages.SetPickupPoint{
reply, err := s.ApplyLocal(id, &messages.SetPickupPoint{
DeliveryId: int64(deliveryId),
Id: pickupPoint.Id,
Name: pickupPoint.Name,
@@ -139,7 +135,7 @@ func (s *PoolServer) HandleRemoveDelivery(w http.ResponseWriter, r *http.Request
if err != nil {
return err
}
reply, err := s.process(id, &messages.RemoveDelivery{Id: int64(deliveryId)})
reply, err := s.ApplyLocal(id, &messages.RemoveDelivery{Id: int64(deliveryId)})
if err != nil {
return err
}
@@ -152,7 +148,7 @@ func (s *PoolServer) HandleQuantityChange(w http.ResponseWriter, r *http.Request
if err != nil {
return err
}
reply, err := s.process(id, &changeQuantity)
reply, err := s.ApplyLocal(id, &changeQuantity)
if err != nil {
return err
}
@@ -165,7 +161,7 @@ func (s *PoolServer) HandleSetCartItems(w http.ResponseWriter, r *http.Request,
if err != nil {
return err
}
reply, err := s.process(id, &setCartItems)
reply, err := s.ApplyLocal(id, &setCartItems)
if err != nil {
return err
}
@@ -178,7 +174,7 @@ func (s *PoolServer) HandleAddRequest(w http.ResponseWriter, r *http.Request, id
if err != nil {
return err
}
reply, err := s.process(id, &addRequest)
reply, err := s.ApplyLocal(id, &addRequest)
if err != nil {
return err
}
@@ -365,14 +361,10 @@ func (s *PoolServer) ProxyHandler(fn func(w http.ResponseWriter, r *http.Request
return func(cartId CartId, w http.ResponseWriter, r *http.Request) error {
if ownerHost, ok := s.pool.OwnerHost(uint64(cartId)); ok {
handled, err := ownerHost.Proxy(uint64(cartId), w, r)
if err != nil {
log.Printf("proxy failed: %v, taking ownership", err)
s.pool.TakeOwnership(uint64(cartId))
} else if handled {
if err == nil && handled {
return nil
}
}
// Local ownership or no owner known, proceed with local handling
return fn(w, r, cartId)