[mythtv-users] find_orphans.py

Mark Perkins perkins1724 at hotmail.com
Thu May 15 01:02:02 UTC 2014



> On 15 May 2014, at 9:42 am, "Jack McGee" <jack at greendesk.net> wrote:
> 
>> On 05/13/2014 09:24 PM, Jack McGee wrote:
>>> On 05/13/2014 07:59 PM, Mark Perkins wrote:
>>> 
>>>>> On 14 May 2014, at 7:48 am, "Jack McGee" <jack at greendesk.net> wrote:
>>>>> 
>>>>>> On 05/13/2014 01:40 PM, Raymond Wagner wrote:
>>>>>> On 5/13/2014 2:06 PM, Jack McGee wrote:
>>>>>> I'm on Mythbuntu, 12.04, .27 and using the script:
>>>>>> 
>>>>>> python /usr/share/mythtv/find_orphans.py
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> nothing has happened as a result. I know from experience, this can take some time, but after a day, I can't see any difference. In the mythbackend.log:
>>>>> You can't just run it. It's interactive. It requires you check and confirm what it wants to delete before it will actually issue those commands to the backend.
>>>> I did, picked a choice, answered yes. Actually tried every choice. A
>>>> multiple times.
>>>> 
>>>> 
>>>> ...
>>> Remember that with MythTV slow delete the delete can take minutes / hours / days depending on volume to be deleted. And I think mythbackend needs to be running while deleting. Perhaps you may have queued files to be deleted multiple times?
>> 
>> Thanks. I think that was it.  Took more than a day to delete recording entries, but they are gone now.  Still waiting on the other orphans, but will wait longer....
> 
> 
> Script crashed, I will paste that below.   Went to the frontend and it removed most of my recordings, including many that were intact. I restored database from last night's backup, and I guess I will just delete the orphaned files from the frontend interface.
> 
> I have had this in crontab for years:
> 15 1 * * * perl /usr/share/mythtv/optimize_mythdb.pl >/dev/null 2>&1 # JOB_ID_1
> 
> 
> Traceback (most recent call last):
>  File "/usr/share/mythtv/find_orphans.py", line 231, in <module>
>    main()
>  File "/usr/share/mythtv/find_orphans.py", line 167, in main
>    recs, zerorecs, orphvids, orphimgs, dbbackup, unfiltered = populate(host)
>  File "/usr/share/mythtv/find_orphans.py", line 72, in populate
>    for sg in DB.getStorageGroup():
>  File "/usr/lib/python2.7/dist-packages/MythTV/database.py", line 1397, in getStorageGroup
>    yield StorageGroup.fromRaw(row, self)
>  File "/usr/lib/python2.7/dist-packages/MythTV/database.py", line 128, in fromRaw
>    cls._setClassDefs(db)
>  File "/usr/lib/python2.7/dist-packages/MythTV/database.py", line 82, in _setClassDefs
>    cls._field_order = db.tablefields[cls._table]
>  File "/usr/lib/python2.7/dist-packages/MythTV/database.py", line 1146, in __getitem__
>    with self._db.cursor(self._log) as cursor:
>  File "/usr/lib/python2.7/dist-packages/MythTV/connections.py", line 139, in cursor
>    conn = self.acquire()
>  File "/usr/lib/python2.7/dist-packages/MythTV/connections.py", line 93, in acquire
>    conn = self._connect()
>  File "/usr/lib/python2.7/dist-packages/MythTV/connections.py", line 114, in _connect
>    return dbmodule.dbconnect(self.dbconn, self.log)
>  File "/usr/lib/python2.7/dist-packages/MythTV/_conn_mysqldb.py", line 25, in dbconnect
>    charset='utf8')
>  File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
>    return Connection(*args, **kwargs)
>  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__
>    super(Connection, self).__init__(*args, **kwargs2)
> _mysql_exceptions.OperationalError: (1040, 'Too many connections')
> mythuser at PVR1:/var/log/mythtv$ python /usr/share/mythtv/find_orphans.py
> Traceback (most recent call last):
>  File "/usr/share/mythtv/find_orphans.py", line 231, in <module>
>    main()
>  File "/usr/share/mythtv/find_orphans.py", line 167, in main
>    recs, zerorecs, orphvids, orphimgs, dbbackup, unfiltered = populate(host)
>  File "/usr/share/mythtv/find_orphans.py", line 72, in populate
>    for sg in DB.getStorageGroup():
>  File "/usr/lib/python2.7/dist-packages/MythTV/database.py", line 1397, in getStorageGroup
>    yield StorageGroup.fromRaw(row, self)
>  File "/usr/lib/python2.7/dist-packages/MythTV/database.py", line 128, in fromRaw
>    cls._setClassDefs(db)
>  File "/usr/lib/python2.7/dist-packages/MythTV/database.py", line 82, in _setClassDefs
>    cls._field_order = db.tablefields[cls._table]
>  File "/usr/lib/python2.7/dist-packages/MythTV/database.py", line 1146, in __getitem__
>    with self._db.cursor(self._log) as cursor:
>  File "/usr/lib/python2.7/dist-packages/MythTV/connections.py", line 139, in cursor
>    conn = self.acquire()
>  File "/usr/lib/python2.7/dist-packages/MythTV/connections.py", line 93, in acquire
>    conn = self._connect()
>  File "/usr/lib/python2.7/dist-packages/MythTV/connections.py", line 114, in _connect
>    return dbmodule.dbconnect(self.dbconn, self.log)
>  File "/usr/lib/python2.7/dist-packages/MythTV/_conn_mysqldb.py", line 25, in dbconnect
>    charset='utf8')
>  File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
>    return Connection(*args, **kwargs)
>  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__
>    super(Connection, self).__init__(*args, **kwargs2)
> _mysql_exceptions.OperationalError: (1040, 'Too many connections')
> mythuser at PVR1:/var/log/mythtv$ python /usr/share/mythtv/find_orphans.py
> Traceback (most recent call last):
>  File "/usr/share/mythtv/find_orphans.py", line 231, in <module>
>    main()
>  File "/usr/share/mythtv/find_orphans.py", line 167, in main
>    recs, zerorecs, orphvids, orphimgs, dbbackup, unfiltered = populate(host)
>  File "/usr/share/mythtv/find_orphans.py", line 72, in populate
>    for sg in DB.getStorageGroup():
>  File "/usr/lib/python2.7/dist-packages/MythTV/database.py", line 1397, in getStorageGroup
>    yield StorageGroup.fromRaw(row, self)
>  File "/usr/lib/python2.7/dist-packages/MythTV/database.py", line 128, in fromRaw
>    cls._setClassDefs(db)
>  File "/usr/lib/python2.7/dist-packages/MythTV/database.py", line 82, in _setClassDefs
>    cls._field_order = db.tablefields[cls._table]
>  File "/usr/lib/python2.7/dist-packages/MythTV/database.py", line 1146, in __getitem__
>    with self._db.cursor(self._log) as cursor:
>  File "/usr/lib/python2.7/dist-packages/MythTV/connections.py", line 139, in cursor
>    conn = self.acquire()
>  File "/usr/lib/python2.7/dist-packages/MythTV/connections.py", line 93, in acquire
>    conn = self._connect()
>  File "/usr/lib/python2.7/dist-packages/MythTV/connections.py", line 114, in _connect
>    return dbmodule.dbconnect(self.dbconn, self.log)
>  File "/usr/lib/python2.7/dist-packages/MythTV/_conn_mysqldb.py", line 25, in dbconnect
>    charset='utf8')
>  File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
>    return Connection(*args, **kwargs)
>  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__
>    super(Connection, self).__init__(*args, **kwargs2)
> _mysql_exceptions.OperationalError: (1040, 'Too many connections')
> 
> _______________________________________________
> 
Someone who knows how it really works will comment shortly but I think you ran out of connections to the database.

What distribution are you running? Do you have a /etc/mysql/conf.d/mythtv.cnf file, if yes what is the value of the max_connections parameter. If you don't have that file (or parameter in that file) you may need to check /etc/mysql/my.cnf

I believe MySQL default value is 100 but recommendation is to increase this to 250 or so by adding a mythtv.cnf file, see about 3rd post here http://www.gossamer-threads.com/lists/mythtv/users/554094.



More information about the mythtv-users mailing list