Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EbpfTracker refactoring / cleanup #2699

Merged
merged 11 commits into from
Jul 11, 2017
Merged

EbpfTracker refactoring / cleanup #2699

merged 11 commits into from
Jul 11, 2017

Conversation

rade
Copy link
Member

@rade rade commented Jul 10, 2017

a bunch of refactors, and race condition fixes.

Best reviewed commit-by-commit.

@rade rade changed the title ebpf tr EbpfTracker refactoring / cleanup Jul 10, 2017
@rade rade requested a review from 2opremio July 10, 2017 10:11
func (t *connectionTracker) existingFlows() map[string]fourTuple {
seenTuples := map[string]fourTuple{}
if !t.conf.UseConntrack {
log.Warnf("Not using conntrack: disabled")

This comment was marked as abuse.

This comment was marked as abuse.

rade added 9 commits July 11, 2017 19:37
when we got an fd install event but the pid was dead by time we
processed it, we would fail to remove the watcher for that pid from
the fdinstall_pids table.

This is a minor, and bounded, leak, since the table only contains pids
that were alive when we initialized ebpf. And this change only plugs
that leak very partially, since we will never remove pids that die
while sitting in accept().
We were enabling event processing before feeding in the initial
connections, which results in a non-deterministic outcome.
Without synchronisation, the isDead() call might return a stale value,
delaying deadness detection potentially indefinitely.

Without the guards / idempotence in .stop(), invoking stop() more than
once could cause a panic, since tracer.Stop() closes a channel (which
panics on a closed channel). Multiple stop() invocations are rare, but
not impossible.
@rade rade merged commit 25a1a5f into master Jul 11, 2017
@dlespiau dlespiau deleted the ebpf-refactor branch November 2, 2017 12:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants