Bug cmd.class.php

bonjour,

Depouis qq temps j’avais des soucis de volume dsk qui augmenter sans cesse de 1 go ou plus par jour, apres investigation j’ai trouvé le coupable :slight_smile: les log apaches, 1.5 go de log , des millions de lignes, avec la même erreur portant sur la ligne 1674 de cmd.class.php.

En fait il manque un contrôle

if ($cmdValue->execCmd() == $coupleArray[0] || $cmdValue->execCmd() == $coupleArray[1]) {

Si le premier segment n’existe pas, cela provoque une erreur apparemment sans incidences autres que celle de gonfler le log.

en mettant

if ($cmdValue->execCmd() == $coupleArray[0] || (isset($coupleArray[1]) && $cmdValue->execCmd() == $coupleArray[1])) {
    if (isset($coupleArray[1])) {

tout rentre dans l’ordre

A remarquer que qq lignes plus loin on a bien

} else { if (isset($coupleArray[1])) {

La, le contrôle est bien en place

Depuis les logs d’apache sont tout calme :slight_smile: et jeedom respire nettement mieux malgré la chaleur !!!

1 « J'aime »

Pourqou ne pas proposer la modification sur le github ?

Vous devez avoir une cmd de type action sous-type liste pour laquelle vous n’avez pas respecté la spécification lors de la construction de la liste:

val1|texte1;val2|texte2 ....
1 « J'aime »

Bonsoir,

Il y a déja un PR en attente sur cette partie, je sais pas si celui-ci résout aussi ce cas.

Même avis que jpty, tu dois avoir une liste mal configurée.

Pas trop envie de me plonger dans les subtilités du github pour une petite modif :frowning:

Autant chercher une aiguille dans une botte de foin :frowning:

Oui mais c’est la méthode la plus sur en fait.

Antoine

Bonjour,
Vous avez trouvé ce qu’il fallait corriger dans le source. Il suffit de mettre un message dans le code pour avoir l’ID de la commande …

		if ($this->getConfiguration('listValue', '') != '') {
			$listOption = '';
			$elements = explode(';', $this->getConfiguration('listValue', ''));
			$foundSelect = false;
			foreach ($elements as $element) {
				$coupleArray = explode('|', $element);
if(count($coupleArray) != 2) 
  message::add(__CLASS__, "EqLogic: [" .$this->getEqLogic()->getName() ."] CmdId: " .$this->getId() ." Erreur in listValue:[" .$element ."]");
				$cmdValue = $this->getCmdValue();
				if (is_object($cmdValue) && $cmdValue->getType() == 'info') {
					if ($cmdValue->execCmd() == $coupleArray[0] || $cmdValue->execCmd() == $coupleArray[1]) {
						$listOption .= '<option value="' . $coupleArray[0] . '" selected>' . $coupleArray[1] . '</option>';
3 « J'aime »

!!! Mais bon sang ! Bien sur ! :crazy_face:

avant

0|Off;1|On;2Auto

après

0|Off;1|On;2|Auto

Merci pour le coup de projecteur !!!, c’est une ligne a laissé dans la class je pense !!!

2 « J'aime »

J’ai du mal à comprendre comment ça pouvait générer 1Go de log par jour.
Il y en avait d’autre ?

Non, seulement celui-là, j’ai laissé le message actif dans cmd.class au cas où il y en aurait d’autres, c’est vrai que plus de 1 go/jour c’est énorme pour un seul virtuel

Je viens de retrouver un des tests que j’avais fait avec un échantillon de log apache :

[Wed Jul 02 15:52:05.596133 2025] [php:warn] [pid 811461:tid 811461] [client 192.168.2.241:60028] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1674
[Wed Jul 02 15:52:05.596143 2025] [php:warn] [pid 811461:tid 811461] [client 192.168.2.241:60028] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1675
[Wed Jul 02 15:52:05.602067 2025] [php:warn] [pid 810356:tid 810356] [client 192.168.2.241:60014] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1674
[Wed Jul 02 15:52:05.602079 2025] [php:warn] [pid 810356:tid 810356] [client 192.168.2.241:60014] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1675
[Wed Jul 02 15:52:06.723359 2025] [php:warn] [pid 730652:tid 730652] [client 192.168.2.241:60026] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1674
[Wed Jul 02 15:52:06.723375 2025] [php:warn] [pid 730652:tid 730652] [client 192.168.2.241:60026] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1675
[Wed Jul 02 15:52:36.826770 2025] [php:warn] [pid 744903:tid 744903] [client 192.168.2.241:60031] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1674
[Wed Jul 02 15:52:36.826787 2025] [php:warn] [pid 744903:tid 744903] [client 192.168.2.241:60031] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1675
[Wed Jul 02 15:52:38.908641 2025] [php:warn] [pid 736822:tid 736822] [client 192.168.2.241:60032] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1674
[Wed Jul 02 15:52:38.908654 2025] [php:warn] [pid 736822:tid 736822] [client 192.168.2.241:60032] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1675
[Wed Jul 02 15:53:03.084907 2025] [php:warn] [pid 814911:tid 814911] [client 192.168.2.241:60050] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1674
[Wed Jul 02 15:53:03.084925 2025] [php:warn] [pid 814911:tid 814911] [client 192.168.2.241:60050] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1675
[Wed Jul 02 15:53:07.751698 2025] [php:warn] [pid 783340:tid 783340] [client 192.168.2.241:60066] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1674
[Wed Jul 02 15:53:07.751711 2025] [php:warn] [pid 783340:tid 783340] [client 192.168.2.241:60066] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1675
[Wed Jul 02 15:53:07.752547 2025] [php:warn] [pid 706171:tid 706171] [client 192.168.2.241:60061] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1674
[Wed Jul 02 15:53:07.752559 2025] [php:warn] [pid 706171:tid 706171] [client 192.168.2.241:60061] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1675
[Wed Jul 02 15:53:07.753948 2025] [php:warn] [pid 736822:tid 736822] [client 192.168.2.241:60060] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1674
[Wed Jul 02 15:53:07.753960 2025] [php:warn] [pid 736822:tid 736822] [client 192.168.2.241:60060] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1675
[Wed Jul 02 15:53:07.771855 2025] [php:warn] [pid 756711:tid 756711] [client 192.168.2.241:60062] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1674
[Wed Jul 02 15:53:07.771868 2025] [php:warn] [pid 756711:tid 756711] [client 192.168.2.241:60062] PHP Warning:  Undefined array key 1 in /var/www/html/core/class/cmd.class.php on line 1675

On a une fréquence de répétition énorme, apparemment plus de 50 x sec avec 2 lgn à chaque fois ce qui, sauf erreur de ma part, pour 190 octets la ligne donne en 24 h :
2 * 190 * 3600 * 24 * 50 => 1 641 600 000 => 1.6 go

Perso, je ne vois pas du tout ce qui peut provoquer un tel niveau de répétition :frowning:

1 « J'aime »

Tu n’a pas une boucle quelque part ?
Genre un virtuel qui appelle un virtuel à chaque maj ?

Avec 1.6Go de log généré par jour, ça vaudrait le coup qu’une correction soit faite dans le core pour une diffusion avant la version 5 :wink: de Jeedom.

Vous devez avoir aussi un petit souci avec les logs. Chez moi en 4.4(Deb11) ou en 4.5(Deb12), les php notice,warning,error arrivent dans le log Jeedom http.error. Les logs apache sont quasiment vides.
C’est peut-être les 50 logs à la seconde qui font que les logs restent au niveau apache.