Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions cmd_mem.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"os"
"strconv"
"strings"
"sync"
"text/tabwriter"

"github.com/kr/logfmt"
Expand Down Expand Up @@ -220,6 +221,12 @@ type memRawEvent struct {
Type string
}

var memRawEventPool = sync.Pool{
New: func() any {
return &memRawEvent{}
},
}

var ErrUnknownMemField = errors.New("unknown mem field")

func (e *memRawEvent) HandleLogfmt(key []byte, val []byte) (err error) {
Expand Down Expand Up @@ -271,12 +278,16 @@ func memJSONParseThenAppend(r io.Reader, appendRow memAppendRowFn) error {
if err != nil {
return errors.Wrap(err, "failed to get 'printf' data as string")
}
var e memRawEvent
err = logfmt.Unmarshal(buf, &e)
e := memRawEventPool.Get().(*memRawEvent)
*e = memRawEvent{}
err = logfmt.Unmarshal(buf, e)
if err != nil {
memRawEventPool.Put(e)
return errors.Wrap(err, "failed to unmarshal logfmt data")
}
return appendRow(&e)
err = appendRow(e)
memRawEventPool.Put(e)
return err
default:
log.Warn().Str("type", msgType).Msg("Unknown message type, skipping")
}
Expand Down
17 changes: 14 additions & 3 deletions cmd_net.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"os"
"strconv"
"strings"
"sync"
"text/tabwriter"

"github.com/kr/logfmt"
Expand Down Expand Up @@ -240,6 +241,12 @@ type netRawEvent struct {
Protocol string
}

var netRawEventPool = sync.Pool{
New: func() any {
return &netRawEvent{}
},
}

var ErrUnknownNetField = errors.New("unknown net field")

func (e *netRawEvent) HandleLogfmt(key []byte, val []byte) (err error) {
Expand Down Expand Up @@ -301,12 +308,16 @@ func netJSONParseThenAppend(r io.Reader, appendRow netAppendRowFn) error {
if err != nil {
return errors.Wrap(err, "failed to get 'printf' data as string")
}
var e netRawEvent
err = logfmt.Unmarshal(buf, &e)
e := netRawEventPool.Get().(*netRawEvent)
*e = netRawEvent{}
err = logfmt.Unmarshal(buf, e)
if err != nil {
netRawEventPool.Put(e)
return errors.Wrap(err, "failed to unmarshal logfmt data")
}
return appendRow(&e)
err = appendRow(e)
netRawEventPool.Put(e)
return err
default:
log.Warn().Str("type", msgType).Msg("Unknown message type, skipping")
}
Expand Down
17 changes: 14 additions & 3 deletions cmd_proc.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"os"
"strconv"
"strings"
"sync"
"text/tabwriter"

"github.com/kr/logfmt"
Expand Down Expand Up @@ -220,6 +221,12 @@ type procRawEvent struct {
ExitCode int64
}

var procRawEventPool = sync.Pool{
New: func() any {
return &procRawEvent{}
},
}

var ErrUnknownProcField = errors.New("unknown proc field")

func (e *procRawEvent) HandleLogfmt(key []byte, val []byte) (err error) {
Expand Down Expand Up @@ -271,12 +278,16 @@ func procJSONParseThenAppend(r io.Reader, appendRow procAppendRowFn) error {
if err != nil {
return errors.Wrap(err, "failed to get 'printf' data as string")
}
var e procRawEvent
err = logfmt.Unmarshal(buf, &e)
e := procRawEventPool.Get().(*procRawEvent)
*e = procRawEvent{}
err = logfmt.Unmarshal(buf, e)
if err != nil {
procRawEventPool.Put(e)
return errors.Wrap(err, "failed to unmarshal logfmt data")
}
return appendRow(&e)
err = appendRow(e)
procRawEventPool.Put(e)
return err
default:
log.Warn().Str("type", msgType).Msg("Unknown message type, skipping")
}
Expand Down
17 changes: 14 additions & 3 deletions cmd_syscall.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"sort"
"strconv"
"strings"
"sync"
"text/tabwriter"

"github.com/kr/logfmt"
Expand Down Expand Up @@ -230,6 +231,12 @@ type syscallRawEvent struct {
ReturnValue int64
}

var syscallRawEventPool = sync.Pool{
New: func() any {
return &syscallRawEvent{}
},
}

var ErrUnknownSyscallField = errors.New("unknown syscall field")

func (e *syscallRawEvent) HandleLogfmt(key []byte, val []byte) (err error) {
Expand Down Expand Up @@ -296,12 +303,16 @@ func syscallJSONParseThenAppend(r io.Reader, appendRow syscallAppendRowFn) error
if err != nil {
return errors.Wrap(err, "failed to get 'printf' data as string")
}
var e syscallRawEvent
err = logfmt.Unmarshal(buf, &e)
e := syscallRawEventPool.Get().(*syscallRawEvent)
*e = syscallRawEvent{}
err = logfmt.Unmarshal(buf, e)
if err != nil {
syscallRawEventPool.Put(e)
return errors.Wrap(err, "failed to unmarshal logfmt data")
}
return appendRow(&e)
err = appendRow(e)
syscallRawEventPool.Put(e)
return err
default:
log.Warn().Str("type", msgType).Msg("Unknown message type, skipping")
}
Expand Down
25 changes: 19 additions & 6 deletions cmd_vfs_raw.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"os"
"strconv"
"strings"
"sync"
"time"

"github.com/kr/logfmt"
Expand Down Expand Up @@ -42,6 +43,12 @@ type vfsEvent struct {
Length uint64
}

var vfsEventPool = sync.Pool{
New: func() any {
return &vfsEvent{}
},
}

var ErrUnknownField = errors.New("unknown field")

func (e *vfsEvent) HandleLogfmt(key []byte, val []byte) (err error) {
Expand Down Expand Up @@ -104,12 +111,15 @@ func simpleParseThenAppend(r io.Reader, appendRow appendRowFn) error {
p := len(printfKeyword)
data := line[p : len(line)-len(`"}`)]
_ = data
var e vfsEvent
err := logfmt.Unmarshal([]byte(data), &e)
e := vfsEventPool.Get().(*vfsEvent)
*e = vfsEvent{}
err := logfmt.Unmarshal([]byte(data), e)
if err != nil {
vfsEventPool.Put(e)
return err
}
err = appendRow(&e)
err = appendRow(e)
vfsEventPool.Put(e)
if err != nil {
return err
}
Expand Down Expand Up @@ -213,12 +223,15 @@ func jsonParseThenAppend(r io.Reader, appendRow appendRowFn) error {
if err != nil {
return errors.Wrap(err, "failed to get 'printf' data as string")
}
var e vfsEvent
err = logfmt.Unmarshal(buf, &e)
e := vfsEventPool.Get().(*vfsEvent)
*e = vfsEvent{}
err = logfmt.Unmarshal(buf, e)
if err != nil {
vfsEventPool.Put(e)
return errors.Wrap(err, "failed to unmarshal logfmt data")
}
err = appendRow(&e)
err = appendRow(e)
vfsEventPool.Put(e)
if err != nil {
return errors.Wrap(err, "failed to append row")
}
Expand Down
Loading