diff --git a/backend/mpc-system/services/server-party-api/cmd/server/main.go b/backend/mpc-system/services/server-party-api/cmd/server/main.go index 578d965b..ae22f5cd 100644 --- a/backend/mpc-system/services/server-party-api/cmd/server/main.go +++ b/backend/mpc-system/services/server-party-api/cmd/server/main.go @@ -247,7 +247,9 @@ func createSessionEventHandler( // Automatically participate based on session type go func() { - ctx := context.Background() + // Use parent context to allow proper cancellation + participateCtx, cancel := context.WithTimeout(ctx, 5*time.Minute) + defer cancel() // Determine session type from event if event.EventType == "session_created" { @@ -264,7 +266,7 @@ func createSessionEventHandler( JoinToken: joinToken, } - result, err := participateKeygenUC.Execute(ctx, input) + result, err := participateKeygenUC.Execute(participateCtx, input) if err != nil { logger.Error("Keygen participation failed", zap.Error(err), @@ -285,7 +287,7 @@ func createSessionEventHandler( zap.Int("share_size", len(result.ShareForUser))) if err := messageRouter.SubmitDelegateShare( - ctx, + participateCtx, event.SessionId, partyID, result.ShareForUser, @@ -316,7 +318,7 @@ func createSessionEventHandler( // This will be passed through the session event or retrieved separately } - result, err := participateSigningUC.Execute(ctx, input) + result, err := participateSigningUC.Execute(participateCtx, input) if err != nil { logger.Error("Signing participation failed", zap.Error(err), diff --git a/backend/mpc-system/services/server-party/adapters/output/grpc/message_router_client.go b/backend/mpc-system/services/server-party/adapters/output/grpc/message_router_client.go index 4104ccbc..05241808 100644 --- a/backend/mpc-system/services/server-party/adapters/output/grpc/message_router_client.go +++ b/backend/mpc-system/services/server-party/adapters/output/grpc/message_router_client.go @@ -181,7 +181,8 @@ func (c *MessageRouterClient) SubscribeMessages( // Send acknowledgment for the received message go func(messageID, sessionIDStr, pID string) { - ackCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + // Use parent context to allow proper cancellation + ackCtx, cancel := context.WithTimeout(ctx, 5*time.Second) defer cancel() sid, _ := uuid.Parse(sessionIDStr) if err := c.AcknowledgeMessage(ackCtx, messageID, sid, pID, true, ""); err != nil {