Skip to content

Flowtable thread sanitizer + fuzzer#1578

Open
sergeymatov wants to merge 4 commits into
mainfrom
pr/smatov/flowtable-sanitizer
Open

Flowtable thread sanitizer + fuzzer#1578
sergeymatov wants to merge 4 commits into
mainfrom
pr/smatov/flowtable-sanitizer

Conversation

@sergeymatov
Copy link
Copy Markdown
Contributor

No description provided.

sergeymatov and others added 3 commits June 1, 2026 14:10
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Sergey Matov <sergey.matov@githedgehog.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Sergey Matov <sergey.matov@githedgehog.com>
Signed-off-by: Sergey Matov <sergey.matov@githedgehog.com>
Copilot AI review requested due to automatic review settings June 1, 2026 10:25
@sergeymatov sergeymatov requested a review from a team as a code owner June 1, 2026 10:25
@sergeymatov sergeymatov requested review from daniel-noland and removed request for a team June 1, 2026 10:25
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds bolero-driven concurrent fuzz coverage for FlowTable, intended to surface data races under ThreadSanitizer and to explore interleavings under the shuttle concurrency backend. It also adds small test/fuzz-only hooks in net to support generating varied initial FlowStatus values.

Changes:

  • Add FlowInfo::new_with_status (test/bolero-only) plus a bolero TypeGenerator for FlowStatus in dataplane-net.
  • Add a new flow-entry unit-test module implementing concurrent fuzz tests for FlowTable (std/TSAN and shuttle variants).
  • Wire the new test module into flow-entry’s flow_table module under cfg(test).

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
net/src/flows/flow_info.rs Adds bolero/test-only constructor for explicit FlowStatus seeding and a bolero generator for FlowStatus.
flow-entry/src/flow_table/mod.rs Includes the new concurrent fuzz test module in test builds.
flow-entry/src/flow_table/concurrent_fuzz.rs Introduces concurrent fuzz tests for FlowTable (TSAN-oriented std mode + shuttle interleaving exploration).

Comment thread flow-entry/src/flow_table/concurrent_fuzz.rs
Comment thread flow-entry/src/flow_table/concurrent_fuzz.rs
@sergeymatov sergeymatov force-pushed the pr/smatov/flowtable-sanitizer branch 2 times, most recently from 0c49a51 to 90b752b Compare June 1, 2026 14:46
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Sergey Matov <sergey.matov@githedgehog.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

Comment on lines +419 to +429
pub fn new_with_status(flowkey: FlowKey, expires_at: Instant, status: FlowStatus) -> Self {
Self {
expires_at: AtomicInstant::new(expires_at),
flowkey,
genid: AtomicI64::new(0),
status: AtomicFlowStatus::from(status),
locked: RwLock::new(FlowInfoLocked::default()),
related: None,
token: CancellationToken::new(),
}
}
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's done on purpose - creation of the flow with new() will install flow to the DashMap and mark it as active. We want to play around with it's status a little

@sergeymatov sergeymatov requested a review from Fredi-raspall June 1, 2026 16:37
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