Răsfoiți Sursa

Clean up ingest health endpoint call, add telemetry and error checks

Mauricio Araujo 2 ani în urmă
părinte
comite
dfd7530143
1 a modificat fișierele cu 26 adăugiri și 9 ștergeri
  1. 26 9
      api/server/handlers/billing/ingest.go

+ 26 - 9
api/server/handlers/billing/ingest.go

@@ -3,6 +3,7 @@ package billing
 
 import (
 	"bytes"
+	"context"
 	"encoding/json"
 	"fmt"
 	"net/http"
@@ -82,28 +83,44 @@ func (c *IngestEventsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
 		return
 	}
 
+	// Call the ingest health endpoint
+	err = c.postIngestHealthEndpoint(ctx, proj.ID)
+	if err != nil {
+		err := telemetry.Error(ctx, span, err, "error calling ingest health endpoint")
+		c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
+		return
+	}
+
+	c.WriteResult(w, r, "")
+}
+
+func (c *IngestEventsHandler) postIngestHealthEndpoint(ctx context.Context, projectID uint) (err error) {
+	ctx, span := telemetry.NewSpan(ctx, "post-ingest-health-endpoint")
+	defer span.End()
+
 	// Call the ingest check webhook
 	webhookUrl := c.Config().ServerConf.IngestStatusWebhookUrl
+	telemetry.WithAttributes(span, telemetry.AttributeKV{Key: "ingest-status-webhook-url", Value: webhookUrl})
+
+	if webhookUrl == "" {
+		return nil
+	}
+
 	req := struct {
 		ProjectID uint `json:"project_id"`
 	}{
-		ProjectID: proj.ID,
+		ProjectID: projectID,
 	}
 
 	reqBody, err := json.Marshal(req)
 	if err != nil {
-		err := telemetry.Error(ctx, span, err, "error marshalling ingest status webhook request")
-		c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
-		return
+		return telemetry.Error(ctx, span, err, "error marshalling ingest status webhook request")
 	}
 
 	client := &http.Client{}
 	resp, err := client.Post(webhookUrl, "application/json", bytes.NewBuffer(reqBody))
 	if err != nil || resp.StatusCode != http.StatusOK {
-		err := telemetry.Error(ctx, span, err, "error sending ingest status webhook request")
-		c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
-		return
+		return telemetry.Error(ctx, span, err, "error sending ingest status webhook request")
 	}
-
-	c.WriteResult(w, r, "")
+	return nil
 }