Projet

Général

Profil

Scénario #29132

Mis à jour par Fabrice Barconnière il y a plus de 4 ans

À corriger à partir de 2.6.2.

Lorsqu'un grand nombre de tunnels est configuré dans strongSwan, l'agent État des threads sur Sphynx tombe en erreur (Moins de 2 threads strongSwan disponibles).
Ceci est dû au fait que l'agent État des tunnels lance une première commande @ipsec statusall@.
Lorsque l'agent État des threads lance également cette commande, la première n'est pas terminée et on se retrouve avec des process @stroke@ ce qui bloque la deuxième commande.

Conséquences :
* L'agent État des tunnels interprète cette situation (à tort) avec l'erreur : plus de 25% de tunnels en erreur
** devrait indiquer un Warning : Mesure non disponible
* L'agent État des threads interprète cette situation (à tort) avec l'erreur : Moins de 2 threads strongSwan disponibles
** devrait indiquer un Warning : Mesure non disponible

Dans l'agent fusionné, il faudra donc indiquer un Warning : Mesure non disponible
Une seule commande @ipsec statusall@ sera exécutée pour les mesures, mais on ne sera pas à l’abri de cette situation. Le fonctionnement normal de strongSwan renouvelle régulièrement les connexions. Des process @stroke@ pourront donc être lancés lors de la mesure par l'agent Zéphir, ce qui ne doit pas être interprété comme une erreur.

De plus, cela provoque un traceback :
<pre>
2019-10-13T06:48:18.458142+02:00 sphynx.ac-test.fr zephiragents[17420]: #011Traceback (most recent call last):
2019-10-13T06:48:18.458238+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 File "/usr/lib/python2.7/dist-packages/twisted/internet/_baseprocess.py", line 64, in maybeCallProcessEnded
2019-10-13T06:48:18.458335+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 proto.processEnded(Failure(reason))
2019-10-13T06:48:18.458430+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 File "/usr/lib/python2.7/dist-packages/twisted/internet/utils.py", line 163, in processEnded
2019-10-13T06:48:18.458581+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 self.deferred.callback((out, err, code))
2019-10-13T06:48:18.458679+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 459, in callback
2019-10-13T06:48:18.458777+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 self._startRunCallbacks(result)
2019-10-13T06:48:18.458872+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 567, in _startRunCallbacks
2019-10-13T06:48:18.458996+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 self._runCallbacks()
2019-10-13T06:48:18.459098+02:00 sphynx.ac-test.fr zephiragents[17420]: #011--- <exception caught here> ---
2019-10-13T06:48:18.459194+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 653, in _runCallbacks
2019-10-13T06:48:18.459292+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 current.result = callback(current.result, *args, **kw)
2019-10-13T06:48:18.459389+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 File "/usr/lib/python2.7/dist-packages/zephir/monitor/agentmanager/agent.py", line 341, in <lambda>
2019-10-13T06:48:18.459491+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 lambda m: self.save_measure(Measure(now, m)),
2019-10-13T06:48:18.459587+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 File "/usr/lib/python2.7/dist-packages/zephir/monitor/agentmanager/agent.py", line 601, in save_measure
2019-10-13T06:48:18.459685+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 self.rrd.update(rrd_values, measure.get_date())
2019-10-13T06:48:18.459781+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 File "/usr/lib/python2.7/dist-packages/zephir/monitor/agentmanager/rrd.py", line 119, in update
2019-10-13T06:48:18.459896+02:00 sphynx.ac-test.fr zephiragents[17420]: #011 except rrdtool.error, e:
2019-10-13T06:48:18.459995+02:00 sphynx.ac-test.fr zephiragents[17420]: #011exceptions.AttributeError: 'module' object has no attribute 'error'
</pre>

Pour reproduire cette situation, j'ai créé un script @stroke.sh@ que j'exécute en background :
<pre>
#!/bin/bash

while [ 1 -eq 1 ]
do
sleep 1
done
</pre>

Retour