98_update.pm (Retry bei Verbindungsproblemen)

Begonnen von dominik, 11 August 2015, 20:38:31

Vorheriges Thema - Nächstes Thema

P.A.Trick

#30
Zitat von: rudolfkoenig am 19 August 2015, 20:35:18
Mit welcher Fehlermeldung bricht es ab?
Wieso haengt FHEM, wenn update abbricht?
Laeuft bei dir update nicht in Background? Wenn nein, wieso nicht?

Keine Fehlermeldung, friert ein!
Background Update habe ich eben eingeschaltet (hatte ich testweise ausgeschaltet)
Test läuft nun.....

Nun es hört einfach auf! Sieht so aus, als ob der Update Prozess einfach stirbt!

2015.08.19 20:47:58 1: UPD www/images/openautomation/phone_call_out.svg
2015.08.19 20:47:58 1: UPD www/images/openautomation/phone_dial.svg
2015.08.19 20:47:59 1: UPD www/images/openautomation/phone_missed_in.svg
2015.08.19 20:47:59 1: UPD www/images/openautomation/phone_missed_out.svg
2015.08.19 20:47:59 1: UPD www/images/openautomation/phone_ring.svg
2015.08.19 20:47:59 1: UPD www/images/openautomation/phone_ring_in.svg






UPDATE
Noch mal mit verbose 5

2015.08.19 20:54:40 1: UPD www/images/openautomation/phone_ring.svg
2015.08.19 20:54:40 4: http://fhem.de/fhemupdate/www/images/openautomation/phone_ring.svg: HTTP response code 200
2015.08.19 20:54:40 4: HttpUtils http://fhem.de/fhemupdate/www/images/openautomation/phone_ring.svg: Got data, length: 2155
2015.08.19 20:54:40 5: Cmd: >{DoTrigger('global','UPD www/images/openautomation/phone_ring_in.svg','1')}<
2015.08.19 20:54:40 5: Triggering global (1 changes)
2015.08.19 20:54:40 4: HttpUtils url=http://fhem.de/fhemupdate/www/images/openautomation/phone_ring_in.svg
2015.08.19 20:54:40 5: Notify loop for global UPD www/images/openautomation/phone_ring_in.svg
2015.08.19 20:54:40 5: Cmd: >{Log('1','UPD www/images/openautomation/phone_ring_in.svg')}<
2015.08.19 20:54:40 1: UPD www/images/openautomation/phone_ring_in.svg
2015.08.19 20:54:41 4: http://fhem.de/fhemupdate/www/images/openautomation/phone_ring_in.svg: HTTP response code 200
2015.08.19 20:54:41 4: HttpUtils http://fhem.de/fhemupdate/www/images/openautomation/phone_ring_in.svg: Got data, length: 2917
2015.08.19 20:55:01 4: Closing inactive connection FHEMWEB:127.0.0.1:54895
2015.08.19 20:55:01 4: Connection accepted from FHEMWEB:127.0.0.1:55546
2015.08.19 20:55:01 4: HTTP FHEMWEB:127.0.0.1:55546 GET /fhem/rss/FrameRSS.jpg
2015.08.19 20:55:01 4: 2734:FHEMWEB:127.0.0.1:55546: /fhem/rss/FrameRSS.jpg / RL:5931 / image/jpeg; charset=utf-8 /  /
2015.08.19 20:55:01 4: HTTP FHEMWEB:127.0.0.1:55546 GET /fhem/rss/.directory
2015.08.19 20:55:01 4: 2734:FHEMWEB:127.0.0.1:55546: /fhem/rss/.directory / RL:689 / text/html; charset=utf-8 /  /

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

franky08

Nur zur Info, habe gerade mal ein update gemacht (das "Große", nach dem SVN Crash) und das lief vollkommen problemlos durch. Config: ADSL 25000, Telekom, FritzBox 7390, fhem 5.6 auf ZBOX nano.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

P.A.Trick

Auf meinem Cubie und der Fritte läuft das Update auch problemlos durch!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

rudolfkoenig

Ich habe HttpUtils.pm/98_update.pm erweitert, damit es "Connection: keep-alive" unterstuetzt.
Damit braucht das volle update (1545 Dateien/18MB) statt 100 Sekunden nur noch 50 auf meinem Rechner. Bei gesetzten keepalive unterbricht fhem.de nach 200 GETs die Verbindung, die Funktion fuehrt deswegen ein reconnect durch, wenn Dateien vorher erfolgreich geholt wurden.

