Commit graph

9501 commits

Author SHA1 Message Date
Jon Siwek
43e54c7930 GH-780: Prevent log batches from indefinite buffering
Logs that got sent sparsely or burstily would get buffered for long
periods of time since the logic to flush them only does so on the next
log write.  In the worst case, a subsequent log write could never happen
and cause a log entry to be indefinitely buffered.

This fix introduces a recurring event/timer to simply flush all pending
logs at frequency of Broker::log_batch_interval.
2020-02-05 13:06:52 -08:00
Jon Siwek
0de6bba95e Merge remote-tracking branch 'origin/topic/johanna/692'
* origin/topic/johanna/692:
  Resolve race condition in test
  Change threading formatter errors to warnings.
2020-02-05 10:52:39 -08:00
Johanna Amann
50ebbc90ad Resolve race condition in test 2020-02-05 09:34:29 -08:00
Johanna Amann
deaab42187 Change threading formatter errors to warnings.
This change standardizes threading formatter error handling and moves
the remaining error calls to be warnings instead.

This is in line with already existing code - in most cases warnings were
raised, only a few cases raised errors. These cases do not differ
significantly from other cases in which warnings are raised.

This also fixes GH-692, in which misformatted lines prevent future file
parsing.

This commit also moves the FailWarn method that is used by both the
config and the ascii reader up to the ReaderBackend. Furthermore it
makes the Warning method of ReaderBackend respect the warning
suppression that is introduced by the FailWarn method.
2020-02-04 16:31:29 -08:00
Tim Wojtulewicz
5171f25e3a Update NEWS about plugin breakage from the include-file changes 2020-02-04 14:15:14 -07:00
Tim Wojtulewicz
4a7da2669c Merge remote-tracking branch 'max/include_cleanup'
* max/include_cleanup:
  UID, ..: un-inline methods to reduce header dependencies
  include cleanup
2020-02-04 14:06:05 -07:00
Jon Siwek
99b1dccb8d Updating submodule(s).
[nomail]
2020-02-04 12:08:13 -08:00
Max Kellermann
6a815b4b06 UID, ..: un-inline methods to reduce header dependencies
Only 1% build time speedup, but still, it declutters the headers a bit.

Before this patch:

 2565.17user 141.83system 2:25.46elapsed 1860%CPU (0avgtext+0avgdata 1489076maxresident)k
 72576inputs+9130920outputs (1667major+49400430minor)pagefaults 0swaps

After this patch:

 2537.19user 142.94system 2:26.90elapsed 1824%CPU (0avgtext+0avgdata 1434268maxresident)k
 16240inputs+8887152outputs (1931major+48728888minor)pagefaults 0swaps
2020-02-04 20:51:02 +01:00
Max Kellermann
0db61f3094 include cleanup
The Zeek code base has very inconsistent #includes.  Many sources
included a few headers, and those headers included other headers, and
in the end, nearly everything is included everywhere, so missing
#includes were never noticed.  Another side effect was a lot of header
bloat which slows down the build.

First step to fix it: in each source file, its own header should be
included first to verify that each header's includes are correct, and
none is missing.

After adding the missing #includes, I replaced lots of #includes
inside headers with class forward declarations.  In most headers,
object pointers are never referenced, so declaring the function
prototypes with forward-declared classes is just fine.

This patch speeds up the build by 19%, because each compilation unit
gets smaller.  Here are the "time" numbers for a fresh build (with a
warm page cache but without ccache):

Before this patch:

 3144.94user 161.63system 3:02.87elapsed 1808%CPU (0avgtext+0avgdata 2168608maxresident)k
 760inputs+12008400outputs (1511major+57747204minor)pagefaults 0swaps

After this patch:

 2565.17user 141.83system 2:25.46elapsed 1860%CPU (0avgtext+0avgdata 1489076maxresident)k
 72576inputs+9130920outputs (1667major+49400430minor)pagefaults 0swaps
2020-02-04 20:51:02 +01:00
Robin Sommer
532c66df51 Updating submodule.
[nomail]
2020-02-04 11:58:06 +00:00
Jon Siwek
6d2a789243 Updating submodule(s).
[nomail]
2020-02-03 18:01:17 -08:00
Tim Wojtulewicz
37e0130461 Merge remote-tracking branch 'origin/topic/jsiwek/consistent-string-view-args'
* origin/topic/jsiwek/consistent-string-view-args:
  Change various functions to by-value std::string_view args
2020-02-03 15:44:28 -07:00
Tim Wojtulewicz
5aa8120259 Merge remote-tracking branch 'origin/topic/jsiwek/pktsrc-options'
* origin/topic/jsiwek/pktsrc-options:
  Change packet source fields of Options to std::optional
