ich finde am epgHandler Interface keine Änderung. Nach einem Neustart des VDR läuft es hier auch für einige einige Minuten dann bleibt es hängen.
Sieht nach einem Lock aus
vdr-epg2vdr: Compilieren schlägt mit VDR 2.6 fehl
-
-
mit dem Fix klappt es hier wieder:
Diff
Alles anzeigendiff --git a/eit.c b/eit.c index 0d685c5e..690c405b 100644 --- a/eit.c +++ b/eit.c @@ -115,22 +115,23 @@ cEIT::cEIT(cEitTablesHash &EitTablesHash, int Source, u_char Tid, const u_char * return; } - if (!EpgHandlers.Begin (Channel)) { + cSchedule *pSchedule = (cSchedule *)Schedules->GetSchedule(Channel, true); + + if (pSchedule->OnActualTp(Tid) && (Tid & 0xF0) == 0x60) { SchedulesStateKey.Remove(false); ChannelsStateKey.Remove(false); return; } - bool ChannelsModified = false; - bool handledExternally = EpgHandlers.HandledExternally(Channel); - cSchedule *pSchedule = (cSchedule *)Schedules->GetSchedule(Channel, true); - - if (pSchedule->OnActualTp(Tid) && (Tid & 0xF0) == 0x60) { + if (!EpgHandlers.BeginSegmentTransfer(Channel)) { SchedulesStateKey.Remove(false); ChannelsStateKey.Remove(false); return; } + bool ChannelsModified = false; + bool handledExternally = EpgHandlers.HandledExternally(Channel); + bool Empty = true; bool Modified = false; time_t LingerLimit = Now - EPG_LINGER_TIME;
Ursache war eine, durch nicht symmetrische Begin/End SegmentTransfer Aufrufe, unterbrochene Lock Sequenz.
-
mit dem Fix klappt es hier wieder:
Bist Du sicher, dass patch gegen 2.6.0 oder 2.5.7 ist? Ich finde
schon nicht.
-
Ich hab den vdr von git Head und bekomme 2.6 als Version angezeigt.
-
Ich hab den vdr von git Head und bekomme 2.6 als Version angezeigt.
https://projects.vdr-developer.org/git/vdr.git/tree/eit.c enthält die Zeichenkette "EpgHandlers.Begin " aber nicht - http://git.tvdr.de/?p=vdr.git;…f3b0b88046fb6fdd82faa37b5 auch nicht. Ich glaube ich stehe gerade auf der Leitung...
-
merkwürdig, in dem Patch fehlen nach dem Copy&Paste ein paar Zeichen :o
noch ein Versuch:Diff
Alles anzeigendiff --git a/eit.c b/eit.c index 0d685c5e..690c405b 100644 --- a/eit.c +++ b/eit.c @@ -115,22 +115,23 @@ cEIT::cEIT(cEitTablesHash &EitTablesHash, int Source, u_char Tid, const u_char * return; } - if (!EpgHandlers.BeginSegmentTransfer(Channel)) { + cSchedule *pSchedule = (cSchedule *)Schedules->GetSchedule(Channel, true); + + if (pSchedule->OnActualTp(Tid) && (Tid & 0xF0) == 0x60) { SchedulesStateKey.Remove(false); ChannelsStateKey.Remove(false); return; } - bool ChannelsModified = false; - bool handledExternally = EpgHandlers.HandledExternally(Channel); - cSchedule *pSchedule = (cSchedule *)Schedules->GetSchedule(Channel, true); - - if (pSchedule->OnActualTp(Tid) && (Tid & 0xF0) == 0x60) { + if (!EpgHandlers.BeginSegmentTransfer(Channel)) { SchedulesStateKey.Remove(false); ChannelsStateKey.Remove(false); return; } + bool ChannelsModified = false; + bool handledExternally = EpgHandlers.HandledExternally(Channel); + bool Empty = true; bool Modified = false; time_t LingerLimit = Now - EPG_LINGER_TIME;
hmm nach dem ich es als Code Formatiert hatte schon wieder. Nun habe ich erst die Code Formatierung eingefügt dann den Test gepastet nun scheint es zu passen. Sicherheitsgabler nochmal als gz im Anhang -
Code
117 118 if (!EpgHandlers.BeginSegmentTransfer(Channel)) { 119 SchedulesStateKey.Remove(false); 120 ChannelsStateKey.Remove(false); 121 return; 122 } 123
Aus http://git.tvdr.de/?p=vdr.git;…f3b0b88046fb6fdd82faa37b5
-
-
Code
117 118 if (!EpgHandlers.BeginSegmentTransfer(Channel)) { 119 SchedulesStateKey.Remove(false); 120 ChannelsStateKey.Remove(false); 121 return; 122 } 123
Aus http://git.tvdr.de/?p=vdr.git;…f3b0b88046fb6fdd82faa37b5
Der nicht vorhandene String war "EpgHandlers.Begin ", nicht "EpgHandlers.Begin". Ersterer kommt nicht vor.
-
Meinen "Division by 0" löst das nicht, den habe ich immer noch. Mit vdr 2.4.7 tritt er nicht auf.
Hier vollständiges log von "service epgd restart":
Code
Alles anzeigenJan 1 16:43:36 user.err VDR-2004-Dev epgd: Shutdown triggered with signal 15 Jan 1 16:43:36 user.err VDR-2004-Dev epgd: State now 'stopped' Jan 1 16:43:36 daemon.info VDR-2004-Dev systemd[1]: Stopping Database driven EPG Data collector... Jan 1 16:43:36 user.err VDR-2004-Dev epgd: Error: SVDRPCL: Timeout waiting server reply '127.0.0.1' Jan 1 16:43:36 user.err VDR-2004-Dev epgd: normal exit Jan 1 16:43:36 user.err VDR-2004-Dev epgd: Closing mysql connection and calling mysql_thread_end(186869) Jan 1 16:43:36 user.err VDR-2004-Dev epgd: Closing mysql connection and calling mysql_thread_end(186869) Jan 1 16:43:36 daemon.info VDR-2004-Dev systemd[1]: epgd.service: Succeeded. Jan 1 16:43:36 daemon.info VDR-2004-Dev systemd[1]: Stopped Database driven EPG Data collector. Jan 1 16:43:36 daemon.info VDR-2004-Dev systemd[1]: Starting Database driven EPG Data collector... Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Set locale to 'de_DE.UTF-8' Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Calling sd_notify(READY=1$STATUS=Ready$MAINPID=186918$) Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Info: Systemd watchdog not configured, epgd won't be sending keep-alive messages! Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Loading uuid from '/etc/epgd/uuid' succeeded [25CD9DEF-ADC1-413E-991F-35D5090181AC] Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Dictionary '/etc/epgd/epg.dat' loaded Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Initialize python script '/etc/epgd/recording.py' Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Loading plugin: /usr/lib/epgd/plugins/libepgd-epgdata.so Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Read 26 option from /etc/epgd/epgd.conf Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Using syslog facility 'user' (8), log level set to (0) Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Info: Stylesheet '/etc/epgd/epgdata-utf-8.xsl' loaded Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Checking database connection ... Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Calling mysql_init(186918) Jan 1 16:43:37 user.err VDR-2004-Dev epgd: SQL client character now 'utf8' Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Checking table structure and indices ... Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Closing mysql connection and calling mysql_thread_end(186918) Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Checking table structure and indices succeeded Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Calling mysql_init(186918) Jan 1 16:43:37 user.err VDR-2004-Dev epgd: State now 'init' Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Loading '/etc/epgd/channelmap.conf' Jan 1 16:43:37 user.err VDR-2004-Dev epgd: 47 channel mappings read. Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Calling mysql_init(186918) Jan 1 16:43:37 user.err VDR-2004-Dev epgd: Scheduled next update in 10 second(s) Jan 1 16:43:37 user.err VDR-2004-Dev epgd: State now 'standby' Jan 1 16:43:37 daemon.info VDR-2004-Dev systemd[1]: Started Database driven EPG Data collector. Jan 1 16:43:47 user.err VDR-2004-Dev epgd: State now 'busy (events)' Jan 1 16:43:47 user.err VDR-2004-Dev epgd: Error: SVDRPCL: Timeout waiting server reply '127.0.0.1' Jan 1 16:43:49 user.err VDR-2004-Dev epgd: EPG Update started Jan 1 16:43:49 user.err VDR-2004-Dev epgd: EPG Update finished, loaded 0 files (0.000 KB), 7 non-updates skipped, 0 rejected due to format error. Jan 1 16:43:57 user.err VDR-2004-Dev epgd: SQL-Error in 'execute(stmt_execute)' - Division by 0 (1365) 'Division by 0' [call mergeepg] Jan 1 16:43:57 user.err VDR-2004-Dev epgd: State now 'busy (images)' Jan 1 16:43:58 user.err VDR-2004-Dev vdr: epg2vdr: --- EPG 'update' started --- Jan 1 16:43:58 user.err VDR-2004-Dev epgd: Start download of new images Jan 1 16:43:58 user.err VDR-2004-Dev epgd: Still updating images, now 500 of 2147 checked and 0 loaded (0.000 KB) Jan 1 16:43:58 user.err VDR-2004-Dev epgd: Still updating images, now 1000 of 2147 checked and 0 loaded (0.000 KB) Jan 1 16:43:58 user.err VDR-2004-Dev epgd: Still updating images, now 1500 of 2147 checked and 0 loaded (0.000 KB) Jan 1 16:43:58 user.err VDR-2004-Dev epgd: Still updating images, now 2000 of 2147 checked and 0 loaded (0.000 KB) Jan 1 16:43:58 user.err VDR-2004-Dev epgd: Loaded 0 images (0.000 KB), checked 2147; 0 failed to load in 0 seconds Jan 1 16:43:58 user.err VDR-2004-Dev epgd: Scheduled next update in 2 hour(s) Jan 1 16:43:58 user.err VDR-2004-Dev epgd: State now 'standby' Jan 1 16:44:00 user.err VDR-2004-Dev vdr: epg2vdr: Load images from database Jan 1 16:44:00 user.err VDR-2004-Dev vdr: epg2vdr: Got 0 images from database in 0 seconds (0 updates, 0 new) and created 0 links Jan 1 16:44:00 user.err VDR-2004-Dev vdr: epg2vdr: --- EPG update finished --- Jan 1 16:44:00 user.err VDR-2004-Dev epgd: Error: SVDRPCL: Timeout waiting server reply '127.0.0.1' Jan 1 16:44:01 user.err VDR-2004-Dev epgd: State now 'busy (match)' Jan 1 16:44:12 user.err VDR-2004-Dev epgd: SQL-Error in 'execute(stmt_execute)' - Division by 0 (1365) 'Division by 0' [call mergeepg] Jan 1 16:44:12 user.err VDR-2004-Dev epgd: State now 'standby'
-
hast du inzw. schon wieder neue EPG Daten in der Tabelle? Ggf. ist das in der mergeepg Prozedur nicht abgefangen.
Ansonsten müsste CKone sich das bei Gelegenheit mal ansehen.Falls in den Tabellen was schräg ist könntest du mal mit leeren Tabellen beginnen. dazu musst du nur epgd-dropall aufrufen und dort NUR die oberste Frage mit y beantworten. Dann epgd und vdr neu Starten. Die EPG Daten aus dem Internet sind ja schnell wieder geholt.
-
Habe gerade erst realisiert das das ein Patch gegen den VDR selbst ist. Vielleicht ein guter Zeitpunkt da kls mal drauf aufmerksam zu machen. Um das bei vdr4arch einzubauen brauche ich sowas wie einen "offiziellen Segen" oder eine Version die tatsächlich in einer zukünftigen VDR-Version integriert sein wird.
-
Kann sein das der finale Bugfix anders aussieht das weiß ich nicht.
-
Falls in den Tabellen was schräg ist könntest du mal mit leeren Tabellen beginnen
Auch danach ist das Problem noch da, auch mit vdr 2.4.8.
Somit off topic, ich mache einen eigenen Thread auf.
-
-
auch wenn im README immer noch mysql steht entwickle ich schon lange ausschließlich mit dem mariadb Client. Dort ist die 10.x aktuell und damit funktioniert es hier. Hintergrund war/ist das die Distributionen vermehrt auf MariaDb gesetzt haben - ob das heute noch so ist weiß ich nicht.
Lediglich im Makefile wird noch mysql_config verwendet und der eingebundene Header wird noch unter mysql gesucht wodurch die *-dev-compat Pakete noch benötigt werden. Das passe ich demnächst mal an.
Was genau klappt den mit der 8er mysql Client Library nicht (müsste zum testen ein System damit aufsetzen). Wenn die Unterschiede nicht groß sind kann ich schauen das ich es auch zu mysql kompatibel halten. -
Ich werde dann lieber nach mariadb migrieren - ich bin nicht festgelegt auf mysql und will nicht mehr Arbeit erzeugen als nötig.
-
Ich werde dann lieber nach mariadb migrieren - ich bin nicht festgelegt auf mysql und will nicht mehr Arbeit erzeugen als nötig.
das wer ich auch morgen frueh in angriff nehmen. hab eine bitte:
koennte jemand eine passende config fuer mariadb posten, die zum epg-daemon passt.
wuerde jede menge arbeit sparen - besten dank
gruss
beinhart
-
du meinst für den Datenbank Server?
Da verwende ich das was als default mit kommt und kommentiere das binary logging (falls aktiviert) aus:
#log_bin = /var/log/mysql/mysql-bin.log
Je nachdem auf welchem Interface der Server lauschen soll ggf. noch:
bind-address = <die ip>
beides steht hier (Ubuntu Server) in /etc/mysql/mariadb.conf.d/50-server.cnf
Heute Abend kommt noch eine Version von epgd und epg2vdr welche das Paket libmariadb-dev-compat nicht mehr benötigen.Möchte man es dennoch gegen die mysql Libs bauen kann man das mit make MYSQL=1 dann baut es mit den mysql Client Versionen welche noch kompatibel sind.
Grüße Jörg -
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!