Andere Modulauthoren koennen dieses Feature mit HttpUtils_BlockingGet oder HttpUtils_NonblockingGet verwenden, indem man $hash->{keepalive}=1 setzt. Zum Schluss sollte man HttpUtils_Close($hash) aufrufen.

Ich habe auch angefangen "Accept-Encoding: gzip,deflate" zu unterstuetzen, zu meinem grossen Erstaunen unterstuetzt fhem.de keine Komprimierung, siehe:
curl -I -H 'Accept-Encoding: gzip,deflate' http://fhem.de/fhemupdate/controls_fhem.txt
und ich kriege es mit den ueblichen .htaccess Methoden auch nicht eingeschaltet. Hat irgendwer eine Idee, wieso? Die compress-Implementierung in HttpUtils ist deswegen noch unvollstaendig, bitte nicht wundern.

Wernieman

Weißt Du, was alles per .htaccess auf dem Server einstellbar ist? bzw. kommst Du an i "Globale" Apache-config? Lesbar reicht.

Sonst ist Deine Anfrage schlecht beantwortbar :o(
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

rapster

#35
Zitat von: rudolfkoenig am 20 August 2015, 19:18:28
Ich habe auch angefangen "Accept-Encoding: gzip,deflate" zu unterstuetzen, zu meinem grossen Erstaunen unterstuetzt fhem.de keine Komprimierung, siehe:
curl -I -H 'Accept-Encoding: gzip,deflate' http://fhem.de/fhemupdate/controls_fhem.txt
und ich kriege es mit den ueblichen .htaccess Methoden auch nicht eingeschaltet. Hat irgendwer eine Idee, wieso? Die compress-Implementierung in HttpUtils ist deswegen noch unvollstaendig, bitte nicht wundern.

Hallo Rudolf,

das deflate Modul ist ja bestimmt geladen?

Falls ja wie hast du es über die htaccess aktiviert?

Auf meinem Apache funktioniert folgende Direktive, welche du mal probieren könntest falls es bei dir anderst aussieht:
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/x-httpd-php
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip
Header append Vary User-Agent env=!dont-vary


Zitatcurl -I -H 'Accept-Encoding: gzip,deflate' http://x0e.de/fhem.html
curl -I -H 'Accept-Encoding: gzip,deflate' http://x0e.de/controls_fhem.txt

Gruß
  Claudiu

rudolfkoenig

Zitatdas deflate Modul ist ja bestimmt geladen?
Wenn ich das wuesste.

ZitatFalls ja wie hast du es über die htaccess aktiviert?
# Enable GZIP
<ifmodule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/plain
#  AddOutputFilterByType DEFLATE text/html text/css text/plain text/x-perl image/svg+xml text/css application/x-javascript application/javascript
</ifmodule>


Ich habe auch mit den langen Versionen schon experimentiert, mit und ohne BrowserMatch und Header Zeilen, oder exakt die Version von Claudiu, kein Unterschied. Und ich dachte, gzip ist an per default.

Zitatkommst Du an i "Globale" Apache-config?
Wuesste nicht wie. Habe auch bei 1und1 schon eine Anfrage gestellt.

Wernieman

O.K. also "reiner" VHost.

mal sehen was 1&1 antwortet, aber ich glaube das modul ist deaktiviert ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

rapster

Ja, hört sich wirklich so an als ob das Modul nicht geladen ist.

Du könntest das z.B. hierüber feststellen:
<IfModule mod_deflate.c>
Header set IsModuleLoaded "module loaded"
</IfModule>
<IfModule !mod_deflate.c>
Header set IsModuleLoaded "module not loaded"
</IfModule>


Anschließend sollte bei einer curl -I -H abfrage 'IsModuleLoaded' entsprechend gesetzt sein. (Ansonsten liegt noch irgendwo anders ein Problem vor)

Selber über reinen htaccess Zugriff nachladen ist leider nicht möglich :-(

Gruß
  Claudiu

rudolfkoenig

% curl -I -H 'Accept-Encoding: gzip,deflate' http://fhem.de/fhemupdate/controls_fhem.txt
HTTP/1.1 200 OK
Date: Thu, 20 Aug 2015 20:50:11 GMT
Server: Apache
Last-Modified: Thu, 20 Aug 2015 05:45:18 GMT
Accept-Ranges: bytes
Content-Length: 101947
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
IsModuleLoaded: module not loaded
Content-Type: text/plain


Na dann warten wir auf dem naechsten Server.

P.A.Trick

#40
Mit keepalive dasgleiche Problem bei mir!

Aber!

fhem@raspberrypi:~/www/images/openautomation$ ls -l phone_ring*
prw-r--r-- 1 fhem dialout    0 Dez 22  2015 phone_ring_in.svg
srw-r--r-- 1 fhem dialout    0 Sep  1  2005 phone_ring_out.svg
-rw-r--r-- 1 fhem dialout 2155 Aug 21 19:20 phone_ring.svg
fhem@raspberrypi:~/www/images/openautomation$


UPDATE

Nach dem Löschen der 0 Byte Dateien lief das Update durch! Vermutlich ein FS Problem, oder?

Ich glaube bei mir ist es ein FS Problem! Ich lösche die beiden Dateien mal und dann schauen wir weiter!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Markus Bloch

Zitat von: rudolfkoenig am 20 August 2015, 19:18:28
Ich habe HttpUtils.pm/98_update.pm erweitert, damit es "Connection: keep-alive" unterstuetzt.
Damit braucht das volle update (1545 Dateien/18MB) statt 100 Sekunden nur noch 50 auf meinem Rechner. Bei gesetzten keepalive unterbricht fhem.de nach 200 GETs die Verbindung, die Funktion fuehrt deswegen ein reconnect durch, wenn Dateien vorher erfolgreich geholt wurden.

Andere Modulauthoren koennen dieses Feature mit HttpUtils_BlockingGet oder HttpUtils_NonblockingGet verwenden, indem man $hash->{keepalive}=1 setzt. Zum Schluss sollte man HttpUtils_Close($hash) aufrufen.

Ich habe auch angefangen "Accept-Encoding: gzip,deflate" zu unterstuetzen, zu meinem grossen Erstaunen unterstuetzt fhem.de keine Komprimierung, siehe:
curl -I -H 'Accept-Encoding: gzip,deflate' http://fhem.de/fhemupdate/controls_fhem.txt
und ich kriege es mit den ueblichen .htaccess Methoden auch nicht eingeschaltet. Hat irgendwer eine Idee, wieso? Die compress-Implementierung in HttpUtils ist deswegen noch unvollstaendig, bitte nicht wundern.

Hallo Rudi,

vielen Dank dafür, nur leider kann man den Keep-Alive Mechanismus nicht "Non-Blocking" verwenden. Insbesonders wenn man mehrere Requests nacheinander stellen will. In meinem Fall sende ich immer POST-Requests mit XML-Daten ab. Den HTTP-Parameter-Hash reiche ich dabei mit Zusatzinformationen an um am Ende bei der Bearbeitung durch die Callback-Funktion zu wissen wofür die Antwort eigentlich ist.

Wenn ich nun in einer Funktion mehrere HTTP Requests mit aktiviertem KeepAlive absetzen will, gerät der Parameter-Hash, den ich ja an einer zentralen Stelle im Device-Hash speichere, in eine Inkonsistenz weil ja die Werte vom vorhergehenden Request schonwieder überschrieben sind usw.

Beim Aufruf der Callback-Funktion bekomme ich ja dann die bereits mehrfach überschriebenen Daten zurück, die aber gar nicht mehr zu dem ursprünglichen Request passen.

Oder sehe ich da was falsch?

Gruß
Markus

Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

Zitat
Wenn ich nun in einer Funktion mehrere HTTP Requests mit aktiviertem KeepAlive absetzen will, gerät der Parameter-Hash, den ich ja an einer zentralen Stelle im Device-Hash speichere, in eine Inkonsistenz weil ja die Werte vom vorhergehenden Request schonwieder überschrieben sind usw.

Ich meine das hat nichts mit keepalive zu tun: wenn man mehrere Requests parallelel absetzt (geht nur bei Nonblocking), dann muss man immer unterschiedliche Parameterbloecke (hash) verwenden, sonst werden die Daten ($conn, etc) ueberschrieben. Es mag aber sein, dass diese Probleme erst beim gesetzten keepalive merkbar werden.

stromer-12

mit dem aktuellen 98_update.pm stirbt mein fhem bei Verbindungsproblemen.

Zitat2015.08.23 11:18:13 1: http://fhem.de/fhemupdate/controls_fhem.txt: Can't connect(1) to http://fhem.de:80: IO::Socket::INET: connect: Connection refused
Can't call method "close" on an undefined value at FHEM/HttpUtils.pm line 65.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

rudolfkoenig

"Connection refused" kann ich nicht erklaeren. Die Warnung danach habe ich gerade behoben.