2020-02-03 15:42:48 -07:00
Johanna Amann
2129a808f6 Updating CHANGES and VERSION after messing up last commit message. 2020-02-03 13:25:57 -08:00
Johanna Amann
c20551e48e Update submodule
[nomail]
2020-02-03 13:23:22 -08:00
Jon Siwek
2cda94e8ee Disable Travis leak test
Travis environment doesn't offer enough memory for running ASan very
well, but Cirrus has it covered anyway.
2020-02-03 13:21:32 -08:00
Jon Siwek
d33613c2a5 Merge branch 'master' of https://github.com/ffontaine/zeek
- Also removed the setting of BinPAC_ROOT_DIR in the configure
  script's --with-binpac= option as that breaks the cross-compilation
  use-case

* 'master' of https://github.com/ffontaine/zeek:
  CMakeLists.txt: fix cross-compilation with binpac
2020-02-03 13:05:50 -08:00
Jon Siwek
1e2dd4466c Change requested memory in Cirrus CI config
The ASan build does require quite a bit more, but also the default
release builds should do ok with slightly less.
2020-02-03 10:11:46 -08:00
Jon Siwek
1df5793479 Merge remote-tracking branch 'origin/topic/timw/ioloop-followup'
* origin/topic/timw/ioloop-followup:
  Increase timeout value for live interfaces without file descriptors
  Use ranged-for loops in a few places in iosource Manager
  Change order of includes in iosource Manager, fixes build on FreeBSD 11
2020-02-03 10:04:26 -08:00
Tim Wojtulewicz
edb87821da Increase timeout value for live interfaces without file descriptors 2020-02-03 07:34:27 -07:00
Tim Wojtulewicz
efaa756539 Use ranged-for loops in a few places in iosource Manager 2020-02-03 07:34:27 -07:00
Tim Wojtulewicz
d12d0332a7 Change order of includes in iosource Manager, fixes build on FreeBSD 11 2020-02-01 19:23:17 -07:00
Fabrice Fontaine
63344b32f5 CMakeLists.txt: fix cross-compilation with binpac
When cross-compiling, BINPAC_EXE_PATH will be set by the user to the
host binpac binary which is fine however aux/binpac won't be built which
will raise a build failure as target binpac (headers, library) won't be
installed or built

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2020-02-01 14:38:17 +01:00
Jon Siwek
2f36113743 Change packet source fields of Options to std::optional 2020-01-31 15:41:23 -08:00
Jon Siwek
cd74d6f392 Change various functions to by-value std::string_view args 2020-01-31 15:08:48 -08:00
Jon Siwek
b0a5eb27b1 Updating submodule(s).
[nomail]
2020-01-31 14:19:21 -08:00
Jon Siwek
fa5b3bb91e Merge branch 'no_sscanf' of https://github.com/MaxKellermann/zeek
* 'no_sscanf' of https://github.com/MaxKellermann/zeek:
  util: optimize expand_escape() by avoiding sscanf()
2020-01-31 14:19:12 -08:00
Jon Siwek
d39bb42b14 Merge branch 'optimize_normalize_path' of https://github.com/MaxKellermann/zeek
- Minor changes in merge: extended unit test, prefer emplace_back(),
  remove unused "found" count in new function

* 'optimize_normalize_path' of https://github.com/MaxKellermann/zeek:
  util: add a tokenize_string() overload which returns string_views
  util: store std::string_view in "final_components" vector
  util: use "auto" in normalize_path()
  util: reserve space in normalize_path()
  util: skip "." completely in normalize_path()
  util: pass std::string_view to normalize_path()
  util: pass std::string_view to tokenize_string()
  util: don't modify the input string in tokenize_string()
2020-01-31 13:23:39 -08:00
Jon Siwek
719011cef0 Remove extra fmt() in a reporter->Error() call
Else compiler may warn about format string not being a string literal
2020-01-31 11:25:07 -08:00
Jon Siwek
0c68730b8b Merge branch 'fix-function-start-end-location' of https://github.com/awelzel/zeek
* 'fix-function-start-end-location' of https://github.com/awelzel/zeek:
  parse.y: Properly set location info for functions
2020-01-31 11:18:07 -08:00
Jon Siwek
e2e90ac477 Merge branch 'misc_cleanup' of https://github.com/MaxKellermann/zeek
- Minor code formatting change in merge

* 'misc_cleanup' of https://github.com/MaxKellermann/zeek:
  Desc: move realloc() call out of the loop
  SerializationFormat: move realloc() call out of the loop
  PacketDumper: remove unused types
2020-01-31 11:16:56 -08:00
Jon Siwek
077fdac332 Merge remote-tracking branch 'origin/topic/timw/264-alternative'
* origin/topic/timw/264-alternative:
  Add better error messaging when RegisterFd/UnregisterFd fail
  Update Supervisor code for the new IOSource API
  Show percentage of packets dropped in the final process output
  Update NEWS and docs submodule
  Remove concept of multiple timer managers
  Test changes caused by minor order-of-operation changes related to the new loop architecture
  Have terminate_processing() raise SIGTERM instead of calling the signal handler directly
  PktSrc iosource changes to match the new IOSource API
  Broker manager changes to match the new IOSource API and loop architecture
  DNS_Mgr changes to match the new IOSource API and loop architecture
  Threading changes for the new loop architecture
  Add Trigger manager for managing triggers created by things like 'when' statements
  Make TimerMgr an IOSource
  Modify IOSource Manager to implement new loop architecture
  Minor amount of code cleanup in Pcap IO source
  IOSource API changes for new loop architecture
  Type and variable usage cleanup in Net.h
  Remove #include of some iosource files from Net.h
  Only allow a single trace file (-r) or interface (-i) option on the command-line
  Remove CQ_TimerMgr in favor of PQ_TimerMgr
