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

Checking for valid CPU average values #97

Merged
merged 4 commits into from
Oct 26, 2018
Merged

Checking for valid CPU average values #97

merged 4 commits into from
Oct 26, 2018

Conversation

patschi
Copy link
Member

@patschi patschi commented Jun 1, 2017

Added sanity-checks to validate return values by sys_getloadavg() before finally using them. This fixes errors on JavaScript side when it returns 0 (zero/null) or any other unexpected values.
Should solve #90 point 1.

Signed-off-by: Patrik Kernstock <info@pkern.at>
Signed-off-by: Patrik Kernstock <info@pkern.at>
@patschi
Copy link
Member Author

patschi commented Jun 1, 2017

cc @schiessle @nickvergessen May anyone check this if it's okay?

if (!(is_array($loadavg) && count($loadavg) === 3)) {
// either no array or too few array keys.
// returning back zeroes to prevent any errors on JS side.
$loadavg = [0, 0, 0];
Copy link
Member

@schiessle schiessle Jun 8, 2017

Choose a reason for hiding this comment

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

wonder if it would make more sense to return a error code (maybe 'N/A' like we use for other statistics as well) and then hide the CPU Load in the web interface or display something like "not available". Otherwise it looks like everything is OK and the system load is just super low, something which makes probably every admin happy. 😉

Copy link
Member Author

Choose a reason for hiding this comment

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

Done! Similar as when failing to retrieve memory usage.
image

}

return [
'loadavg' => $loadavg
Copy link
Member

Choose a reason for hiding this comment

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

why do you put this in another array and don't return $loadavg directly?

Copy link
Member Author

Choose a reason for hiding this comment

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

To allow easier extending the information without breaking something on the JS side. To be more extensible for the future. when extending stats with more CPU graph lines someday (e.g. splitting up CPU usage in user, system, kernel or something like that). But I can remove array if you want.

*
* @return array load average with three values, 1/5/15 minutes average.
*/
protected function getProcessorUsage() {
Copy link
Member

Choose a reason for hiding this comment

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

Think this would be a nice method to write a small unit test.

patschi added 2 commits June 9, 2017 17:35
Signed-off-by: Patrik Kernstock <info@pkern.at>
The graphs gets hidden when invalid data ('N/A') gets delivered from the server-side. When valid data gets delivered without reloading page again, graphs are still hidden. Fixed.

Signed-off-by: Patrik Kernstock <info@pkern.at>
@patschi
Copy link
Member Author

patschi commented Jun 14, 2017

As requested I've added warning on the client-side if CPU average couldn't retrieved on the server-side.

@MorrisJobke MorrisJobke added this to the Nextcloud 14 milestone Aug 20, 2018
@nickvergessen nickvergessen requested review from schiessle and removed request for nickvergessen August 23, 2018 12:50
@MorrisJobke MorrisJobke mentioned this pull request Aug 30, 2018
6 tasks
@MorrisJobke
Copy link
Member

I will move this to 15 so @schiessle can have a look at this.

Copy link
Member

@MorrisJobke MorrisJobke left a comment

Choose a reason for hiding this comment

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

Code looks good 👍

@MorrisJobke MorrisJobke merged commit 743fe8c into nextcloud:master Oct 26, 2018
@joshtrichards joshtrichards mentioned this pull request Nov 21, 2023
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants