[epgd] nach Update auf mariadb 10.2.15 -> Felddefinitionen werden bei *jedem* Start angemault

  • also das selbe.

    und geht das auch ohne Fehlermeldung:


    Code
    1. alter table timers modify column state VARCHAR(1) comment '\'D\'eleted, \'R\'unning, \'F\'inished' default u;
  • das ist beruhigend!


    Dann hatte wohl eine die Idee die Ausgabe von

    Code
    1. select table_schema, column_name, column_type, column_comment, data_type, is_nullable, character_maximum_length, column_default, numeric_precision from information_schema.columns where table_name = 'timers' and column_name = 'state';

    aufzuhübschen :o


    Bekommst du auch hier bei varchar x oder varchar1 Feldern wie state die einfachen Hochkommata angezeigt?


    Code
    1. MariaDB [epg2vdr]> select id, state, file from timers;
    2. +-----+-------+----------------------------------------------------------------------+
    3. | id  | state | file                                                                 |
    4. +-----+-------+----------------------------------------------------------------------+
    5. | 565 | E     | Death in Paradise~01x03 - 003. Der Voodoo-Zauber                     |
    6. | 629 | E     | MacGyver~?x? - ?. Von den Toten auferstanden                         |
    7. | 641 | E     | Death in Paradise~08x01 - 057. Der Tote im Bus                       |
    8. | 642 | E     | Death in Paradise~08x02 - 058. Tierische Rache                       |
    9. | 644 | E     | Death in Paradise~08x04 - 060. Bittere Bohnen                        |




  • ggf war es noch zu früh und der Timer noch nicht übernommen, wie hast du den angelegt?

    Ab einfachsten im WEBIF des epgd dann ist er sofort in der Tabelle

  • horchi

    den Timer habe ich über Live angelegt. Mit WEBIF angelegtem Timer habe ich eine Ausgabe. Nein, kein Hochkomma.

    Code
    1. MariaDB [epg2vdr]> select id, state, file from timers;
    2. +----+-------+------+
    3. | id | state | file |
    4. +----+-------+------+
    5. | 1 | u | NULL |
    6. +----+-------+------+
    7. 1 row in set (0.001 sec)
  • okay dann schlägt das nur in der Tabelle mit den Tabellenbeschreibungen zu

    ich bastle mal was

  • horchi

    Mir ist gerade aufgefallen, das gleiche Problem ist auch noch in epghttpd.

    Code
    1. Feb 10 18:38:52 VDR-2004-Dev epghttpd: Calling mysql_init(10850)
    2. Feb 10 18:38:52 VDR-2004-Dev epghttpd: Info: Definition of field 'timers.STATE' modified, try to alter table
    3. Feb 10 18:38:52 VDR-2004-Dev epghttpd: Execute [alter table timers modify column state VARCHAR(1) comment '\'D\'eleted, \'R\'unning, \'F\'inished' default 'u']
    4. Feb 10 18:38:52 VDR-2004-Dev epghttpd: Info: Definition of field 'timers.ACTION' modified, try to alter table
    5. Feb 10 18:38:52 VDR-2004-Dev epghttpd: Execute [alter table timers modify column action VARCHAR(1) comment '' default 'a']
    6. Feb 10 18:38:52 VDR-2004-Dev epghttpd: Starting http server …


    Außerdem crashed der epghttpd beim Beenden. Scheint wohl an der Python Version zu liegen, unter Ubuntu 18.04 besteht das Problem nicht.

  • Scheint wohl an der Python Version zu liegen, unter Ubuntu 18.04 besteht das Problem nicht.

    Die Pakete für bionic werden IIRC noch gegen Python 2.7 gebaut.


    Ich kann es unter Arch Linux ARM mit Python 3.8 nachvollziehen und versuche herauszufinden, wo es da genau (vermutlich im Destructor) knallt.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Das sieht so aus, als würde der Destructor Python::~Python() (https://projects.vdr-developer…it/tree/lib/python.c#n201) mehrfach aufgerufen und beim zweiten Mal knallt es in Python::exit(), wenn der Refcount für pFunc verringert werden soll, das Objekt aber vermutlich schon vom Garbage Collector erwischt wurde.


    Hier hilft es, wenn ich die Zeile https://projects.vdr-developer…mon.git/tree/httpd.c#n212 auskommentiere, wobei mir nicht ganz klar ist, warum der Destructor da automatisch aufgerufen wird, da das Objekt ja extra mit new erstellt wurde (https://projects.vdr-developer…mon.git/tree/httpd.c#n184)...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ah, der zweite Aufruf des Dekonstruktor kommt aus https://projects.vdr-developer…ree/lib/searchtimer.c#n86 - aber warum gibt es dann zum Crash? Räumt Py_Finalize(Ex) da eventuell PyObjects aus der anderen Instanz der Klasse Python ab, weil es eigentlich nur einen globalen Interpreter gibt (https://docs.python.org/3.8/c-…l#sub-interpreter-support)?


    Eigentlich würde doch eine einzige Instanz von Python genügen, da wird ja eh immer das selbe Python-Modul geladen...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • In der aktuellsten Version im Git (baut gerade in den yaVDR-PPAs) hat horchi das Problem behoben.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich habe gerade epgd und epg2vdr auf die aktuelle Version gebracht.


    Bei ersten Start von epgd ist mir die folgende Meldung aufgefallen:

    Nachdem ich epgd nochmal neu gestartet habe waren die Meldung aber weg.


    Dann habe ich epg2vdr auf den neusten Stand gebraucht und erhalte dort bei jedem Start des VDR mehrfach die Meldung:

    Code
    1. epg2vdr: Fatal: Missing definition of field 'timers.EVTSTARTTIME' in dictionary!
    2. epg2vdr: Fatal: Field 'timers.EVTSTARTTIME' not defined (missing in dictionary)

    Gruß dile

  • zu 1) das alter ist normal da passt der epgd die Tabelle an.


    zu 2) sieht aus als wäre die epg.dat des Plugins nicht mit aktualisiert worden.

    Gerade nochmal geschaut im git ist die richtige:
    https://github.com/horchi/vdr-…ster/configs/epg.dat#L614