diff --git a/runtime/v2/runc/v2/service.go b/runtime/v2/runc/v2/service.go index 39970b313..d3ea1e8ff 100644 --- a/runtime/v2/runc/v2/service.go +++ b/runtime/v2/runc/v2/service.go @@ -769,9 +769,7 @@ func (s *service) forward(ctx context.Context, publisher shim.Publisher) { ns, _ := namespaces.Namespace(ctx) ctx = namespaces.WithNamespace(context.Background(), ns) for e := range s.events { - ctx, cancel := context.WithTimeout(ctx, 5*time.Second) err := publisher.Publish(ctx, runc.GetTopic(e), e) - cancel() if err != nil { logrus.WithError(err).Error("post event") } diff --git a/runtime/v2/shim/publisher.go b/runtime/v2/shim/publisher.go index c5c4ecc15..cf27a6bc7 100644 --- a/runtime/v2/shim/publisher.go +++ b/runtime/v2/shim/publisher.go @@ -130,7 +130,9 @@ func (l *RemoteEventsPublisher) Publish(ctx context.Context, topic string, event func (l *RemoteEventsPublisher) forwardRequest(ctx context.Context, req *v1.ForwardRequest) error { service, err := l.client.EventsService() if err == nil { - _, err = service.Forward(ctx, req) + fCtx, cancel := context.WithTimeout(ctx, 5*time.Second) + _, err = service.Forward(fCtx, req) + cancel() if err == nil { return nil } @@ -149,7 +151,12 @@ func (l *RemoteEventsPublisher) forwardRequest(ctx context.Context, req *v1.Forw if err != nil { return err } - if _, err = service.Forward(ctx, req); err != nil { + + // try again with a fresh context, otherwise we may get a context timeout unexpectedly. + fCtx, cancel := context.WithTimeout(ctx, 5*time.Second) + _, err = service.Forward(fCtx, req) + cancel() + if err != nil { return err }