VDR setzt eine Schreibsperre auf recordings, so lange externes Script läuft

  • Hi,


    beim Anschauen des Codes ist mir aufgefallen, dass VDR das mit


    --record


    übergebene Script manchmal aufruft, während ein LOCK_RECORDINGS_WRITE gesetzt ist. Dieser LOCK wird erst wieder freigegeben, wenn das Script beendet ist.

    Vermutlich ist das in der Praxis kein Problem, aber ich dachte, ich schreibe es auf mal auf. Falls es doch zu einem Problem führt. Betroffen sind: "copying", "copied" und "moved".


    Hier noch der relevante Code:


    recording.c, void cRecordingsHandler::Action(void):


    und in bool cRecordingsHandlerEntry::Active(cRecordings *Recordings):

    Code
    #define RUC_COPYINGRECORDING "copying"
    #define RUC_COPIEDRECORDING  "copied"
    #define RUC_MOVEDRECORDING   "moved"
    ...
    cRecordingUserCommand::InvokeCommand(RUC_COPYINGRECORDING, FileNameDst(), FileNameSrc());
    ...
    cRecordingUserCommand::InvokeCommand(RUC_COPIEDRECORDING, FileNameDst(), FileNameSrc());
    ...
    cRecordingUserCommand::InvokeCommand(RUC_MOVEDRECORDING, FileNameDst(), FileNameSrc());
    ...


    ~ Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • In Fällen wo "dauerlaufende" Scripts ein Problem sind ist es zumindest bei einem Shellscript extrem einfach das zu vermeiden.

    Der "Hack" mit "at" den man immer mal wieder sieht ist nämlich nie nötig gewesen.

    Einfach den gesamten Shell-Code klammern (normale runde Klammern) und hinter die schließende Klammer ein "&" setzen. Das gesamte Script läuft damit im Hintergrund und die VDR-Prozesse, die Scripte nutzen, werden nicht blockiert.

  • Siehe auch INSTALL:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!