[vz-dev] Bug in C++Port von vzlogger - Puffer entleert sich nicht mehr

Kai Krueger kai.krueger at itwm.fraunhofer.de
Tue Aug 7 07:38:17 CEST 2012


Moin,

> Am 06.08.2012 um 10:33 schrieb Kai Krueger:
>
>> Du kannst bei libcurl eine Debugmethode konfigurieren. (Hier:
>> curl_custom_debug_callback() [2])
>> Die gibt Dir aus was bzw. wie viel gesendet und empfangen wurde [3].
>> D.h. auf ein 'CURL: Sent 40 bytes..' muss irgendwann ein 'CURL: Recv '
>> folgen. Ein Timeout sollte jenach Einstellung etwa nach 30-120 sec.
>> zuschlagen. Ich entnehme Deiner Antwort, dasz Du den Logger nach etwa 15
>> Minuten neu gestartet hast.
> fast: nachdem der cronjob (vzmonitor) mir um 22:00 eine Mail geschickt
> hat, dass in der vergangenen Stunde keine Messwerte eingegangen sind, habe
> ich mir das mal angeschaut und dann um 22:12 vzlogger neu gestartet. Das
> hätte also fast 90 Minuten Zeit, sich einzurenken. Ändert aber nichts an
> dem, was Du schreibst:
>
>> Das wuerde darauf hindeuten, dasz hier punkto Timeout etwas getan werden
>> muesste.
> ACK :-)
>
>>> Läuft das dann nicht schon vor dem Absetzen des CURL-Requests schief?
>> Eigentlich nicht, weil der vorgehende CURL-Requests noch nicht fertig
>> war.
>> In Deinem ersten Durchlauf fehlen die Zeilen 7-9.
>> Daher meine Vermutung: der logging thread haengt im Senden, oder, viel
>> schlimmer, hat sich beendet.
> ok. Haste ne Idee, wie wir das eingrenzen können?
Die Versuche gestern, den Fehler zu reproduzieren waren leider ohne Erfolg.

Der Versuch jetzt schient aber vielversprechend zu sein:
Ich habe am naechst stehenden Router (mit masquerading nach aussen) das
externe Interface fuer 30 sec runtergefahren und anschliessen mit einer
anderen IP wieder aktiviert. Dann erhalte ich das von Dir beschriebene
Phaenomen.
Ein strace auf den logger-thread liefert mir:

clock_gettime(CLOCK_MONOTONIC, {2849948, 535433037}) = 0
poll([{fd=4, events=POLLIN|POLLPRI}], 1, 1000) = 0 (Timeout)
poll([{fd=4, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {2849949, 536886077}) = 0

Ich denke damit habe ich erst einmal einen Ansatz punkt.

Achja, es muss ein IP-Wechsel stattfinden. Es bringt also nichts im/am
Router die Verbindung zu unterbrechen. Das erklaert auch warum es gestern
nicht geklappt hat.

Viele Gruesse
Kai



More information about the volkszaehler-dev mailing list