From d00bf0c48cfc6267dece92d70c7ef9ea31761361 Mon Sep 17 00:00:00 2001 From: "Timothy St. Clair" Date: Tue, 20 Oct 2015 11:52:09 -0500 Subject: [PATCH] "Force events to be non-blocking on the client side" --- pkg/client/record/event.go | 5 ++++- pkg/client/record/event_test.go | 10 ++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pkg/client/record/event.go b/pkg/client/record/event.go index 09b11a4933e..5a6f73e1151 100644 --- a/pkg/client/record/event.go +++ b/pkg/client/record/event.go @@ -261,7 +261,10 @@ func (recorder *recorderImpl) generateEvent(object runtime.Object, timestamp unv event := recorder.makeEvent(ref, reason, message) event.Source = recorder.source - recorder.Action(watch.Added, event) + go func() { + // NOTE: events should be a non-blocking operation + recorder.Action(watch.Added, event) + }() } func (recorder *recorderImpl) Event(object runtime.Object, reason, message string) { diff --git a/pkg/client/record/event_test.go b/pkg/client/record/event_test.go index 4a551dc23d4..9de810b9a45 100644 --- a/pkg/client/record/event_test.go +++ b/pkg/client/record/event_test.go @@ -20,6 +20,7 @@ import ( "encoding/json" "fmt" "reflect" + "runtime" "strconv" "strings" "testing" @@ -28,7 +29,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/errors" client "k8s.io/kubernetes/pkg/client/unversioned" - "k8s.io/kubernetes/pkg/runtime" + k8sruntime "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util/strategicpatch" ) @@ -127,7 +128,7 @@ func TestEventf(t *testing.T) { t.Fatal(err) } table := []struct { - obj runtime.Object + obj k8sruntime.Object reason string messageFmt string elements []interface{} @@ -471,6 +472,7 @@ func TestWriteEventError(t *testing.T) { for caseName := range table { clock.Step(1 * time.Second) recorder.Event(ref, "Reason", caseName) + runtime.Gosched() } recorder.Event(ref, "Reason", "finished") <-done @@ -548,7 +550,7 @@ func TestEventfNoNamespace(t *testing.T) { t.Fatal(err) } table := []struct { - obj runtime.Object + obj k8sruntime.Object reason string messageFmt string elements []interface{} @@ -654,7 +656,7 @@ func TestMultiSinkCache(t *testing.T) { t.Fatal(err) } table := []struct { - obj runtime.Object + obj k8sruntime.Object reason string messageFmt string elements []interface{}