Conversation
📊 Performance Benchmark Report
📈 Detailed Results (All Benchmarks)
🎯 Performance Summary+ 1 improvement 🚀
23 unchanged ✅🔍 Significant Changes (>10%)
🐍 Python Version 3.11.15 |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## 3.0 #3038 +/- ##
=====================================
- Coverage 91% 91% -0%
=====================================
Files 440 440
Lines 37550 37563 +13
=====================================
+ Hits 33987 33992 +5
- Misses 3563 3571 +8 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This was intended functionality. graph importance is meant to override internal events, but not omitted ones. omitted ones should always be excluded from output, and that should never create orphans because the omitted event is skipped, preserving the parent chain. The mystery is why JS URLs specifically seem to be slipping through this system. |
Summary
Closes #1151
_is_graph_important()was rejecting events with_omit=Trueeven when they were marked as_graph_important=True. This caused graph orphans in JSON/neo4j output when an omitted event type (e.g. a JSURL_UNVERIFIED) was the parent of a non-omitted event (e.g.DNS_NAME).The
_omitcheck in_is_graph_important()was redundant — output modules without_preserve_graph(stdout, txt, csv) already returnFalsefrom_is_graph_important()becauseself.preserve_graphisFalse. Only modules with_preserve_graph=True(json, neo4j) use graph importance, and those are exactly the modules that need to accept omitted parents to prevent orphans.Fix
Remove
and not getattr(event, "_omit", False)from_is_graph_important().Test
Added test verifying that a
_preserve_graphoutput module accepts graph-important omitted events, while a non-_preserve_graphmodule still rejects them.