[1] MLD-6.x / General / VDR Client Start / Warten auf Server läuft immer in einen Timeout
 

Offline Benutzername

  • Newbie
  • *
  • Posts: 22
    • View Profile
Hallo,

bei mir laufen mehrere (6.5) MLD clients mit einem yavdr Server. Der Server wird beim Start vom Client geweckt. Dabei ist mir folgendes Problem bei allen Clients aufgefallen (siehe Log ganz unten)

Der Client startet den Server und wartet.
Nach ca. 80-90s läuft das ganze in einen Timeout, der VDR wird neu gestartet und das Fernsehbild erscheint.

Das Starten des Servers geht deutlich schneller (ca 15s). Ich denke, dass nicht zklisch geprüft wird, ob der Server da ist, sondern einfach die 80-90s gewartet und neugestartet wird? Das ganze ist absolut reproduzierbar.

Wenn beim Start des Clients der Server schon an ist, läuft alles korrekt.

Es ist nantürlich schlecht für den WAF, wenn der Client nach Start erst mal ca 90Sekunden gar nicht reagiert.

Beim MLD 5.5 ist mir das so nicht aufgefallen?

Schuld dürfte diese Zeile in der "/usr/share/vdr/run.d/30_streamdev-client.sh" sein
timeout 90 sh -c "while [ -z '$(svdrpsend.sh -H $server_ip QUIT)' ]; do sleep 1; done"

Hat jemand eine Idee, was geändert werden muss?

Grüße
Björn

Jan 23 14:13:13 vdr- run.sh[902]: Wait for network connection:
Jan 23 14:13:13 vdr- run.sh[902]: Start streamdev server:
Jan 23 14:13:13 vdr- run.sh[902]: Wait for streamdev server:
Jan 23 14:14:37 vdr- systemd[1]: vdr.service: start-pre operation timed out. Terminating.
Jan 23 14:14:37 vdr- systemd[1]: vdr.service: Failed with result 'timeout'.
Jan 23 14:14:37 vdr- systemd[1]: Failed to start Video Disk Recorder.
Jan 23 14:14:37 vdr- systemd[1]: vdr.service: Consumed 2.730s CPU time.
Jan 23 14:14:38 vdr- systemd[1]: vdr.service: Scheduled restart job, restart counter is at 1.
Jan 23 14:14:38 vdr- systemd[1]: Starting Video Disk Recorder...


Online clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 21170
    • View Profile
    • ClausMuus.de
Die Zeile sollte eigentlich 90 Sekunden lang im ein Sekunden Tackt versuchen den Server zu erreichen. Möglicherweise bleibt aber einer der Aufrufe hängen, und kommt nicht zurück, bis das 90 Sekunden Timeout zuschlägt.
Du könntest mal testweise die Zeile so ändern:
Code: [Select]
timeout 90 sh -c "while [ -z '$(svdrpsend.sh -H $server_ip QUIT)' ]; do sleep 1; echo -n .; done"dann sollte alle ein bis zwei Sekunden ein "." geloggt werden, und Du kannst sehen, ob gleich der erste Aufruf hängen bleibt, oder erst ein späterer.
Du könntest auch mal eine Zeile Vorher die Variable server_ip ausgeben, um zu sehen ob die stimmt:
Code: [Select]
echo "ServerIP: $server_ip"Und letztendlich könnte dieser Fix helfen, sofern die ServerIP Stimmt:
Code: [Select]
timeout 90 sh -c "while [ -z '$(timeout 5 sh -c "svdrpsend.sh -H $server_ip QUIT")' ]; do sleep 1; done"
Ich werde heute Abend auch mal prüfen, ob da ein grundlegender Fehler drin steckt. In der MLD-5 wurde eher etwas in dieser Art gemacht:
Code: [Select]
timeout 90 sh -c "while ! svdrpsend.sh -H $server_ip QUIT >dev/null 2>&1; do sleep 1; done"oder noch genauer so was:
Code: [Select]
timeout 90 sh -c "while ! { echo QUIT | nc $server_ip 6419 >dev/null 2>&1; }; do sleep 1; done"Keine Ahnung mehr warum ich das bei der MLD-6 anders mache.
« Last Edit: January 23, 2026, 15:43:43 by clausmuus »
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 6.5 - lirc yaUsbIR - 4 x DD-Sat - Intel N100M - 4GB RAM - 64GB SSD + 12TB HDD + 22TB HDD - Lian Li PC-C37B - Samsung LE40A559

Online kallop

  • Newbie
  • *
  • Posts: 16
  • Longtime VDR User
    • View Profile
Hallo,
da mich das Thema auch betrifft (WAF, etc.), habe ich mal die Vorschläge, die Claus an Benutzername gemacht hat, probiert. Nur der Vorschlag in der fünften Zeile funktioniert (der mit netcat). Das Bild auf dem Client-Bildschirm ist sogar noch vor dem Bild auf dem temporären Server-Bildschirm da.
Was ich beobachtet hatte:
Wenn ich bei ausgeschaltetem Server die erste Zeile auf dem Client per ssh eingebe (ohne timeout und mit realem Servernamen), gibt es zuerst eine Verzögerung von ca 5 Sekunden, dann wird jede Sekunde ein Punkt ausgegeben. Allerdings auch, wenn der Server schon längst läuft. Nach ^C und erneuter Eingabe erscheint der Prompt sofort wieder, wie erwawrtet.
Die Lösung ist also netcat.

Allerdings gibt es ein Aber:
Wenn ich in den Einstellungen des Clients das Aufnahmeverzeichnis des Server eingebunden habe, läuft der Client nach dem Start und Aufwecken des Servers nur ein paar Sekunden und friert dann komplett ein. WebIf und ssh sind auch tot, nur ein Reset hilft hier noch.
Wahrscheinlich liegt es daran, dass über die fstab der nfs-share des Servers ja schon viel früher vom Betriebssystem (nach dem Start des Clients) eingebunden werden soll, wenn der Server also noch gar nicht bereit ist.
Eventuell könnte man das ja auch noch irgendwie verzögern, also z.B. mit einem mount außerhalb von fstab. (?)
MLD5.4 produktiv (dvb, x64, PowerOn+Remote mit AVR)
MLD6.5 produktiv (satip, RPI4, PowerOn mit AVR)
MLD6.5 Test (dvb-2, x64, PowerOn+Remote mit AVR)
MLD6.5 Test (satip, RPI4, PowerOn mit AVR)
DUR-line unicable switch
Megasat satip-server 3

[1] MLD-6.x / General / VDR Client Start / Warten auf Server läuft immer in einen Timeout
 



Users Online Users Online

0 Members and 1 Guest are viewing this topic.