Frage zur neuen EPG- Datenbank

  • Dank für die r11 und ich bekomme noch immer Problemen mit dem Geister Journal. Kann es sein das epgdb.py die Zeit die vergeht zwischen das beenden des ersten epg.db-journal und die Geister epg.db-journal nicht beachtet und die Entstehung der Geister epg.db-journal so vermisst?


    Die Initiierung zwei variablen ist noch immer im den try-exept und dann kann es dar zu Fehler kommen. Es geht um :


    Zitat

    self.events_in_past_journal = 0
    self.events_in_import_range_journal = 0

    DM.One AIO, DM920, DM7080 archiviert DM8000 aus Dezember 2008 und eine DM600.

  • Ich begreife noch immer nicht diese code snipplet:


    Code
    print "[EPGDB] starting cleaning of events from %s" % (epgdb_path)
    			# remove old XMLTV Events from epg.db as a single transaction
    			self.cursor.execute('BEGIN')
    			self.events_in_past_journal = 0
    			self.events_in_import_range_journal = 0
    			print "[EPGDB] cleaning outdated events ..."
                            cmd = "DELETE FROM T_Event WHERE changed < datetime(?, 'unixepoch')"
                            self.cursor.execute(cmd,self.epoch_time)
    			print "[EPGDB] connect finished"
    			return True


    Die Database die offen ist: epgd.db


    Warum outdated events deleten wenn wenige Momenten später oder beim abschließen diesen epg.db uberschrieben wird durch die in memory.


    Ich bekomme auch diese meldung:


    [EPGDB] FOUND Rytex XMLTV with source_id 5
    [EPGDB] starting cleaning of events from /media/sdcard/XMLTV-EPG/epg.db
    [EPGDB] cleaning outdated events ...
    [EPGDB] connect to EPG database /media/sdcard/XMLTV-EPG/epg.db failed


    Auch denke ich das es nicht gut ist um die db_Feld "changed" zu nehem weil das keine Verbindung hat mit die events im database außer wenn "changed" alter ist dann die 28 tage dann kann man den event löschen.


    http://www.dream-multimedia-tv…&postID=141820#post141820


    Ghost, danke und ich denke das Gutemine auch dafür ist. Kannst du etwas angeben über die Geister egp.db-journal die ich sehe?


    So wieder mal einige Stunden getestet und hier wirkt es sehr gut. Ich benutze es täglich so die dauertest lauft.

    DM.One AIO, DM920, DM7080 archiviert DM8000 aus Dezember 2008 und eine DM600.

    3 Mal editiert, zuletzt von msatter ()

  • Ghost


    Es gibt eh schon rechlich EPG Events auf die man subscriben könnte, da kähme es auf einen start/end save/load auch nicht mehr an :grinning_squinting_face:


    Das man nicht einfach synchrone Sachen ins enigma2 machen sollte verstehe ich auch, nur in dem Fall bräuchte ich es halt synchron, weil bevor das Sichern fertig ist mach es einfach keinen Sinn was mit der epg.db anzufangen.


    Eigentlich weckt das load/save beim EPG einfach falsche Erwartungshaltungen weil es eigentlich ein startLoad und ein startSave ist :smiling_face_with_sunglasses:


    Intern müsst Ihr ja sowieso eine Flag im code haben wo gespeichert wird ob gerade ein load/save läuft, und in der enigma.py gibt es eh schon ein chacheState, könnte man das nicht auch in eine routine wrappen die dann halt 0 (memory) 1 (loading) 2 (saving) zurückliefert bis es fertig ist ?


    Dann kann sich jeder selber Abfrage und Timer bauen, um zu überprüfen ob load/save fertig ist und wir brauchen nicht unbedingt noch einen Event/messagehandler einbinden ?


    Oder wenn das load/save async bleiben dann würde auch sowas wie das was ich als Workaround als isSaving gestricked habe reichen - also ein eEPGCache.busy (mit optionalem timeout=30) das solange nicht zurück kommt wie eben noch ein load/save läuft. Dann kann man das load/save async starten und sync aufs Ende warten - falls man möchte. oder es braucht und sonst bliebe es async wie es ist.


    Letztendlich müssen wir aber sowieso nehmen was wir kriegen, aber irgend eine Möglichkeit das sauber zu lösen wäre schon sehr nett.
    Jetzt ist es halt unsauber, weil wenn ich die Datenbank connecte während sie noch oder eben erst geschrieben wird, dann passieren die komischen Geisterjournals, oder das save geht schief, etc. und das ist noch unbefriedigender und macht die Sache recht mühsam.


    LG
    gutemine


    msatter


    Das haben wir doch schon diskutiert, wenn das enigma2 externe events irgnoriert auch beim Housekeeping, dann brauche wir ein eigenes Housekeeping was die alten Sachen rauslöscht, du kannst nicht davon ausgehen das jeden Tag oder hintereinander das Gleiche immer wieder geladen wird, wenn du also EPG Daten für DE geladen hast und dich dann entscheidest nur mehr UK zu laden, dann werden wenigstens morgen (oder wenn das keep old vorbei ist) alle gestern geladenen DE externen EPG events gelöscht und damit in Folge wieder die Daten vom Transponder genommen. Und deswegen auch das Housekeeping nach dem change date und nicht nach begin Zeit, weil sonst müsstest du bis zu 28 Tage warten bis der Eisberg an geladenen EPG Daten von alleine abschmilzt, weil nur immer abgelaufene tage gelöscht würden. Das change date ist also besser, auch wenn man dann das selbe gleich wieder ladet. Aber es können auch Sendungsänderungen zu gestern passiert sein, insofern macht das schon auch da Sinn. Ich werde bis Ghost uns was schönes baut halt die saving routine noch cleverer machen, das handling der journal files habe ich ja gestern erst sehr spät eingebaut, das ist sicher nicht perfekt.


    EDIT: Ich habe eine r12 gemacht wo das checking ob noch geschrieben wird über die modification time läuft, sprich wenn seit 5 Sekunden nichts mehr geschrieben wurden, kein journal mehr da ist und die size der epg.db > 23k ist - dann ist sturmfreie Bude :grinning_squinting_face:

    3 Mal editiert, zuletzt von Lost in Translation ()

  • Keine weiteren Problemberichte mehr zur 2.1-r12 :smiling_face_with_sunglasses:


    Dann würde ich die saving routine im epgb.py die das Warten bis das Speichern der epg.db abgeschlossen ist sicherstellt erstmals so lassen und warten was wir von DMM bekommen um das etwas weniger holprig zu lösen.


    PS: Die selbe routine ist jetzt übrigens auch in der letzten Version vom EPGdbBackup Plugin drinnen.


    LG
    gutemine

  • hatte die r12 installiert und das automatische laden von UK xml eingestellt


    laut timestamp im plugin ist es gelaufen,
    und auch in die EPG sehe ich neue einträge die gestern nicht da waren


    zieht also gut aus


    werde das mal weiter verfolgen,
    und hoffentlich auch bald zeit für ein bisschen zu vergleichen mit die 8000 und kleine doku zu schreiben

  • Danke, besondern nett wäre wenn du auch das EPGdbBackup kurz beschreiben würdest, weil das kann in der Zwischnezeit auch eigentlich fast alles was man so rund um die epg.db brauchen kann, nicht nur sichern und wiederherstellen

  • Da ist nicht viel zu lesen, ist eigentlich selbsterklärend du kannst entweder regelässig die epg.db sichern oder explizit auf Grün und Laden geht explizit auf gelb.


    Nur die ganzen DB Befehle auf blau muss man ... ausprobieren ...

  • Die r11 hatte ich zuletzt getestet und bei der Probeaufnahme stimmte dann auch die Sendungsbeschreibung.


    Keine Ahnung, ob gutemine in der Richtung überhaupt irgendwas geändert hat.


    Und ich hatte dann doch mal die Beschreibungen von EPGImport und CrossEPG verglichen, sah sehr identisch aus.

    Alptraumbox. :thumbs_up:

  • die r11 hatte aber ein problem mit recht grossen epg.db, die r12 sollte damit besser umegehen können ... hoffentlich ... aber das findet Ihr schon raus ...

  • r12 habe ich installiert, hatte jedoch noch keine Gelegenheit, explizit zu testen.


    Meine Datenbank ist so zwischen 30 MB nach EPGImport und 40 MB nach EPGRefresh.


    Nächste planmäßige BBC-Aufnahme mit einer r12-Datenbank beginnt morgen ab 19 Uhr 57. :smiling_face:


    Und jetzt senke ich mein Haupt zur Nachtruhe. :sleeping_face:

    Alptraumbox. :thumbs_up:

  • Ghost


    Intern müsst Ihr ja sowieso eine Flag im code haben wo gespeichert wird ob gerade ein load/save läuft, und in der enigma.py gibt es eh schon ein chacheState, könnte man das nicht auch in eine routine wrappen die dann halt 0 (memory) 1 (loading) 2 (saving) zurückliefert bis es fertig ist ?


    Es gibt eine update nach 4.2.1r11:


    + loadFinished,
    + saveFinished



    git.opendreambox.org

    DM.One AIO, DM920, DM7080 archiviert DM8000 aus Dezember 2008 und eine DM600.

  • Ich habe es gesehen, aber ich muss es mir erst ansehen wie man das verwendet und den code vom epgdb.py dann entsprechend anpassen damit das EPGImport und OpenEPG Plugin damit auch richtig funktionieren.


    Aber Wochenende hat auch erst angefangen ... und ein bisschen Input wie man es verwendet wäre auch nicht schlecht :face_with_rolling_eyes:

    2 Mal editiert, zuletzt von Lost in Translation ()

  • Ich komme gar nicht soweit, weil scheinbar hat DMM da was kaputt gemacht, nicht mal ein simples


    Code
    self.epginstance = eEPGCache.getInstance()
    eEPGCache.load(self.epginstance)


    einer vorher durch einen enigma2 restart auf /etc/enigma2/epg.db rausgeschriebenen EPG Datenbank geht mehr ohne das es crashed:



    beim sichern passiert das gleiche :loudly_crying_face:

  • Danke, aber kein Stress ich komme eh erst Abends wieder zum basteln und ausser mir verwendet das leider eh keiner :loudly_crying_face:


    Zur "Strafe" würde ich mich dann aber auch über ein paar Zeile freuen wie man das chachestate verwenden soll