You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by pe...@apache.org on 2025/03/10 15:39:15 UTC

(cloudstack) branch 4.20 updated: Fix Stats Collector to not divide by zero (#10492)

This is an automated email from the ASF dual-hosted git repository.

pearl11594 pushed a commit to branch 4.20
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.20 by this push:
     new 54c1f92efd2 Fix Stats Collector to not divide by zero (#10492)
54c1f92efd2 is described below

commit 54c1f92efd2664d5316c67c451e69e97f880a5f3
Author: Lucas Martins <56...@users.noreply.github.com>
AuthorDate: Mon Mar 10 12:39:08 2025 -0300

    Fix Stats Collector to not divide by zero (#10492)
    
    * Set loadHistory value to zero when interval is zero to not throw arithmatic exception
    
    * Change loadHistory value to -1 and fix maxsize bug
    
    ---------
    
    Co-authored-by: Lucas Martins <lu...@scclouds.com.br>
---
 server/src/main/java/com/cloud/server/StatsCollector.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/server/src/main/java/com/cloud/server/StatsCollector.java b/server/src/main/java/com/cloud/server/StatsCollector.java
index 5934716da66..27ac0bb725d 100644
--- a/server/src/main/java/com/cloud/server/StatsCollector.java
+++ b/server/src/main/java/com/cloud/server/StatsCollector.java
@@ -718,10 +718,10 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc
                  getDynamicDataFromDB();
                  long interval = (Long) dbStats.get(uptime) - lastUptime;
                  long activity = (Long) dbStats.get(queries) - lastQueries;
-                 loadHistory.add(0, Double.valueOf(activity / interval));
+                 loadHistory.add(0, interval == 0 ? -1 : Double.valueOf(activity / interval));
                  int maxsize = DATABASE_SERVER_LOAD_HISTORY_RETENTION_NUMBER.value();
                  while (loadHistory.size() > maxsize) {
-                     loadHistory.remove(maxsize - 1);
+                     loadHistory.remove(maxsize);
                  }
              } catch (Throwable e) {
                  // pokemon catch to make sure the thread stays running