<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 22, 2020, 11:47 AM Stephen Worthington, <<a href="mailto:stephen_agent@jsw.gen.nz" target="_blank" rel="noreferrer">stephen_agent@jsw.gen.nz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Sun, 22 Mar 2020 13:00:09 +0000, you wrote:<br>
<br>{snip} <br>
<br>
You want to only move recordings when the backend is not in use for<br>
playback, and to not move any recordings which are currently still<br>
recording or being used for commercial skip processing.  A crude way<br>
to do that is to just schedule the move job for say the early hours of<br>
the morning, and check that you have enough time between then and the<br>
next recording time.  You can get the next recording time using the<br>
Services API.  But if someone has paused the playback of a recording<br>
that is on the SSD, you could still get into trouble that way as I<br>
believe paused playback keeps the recording file open.  So a better<br>
way to handle this is to also check the contents of the inuseprograms<br>
database table.  If it is not empty, do not move any file listed in<br>
it.  There is still a potential problem even then, as there seems to<br>
be a bug (in v30 anyway) where the DBCleanup job that is run<br>
automatically at some random time each day cleans up the inuseprograms<br>
table and manages to delete all the entries, even ones that are<br>
current.  It is only supposed to clean up old stale entries, and its<br>
code that I glanced at should only do that, but it actually always<br>
seems to delete all entries on my system.  Then as the jobs update<br>
their inuseprograms table entries, the entries re-appear over several<br>
minutes.  If your file moving script takes into account the<br>
inuseprograms, then it potentially could be run safely at any time. It<br>
would want to only copy the files and re-check inuseprograms before<br>
deleting the source file in case something has started using the file<br>
while the copying was happening.  And the destination file should have<br>
a different name from the source file until the source file has been<br>
deleted so that MythTV does not see two copies of the same file while<br>
the move is in progress.<br>
<br>
I have some Python code ("mythsgu") that moves MythTV recordings,<br>
which has all this sort of thing in it.  It aborts any move that is<br>
under way whenever it thinks mythbackend is becoming busy, rather than<br>
just avoiding files listed in inuseprograms.  Let me know if you would<br>
like a copy.<br>{snip} </blockquote></div></div><div dir="auto"><br></div><div dir="auto">I'd love to see that script. </div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
</blockquote></div></div></div>