summaryrefslogtreecommitdiff
path: root/internal/event
AgeCommit message (Collapse)Author
7 daysfeat(parquet): export rename/link oldname + assert oldname capture end-to-endPaul Buetow
rename-family (rename/renameat/renameat2) and link-family (link/linkat/ symlink/symlinkat) capture BOTH paths in BPF (name_event.oldname at args[1] for the AT-variants, after a dirfd, plus newname), but only newname reached any persisted output. event.Pair.FileName() resolves to oldnameNewnameFile.Name() == Newname, so the parquet `file` column, CSV, and flamegraph Path all carried newname; the captured oldname survived only in the TUI stream String() repr ("old:... ->new:..."). The oldname capture (and its args[1] index for the AT-variants) was therefore never validated end-to-end, and a wrong-oldname-index regression would surface in no persisted output or test. Surface oldname as one additive, backward-compatible column, mirroring the dedicated optional-column convention (address_space_bytes, requested_sleep_ns, epoll_*): - old_file (String): source/old path for rename/link syscalls; empty for every other syscall. The existing `file` column keeps its semantics (newname for rename/link). Data flows name_event.oldname -> event.Pair.Oldname (populated in handleNameExit alongside the existing File) -> streamrow.Row.OldName -> parquet.Record.OldFile. Docs (docs/parquet-querying.md) and the Magefile parquetValidate column list updated in lockstep. The new TestRenameRenameatOldnameInParquet integration test exercises the renameat AT-variant (oldname at args[1] after the olddfd dirfd) and asserts the parquet old_file column carries renameat-old.txt while file carries renameat-new.txt, and that old_file stays empty for non-rename/ link rows -- locking in the args[1] oldname capture end-to-end. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
7 daysfeat(parquet): surface epoll_ctl op/target-fd/events metadataPaul Buetow
epoll_ctl's BPF handler already decodes the operation (args[1]), target descriptor (args[2]), and requested event mask (args[3]->events) into an EpollCtlEvent, but the single resolved-epfd `fd` column was the only epoll detail reaching the output schema. Consumers could not see which descriptor was registered nor the operation performed. Surface the metadata as three additive, backward-compatible columns, mirroring the existing dedicated optional-column convention used by requested_sleep_ns and address_space_bytes: - epoll_op (String): ADD/MOD/DEL, or the raw decimal for unknown ops; empty for non-epoll_ctl rows. - epoll_target_fd (Int32): registered descriptor (args[2]); 0 otherwise. - epoll_events (UInt32): requested event mask; 0 otherwise. Data flows EpollCtlEvent -> event.Pair (new EpollCtl/HasEpoll fields, populated in handleEpollCtlExit) -> streamrow.Row -> parquet.Record. The op-to-string mapping lives on event.EpollCtl.OpName. Docs (docs/parquet-querying.md) and the Magefile parquetValidate column list updated in lockstep (also adding the previously-undocumented address_space_bytes/requested_sleep_ns columns). The polling parquet integration test now asserts epoll_ctl rows carry a decoded op and a valid target fd, and that other syscalls leave epoll_op empty. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-20feat: add mount/fs management syscall tracing for c7Paul Buetow
2026-05-20task 27: add KindSleep and requested sleep metricPaul Buetow
2026-05-20task 07: add KindMem and separate address-space byte accountingPaul Buetow
2026-05-19z6: add KindPoll wiring for poll/select ready countsPaul Buetow
2026-05-19y6: add epoll ctl/wait tracing and ready-count coveragePaul Buetow
2026-05-19x6: add pipe/eventfd fd-from-air syscall supportPaul Buetow
2026-05-19v6: add KindAccept and wire accept/accept4Paul Buetow
2026-05-19u6: add socket/socketpair kind scaffolding and wiringPaul Buetow
2026-05-13add compile-time interface assertions for public types (task c4)Paul Buetow
Extend the var _ Interface = (*Concrete)(nil) coverage started in j3 to cover the remaining public types not yet guarded: - *file.FdFile → file.File (file/file.go) - streamrow.Row → globalfilter.Candidate (streamrow/row.go; adds globalfilter import — no cycle since globalfilter does not import streamrow) - *streamrow.RingBuffer → eventstream.Source (tui/eventstream/ringbuffer.go; already a type alias for streamrow.RingBuffer) - *probemanager.Manager → tui/probes.Manager (tui/probes/model.go) - All 9 generated *types.*Event types → event.Event in the new file internal/event/interface_assertions.go (non-generated, lives in the event package which already imports types, so no new import cycle) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13split Event interface into EventIdentity and EventLifecyclePaul Buetow
Extract GetTraceId/GetPid/GetTid into EventIdentity (routing and aggregation concerns) and Recycle into EventLifecycle (pool memory management). Event embeds both and retains String, GetTime, Equals. All existing implementations satisfy the composed interface unchanged. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13enforce gofmt formatting and add Fmt/FmtCheck mage targetsPaul Buetow
Run gofmt -w on 9 files that had minor alignment/whitespace drift (pair.go, filter.go, ior_mode_registry.go, ior_mode_test.go, runtime.go, engine.go, dashboard/model.go, flamegraph/model.go, flamegraph/renderer.go). Add two new Mage targets to Magefile.go: - `mage fmt` – rewrites all .go files in-place via go/format - `mage fmtCheck` – dry-run check; fails with a list of offending files, suitable as a CI gate Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13fix: guard Pair.CalculateDurations against uint64 underflow on clock skewPaul Buetow
BPF timestamps can be non-monotonic across CPUs (NTP step, TSC skew). When exit < enter or enter < prevPairTime the uint64 subtraction wraps to a huge value, corrupting latency histograms and flamegraph weights. Clamp both Duration and DurationToPrev to 0 instead of underflowing. Add TestPairCalculateDurationsNegativeDelta to cover this case. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18cleanupPaul Buetow
2026-03-10eventloop: bound pending enter and proc-fd caches (task 425)Paul Buetow
2026-03-06docs: add missing godoc comments for exported APIs (task 382)Paul Buetow
2026-03-06refactor: remove dot imports for internal types (task 382)Paul Buetow
2026-03-05Use fmt.Fprintf for event pair builder formattingPaul Buetow
2026-03-05Normalize Go import grouping with local ior sectionPaul Buetow
2026-03-05Add package-level docs across internal packagesPaul Buetow
2026-02-26tui: polish fd trace view key handling and docsPaul Buetow
2026-02-26tui: add fd trace drilldown and fd column in streamPaul Buetow
2026-02-24add docsPaul Buetow
2026-02-23tests: cover durationToPrev gap semanticsPaul Buetow
2026-02-23docs: define durationToPrev timing semanticsPaul Buetow
2026-02-21Add byte count tracking to event pairsPaul Buetow
Amp-Thread-ID: https://ampcode.com/threads/T-019c8012-eaeb-768d-a264-5a704f3939ef Co-authored-by: Amp <amp@ampcode.com>
2025-07-11Add comprehensive unit tests for FcntlEvent handlingPaul Buetow
- Implement helper function makeEnterFcntlEvent for test data creation - Add test for F_SETFL flag modification (temporarily disabled due to failure) - Add test for F_DUPFD file descriptor duplication - Add test for F_DUPFD_CLOEXEC with O_CLOEXEC flag - Add test for fcntl error handling (ret=-1) - Add test for invalid file descriptors Bug fixes: - Fix NewFdWithPid to properly initialize fd field - Fix event pair pool to properly clear all fields on recycle - Initialize all fields in NewPair to prevent stale data The F_SETFL test is temporarily disabled pending investigation of "expected a file.FdFile" panic during event processing. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-04-16add EqualsPaul Buetow
2025-04-16refactorPaul Buetow
2025-04-06refactorPaul Buetow
2025-04-06initial dumping in new ior data formatPaul Buetow
2025-03-29more on thisPaul Buetow
2025-03-29fixPaul Buetow
2025-03-26reformat outputPaul Buetow
2025-03-26initial io_ async tracepointsPaul Buetow
2025-03-20dont print out mismatchesPaul Buetow
2025-03-20pre-set mismatch to falsePaul Buetow
2025-03-16refactor directoriesPaul Buetow
2025-03-16printing out file flags in human mode... only open syscalls yetPaul Buetow
2025-03-15jo:xPaul Buetow
2025-03-11more on treePaul Buetow
2025-03-11refactor and initial treePaul Buetow