2020-01-31 11:04:27 -08:00
Tim Wojtulewicz
fea0339aca Add better error messaging when RegisterFd/UnregisterFd fail 2020-01-31 10:13:10 -07:00
Tim Wojtulewicz
0cfb115c1b Update Supervisor code for the new IOSource API 2020-01-31 10:13:10 -07:00
Tim Wojtulewicz
6ddcc87c48 Show percentage of packets dropped in the final process output 2020-01-31 10:13:10 -07:00
Tim Wojtulewicz
fda8e3fd79 Update NEWS and docs submodule 2020-01-31 10:13:10 -07:00
Tim Wojtulewicz
be42608b51 Remove concept of multiple timer managers
- All timers are now handled by a single global timer manager, which simplifies how they handled by the IOSource manager.
- This change flows down a number of changes to other parts of the code. The timer manager tag field is removed, which means that matching connections to a timer manager is also removed. This removes the ability to tag a connection as internal or external, since that's how the connections where differentiated. This in turn removes the `current_conns_extern` field from the `ConnStats` record type in the script layer.
2020-01-31 10:13:09 -07:00
Tim Wojtulewicz
2dcc936787 Test changes caused by minor order-of-operation changes related to the new loop architecture 2020-01-31 10:13:09 -07:00
Tim Wojtulewicz
a2a2ff325f Have terminate_processing() raise SIGTERM instead of calling the signal handler directly 2020-01-31 10:13:09 -07:00
Tim Wojtulewicz
4751783d56 PktSrc iosource changes to match the new IOSource API 2020-01-31 10:13:09 -07:00
Tim Wojtulewicz
c5462eaa80 Broker manager changes to match the new IOSource API and loop architecture 2020-01-31 10:13:09 -07:00
Tim Wojtulewicz
c4d9566294 DNS_Mgr changes to match the new IOSource API and loop architecture 2020-01-31 10:13:09 -07:00
Tim Wojtulewicz
8b9160fb7e Threading changes for the new loop architecture
- threading::Manager is no longer an IOSource.
- threading::MsgThread is now an IOSource. This allows threads themselves to signal when they have data to process instead of continually checking each of the threads on every loop pass.
- Make the thread heartbeat timer an actual timer and let it fire as necessary instead of checking to see if it should fire
2020-01-31 10:13:09 -07:00
Tim Wojtulewicz
a159d075cf Add Trigger manager for managing triggers created by things like 'when' statements
- Adds new trigger namespace
- Adds trigger::Manager class as a new IOSource for keeping track of triggers and integrating them into the loop. Previously the loop relied on the event manager Drain() method to process all triggers on every loop, but now that the loop actively waits for events to occur, triggers would not fire when they needed to. Adding them as part of the loop ensures they're checked.
2020-01-31 10:13:09 -07:00
Tim Wojtulewicz
92bde61b78 Make TimerMgr an IOSource
- This allows the loop to check what the next timeout is and use that as the basis for the timeout of the poll
- This commit also removes the TimerMgr::Tag type, since it causes a name clash with other code in IOSource
2020-01-31 10:13:09 -07:00
Tim Wojtulewicz
4fa3e4b9b4 Modify IOSource Manager to implement new loop architecture
- Removes entire FindSoonest method that includes all of the calls to select() for checking for ready sources
- Removes FD_Set checking against IOSources
- Adds system for registering and unregistering file descriptors from IOSources. This allows individual sources to mark themselves as ready to be checked by the loop as they become available.
- Adds entirely new loop architecture based on checking the IOSources for when their next timeout is, and then waiting for either that timeout or when the next source is ready. This also implements the polling based on what the OS supports, instead of just calling select() on all platforms. Currently it supports kqueue, epoll, and plain poll.
- Adds system for pinging the loop to force it to wake up
2020-01-31 10:13:09 -07:00
Tim Wojtulewicz
062cadb124 Minor amount of code cleanup in Pcap IO source 2020-01-31 09:34:54 -07:00
Tim Wojtulewicz
a00d11e44d IOSource API changes for new loop architecture
- Removed GetFD and NextTimestamp methods
- Removed concept of idle sources
- Renamed Init to InitSource to avoid a name clash with the thread code
- Added GetNextTimeout method

This commit also removes the FD_Set file since it's no longer used
2020-01-31 09:34:54 -07:00
Tim Wojtulewicz
eee2abf729 Type and variable usage cleanup in Net.h 2020-01-31 09:34:54 -07:00
Tim Wojtulewicz
fa9a568e8f Remove #include of some iosource files from Net.h 2020-01-31 09:34:54 -07:00