Bug #15373
closedFirewall Logs Dashboard widget update interval does not behave as expected
100%
Description
The update interval on the dashboard widget does not behave as expected. It appears to have a problem with any interval which is not a multiple of 5 seconds. This is because the user input interval is divided by 5 and set as the frequency, and then that value is run through a mod operation and only fires if the result is 0.
From log.widget.php
:
logsObject.freq = <?=$nentriesinterval?>/5;
From index.php
:
if (((ajaxcntr % freq) === 0) && (typeof ajaxspecs[ajaxidx].callback === "function" )) {
make_ajax_call(ajaxspecs[ajaxidx]);
}
Unless I'm misreading that code, it looks like unless the interval is a multiple of 5
the result of ajaxcntr % freq
could never be 0
.
So we either need to lock the input to multiples of 5, or fix that calculation so it sets a compatible value for freq
.
Files
Related issues
Updated by Jim Pingle 8 months ago
- Related to Bug #12673: Firewall Logs Dashboard Widget is slow and may fail to update added
Updated by Jim Pingle 6 months ago
- Plus Target Version changed from 24.07 to 24.08
Updated by Danilo Zrenjanin 5 months ago
- Status changed from New to Confirmed
Tested against:
24.03-RELEASE (amd64) built on Mon May 13 15:17:00 MSK 2024 FreeBSD 15.0-CURRENT
I was able to reproduce this. When I set the update interval to 9 seconds, the widget did not update for a few minutes. However, the setup worked as expected when I changed the interval to 10 seconds. Adding seconds to time records in the Firewall Logs Dashboard widget would be helpful.
Updated by Jim Pingle 2 months ago
- Related to Bug #15725: Dashboard widgets refresh at unintended intervals added
Updated by GChuf 6 2 months ago
- File firewall_log.png firewall_log.png added
I was also able to reproduce the problem.
From what I can tell you're reading the code correctly Jim ...
I think the obvious thing here is to get rid of the division. I don't think any other widgets divide the frequency input so modulo works as intended.
I applied the fix in this PR: https://github.com/pfsense/pfsense/pull/4699 and tested it (after I've applied the fixes in #15725).
I also made another commit to display seconds as suggested by Danilo, which seems very reasonable to me.
The widget seems to behave normally now (tested with 6 seconds, v2.7.2):
Updated by GChuf 6 about 2 months ago
- Status changed from Confirmed to Feedback
- % Done changed from 0 to 100
Applied in changeset 3d89c2dbe73fb081833700c49fec7004b120cd6a.
Updated by Jim Pingle about 2 months ago
- Subject changed from Firewall Logs Dashboard Widget update interval does not behave as expected to Firewall Logs Dashboard widget update interval does not behave as expected
Updated by Jim Pingle about 1 month ago
- Plus Target Version changed from 24.08 to 24.11
Updated by Christopher Cope about 1 month ago
- Status changed from Feedback to Resolved
Tested on
24.11-ALPHA (amd64) built on Fri Oct 18 15:52:00 UTC 2024 FreeBSD 15.0-CURRENT
It's refreshing correctly on all tested intervals, including ones not divisible by 5. Marking resolved.