From d80a1aaf4bf5f443e0af30521e9bcef6d543fd7f Mon Sep 17 00:00:00 2001 From: Gabriel Paradiso Date: Thu, 13 Feb 2025 18:40:02 +0100 Subject: [PATCH] wip --- .../core/services/capability/capabilities.go | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/pkg/loop/internal/core/services/capability/capabilities.go b/pkg/loop/internal/core/services/capability/capabilities.go index f1e55c576..866bd5e20 100644 --- a/pkg/loop/internal/core/services/capability/capabilities.go +++ b/pkg/loop/internal/core/services/capability/capabilities.go @@ -216,6 +216,24 @@ func (t *triggerExecutableServer) RegisterTrigger(request *capabilitiespb.Trigge responseCh, err := t.impl.RegisterTrigger(server.Context(), req) if err != nil { return fmt.Errorf("error registering trigger: %w", err) + // we send the error back + msg := &capabilitiespb.TriggerResponseMessage{ + Message: &capabilitiespb.TriggerResponseMessage_Response{ + Response: &capabilitiespb.TriggerResponse{ + Error: err.Error(), + }, + }, + } + if err = server.Send(msg); err != nil { + return fmt.Errorf("error sending ERROR response for trigger %s: %w", request, err) + } + msg := &capabilitiespb.TriggerResponseMessage{ + Message: &capabilitiespb.TriggerResponseMessage_Response{ + Response: &capabilitiespb.TriggerResponse{}, + }, + } + if err = server.Send(msg); err != nil { + return fmt.Errorf("error sending ACK response for trigger %s: %w", request, err) } defer func() { @@ -268,6 +286,13 @@ func (t *triggerExecutableClient) RegisterTrigger(ctx context.Context, req capab responseStream, err := t.grpc.RegisterTrigger(ctx, pb.TriggerRegistrationRequestToProto(req)) if err != nil { return nil, fmt.Errorf("error registering trigger: %w", err) + ackMsg, err := responseStream.Recv() + if err != nil { + return nil, fmt.Errorf("failed to receive first registering trigger response: %w", err) + } + + if ackMsg.GetResponse().GetError() != "" { + return nil, errors.New(fmt.Sprintf("failed registering trigger: %s", ackMsg.GetResponse().GetError())) } return forwardTriggerResponsesToChannel(ctx, t.Logger, req, responseStream.Recv)