Skip to content

Commit 3ce4745

Browse files
committed
perf(event): Defer event metadata initialization
1 parent 37fda0e commit 3ce4745

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

pkg/event/event.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,9 @@ func NewFromCapture(buf []byte, ver capver.Version) (*Event, error) {
249249
func (e *Event) AddMeta(k MetadataKey, v any) {
250250
e.mmux.Lock()
251251
defer e.mmux.Unlock()
252+
if e.Metadata == nil {
253+
e.Metadata = make(map[MetadataKey]any)
254+
}
252255
e.Metadata[k] = v
253256
}
254257

@@ -267,13 +270,18 @@ func (e *Event) AddOrAppendMetaSlice(k MetadataKey, s string) {
267270
func (e *Event) RemoveMeta(k MetadataKey) {
268271
e.mmux.Lock()
269272
defer e.mmux.Unlock()
270-
delete(e.Metadata, k)
273+
if e.Metadata != nil {
274+
delete(e.Metadata, k)
275+
}
271276
}
272277

273278
// GetMetaAsString returns the metadata as a string value.
274279
func (e *Event) GetMetaAsString(k MetadataKey) string {
275280
e.mmux.RLock()
276281
defer e.mmux.RUnlock()
282+
if e.Metadata == nil {
283+
return ""
284+
}
277285
if v, ok := e.Metadata[k]; ok {
278286
if s, ok := v.(string); ok {
279287
return s
@@ -286,13 +294,19 @@ func (e *Event) GetMetaAsString(k MetadataKey) string {
286294
func (e *Event) GetMeta(k MetadataKey) any {
287295
e.mmux.RLock()
288296
defer e.mmux.RUnlock()
297+
if e.Metadata == nil {
298+
return ""
299+
}
289300
return e.Metadata[k]
290301
}
291302

292303
// ContainsMeta returns true if the metadata contains the specified key.
293304
func (e *Event) ContainsMeta(k MetadataKey) bool {
294305
e.mmux.RLock()
295306
defer e.mmux.RUnlock()
307+
if e.Metadata == nil {
308+
return false
309+
}
296310
return e.Metadata[k] != nil
297311
}
298312

pkg/event/event_windows.go

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,16 @@ func New(seq uint64, evt *etw.EventRecord) *Event {
5858
)
5959

6060
e := &Event{
61-
Seq: seq,
62-
PID: pid,
63-
Tid: tid,
64-
CPU: cpu,
65-
Type: typ,
66-
Category: typ.Category(),
67-
Name: typ.String(),
68-
Params: make(map[string]*Param),
69-
Description: typ.Description(),
70-
Timestamp: ts,
71-
Metadata: make(map[MetadataKey]any),
72-
Host: hostname.Get(),
61+
Seq: seq,
62+
PID: pid,
63+
Tid: tid,
64+
CPU: cpu,
65+
Type: typ,
66+
Category: typ.Category(),
67+
Name: typ.String(),
68+
Params: make(map[string]*Param),
69+
Timestamp: ts,
70+
Host: hostname.Get(),
7371
}
7472

7573
e.produceParams(evt)

0 commit comments

Comments
 (0)