MCPcopy
hub / github.com/kubernetes/client-go / recordEvent

Function recordEvent

tools/events/event_broadcaster.go:201–244  ·  view source on GitHub ↗
(sink EventSink, event *v1beta1.Event)

Source from the content-addressed store, hash-verified

199}
200
201func recordEvent(sink EventSink, event *v1beta1.Event) (*v1beta1.Event, bool) {
202 var newEvent *v1beta1.Event
203 var err error
204 isEventSeries := event.Series != nil
205 if isEventSeries {
206 patch, err := createPatchBytesForSeries(event)
207 if err != nil {
208 klog.Errorf("Unable to calculate diff, no merge is possible: %v", err)
209 return nil, false
210 }
211 newEvent, err = sink.Patch(event, patch)
212 }
213 // Update can fail because the event may have been removed and it no longer exists.
214 if !isEventSeries || (isEventSeries && util.IsKeyNotFoundError(err)) {
215 // Making sure that ResourceVersion is empty on creation
216 event.ResourceVersion = ""
217 newEvent, err = sink.Create(event)
218 }
219 if err == nil {
220 return newEvent, false
221 }
222 // If we can't contact the server, then hold everything while we keep trying.
223 // Otherwise, something about the event is malformed and we should abandon it.
224 switch err.(type) {
225 case *restclient.RequestConstructionError:
226 // We will construct the request the same next time, so don't keep trying.
227 klog.Errorf("Unable to construct event '%#v': '%v' (will not retry!)", event, err)
228 return nil, false
229 case *errors.StatusError:
230 if errors.IsAlreadyExists(err) {
231 klog.V(5).Infof("Server rejected event '%#v': '%v' (will not retry!)", event, err)
232 } else {
233 klog.Errorf("Server rejected event '%#v': '%v' (will not retry!)", event, err)
234 }
235 return nil, false
236 case *errors.UnexpectedObjectError:
237 // We don't expect this; it implies the server's response didn't match a
238 // known pattern. Go ahead and retry.
239 default:
240 // This case includes actual http transport errors. Go ahead and retry.
241 }
242 klog.Errorf("Unable to write event: '%v' (may retry after sleeping)", err)
243 return nil, true
244}
245
246func createPatchBytesForSeries(event *v1beta1.Event) ([]byte, error) {
247 oldEvent := event.DeepCopy()

Callers 3

finishSeriesMethod · 0.70
attemptRecordingMethod · 0.70

Calls 5

IsKeyNotFoundErrorFunction · 0.92
ErrorfMethod · 0.65
PatchMethod · 0.65
CreateMethod · 0.65

Tested by

no test coverage detected