[mythtv-users] Upgrading from pre-0.22 MythTV versions

Raymond Wagner raymond at wagnerrp.com
Fri Mar 30 04:30:56 UTC 2012


On 3/29/2012 23:58, f-myth-users at media.mit.edu wrote:
>      >  Date: Thu, 29 Mar 2012 23:31:19 -0400
>      >  From: Raymond Wagner<raymond at wagnerrp.com>
>      >  If the user installs a newer version of MythTV anywhere on the network,
>      >  and detects the wrong instance of MythTV over UPNP, they could tell
>      >  mythtv-setup to upgrade the wrong database.
>
> Is the detection automatic, or would I be prompted?  Alternately, if I
> firewalled ports 1900 and 2869 on the old backend (or the new machine :),
> I assume this would inhibit this behavior without breaking anything else?
>
> (I -hope- this is moot---UPNP went into myth in... 0.22?  I can't remember.
> I think my backend is too old to respond, but I don't know for sure.
> netstat -l shows nothing listening on either of those ports on my master,)

UPnP detection operates on UDP 239.255.255.250:1900.  Every UPnP device 
or software listens on that address for queries or announces.  Each 
query or announce carries in the datagram an independent address and 
port that it will be listening on for a response.  For MythTV, this is 
the HTTP server at port 6544.  IIRC, there was a dialog that would pop 
up detailing the discovered backends, allowing you to choose between 
them, but it has been a long time since I've used it.

This UPnP autodetection can be stopped by running `mythbackend` with the 
--noupnp flag, or by having your backend listen on 127.0.0.1, or by 
leaving the PIN empty.  Alternatively, setting the PIN to anything other 
than 0000 will require you to supply the proper pin back before the 
backend will give up the access credentials.  Should the remote machine 
retrieve those credentials from the backend successfully, the database 
must still be configured to accept those credentials from that host, 
however with many users simply using a blanket subnet GRANT, that is not 
unlikely.

Also note that mythtv-setup still requires the user to manually 
authorize the update.  Only the master backend running detached from a 
terminal will update anything without asking first.  On the other hand, 
if users didn't have the propensity to click anything and everything 
without reading, viruses wouldn't be the problem they are today.  In the 
interest of full disclosure, even I managed to do just that several 
months back, upgrading my production install from `mythtv-setup` on a 
test system I was configuring with a later version of 0.25pre.  I'm 
configuring a new database, of course I want to update it to the current 
schema!

>      >  In either case, MythTV will
>      >  find somewhere to make a database backup, allowing the mistake to be
>      >  reverted.
>
> Who makes the backup?  The new master or the old master?  My old
> master predates these automatic backups (I have alternate tools).

All updates are run by the application that thinks the database should 
be updated.  Nothing gets routed through any other system besides the 
database sever itself.

> Is the code that updates the schema smart enough to bail out without
> doing anything if the backup fails, such as due to a disk-full?  I can
> think of more than one filesystems on my old master where a bulky ~1GB
> backup could conceivably fail in some circumstances.

There are a number of different paths the backup script will attempt, 
including any defined storage directories, the users home directory, and 
/tmp, before it eventually gives up and proceeds with the update without 
a backup.  By default, backups are gzipped in flight on their way to the 
filesystem, so you're looking at a pretty massive database before your 
dump manages to hit 1GB compressed.



More information about the mythtv-users mailing list