henkelis / sonospy

Sonospy is a UPnP control point and Windows Media proxy for the Sonos multi-room audio system.
GNU General Public License v3.0
113 stars 16 forks source link

I/O error, when scanning large data-portions #75

Open Claus2 opened 10 years ago

Claus2 commented 10 years ago

Hi Mark, your solution is so promising, that I would really like to get it work. Actually, I get an I/O-Error with the scan. It works well for smaller portions, but at some Level, the scan ends with an I/O error. There are a lot of tags and a big amount of tag-data involved (classical Music), could this cause a Problem? Would be great, if you could help me to solve this Problem. Thank you in advance. Claus

Test-log (last lines) New file found: 142122$Norma BurrowesSheila ArmstrongSusan LongfieldMa - Serenade to Music (original version with 16 solois.mp3, /share/HDADATA/sonos-m3u/V/Vaughan Williams - The Lark Ascending Tallis Fantasia Processing tags \ EXITING on unhandled exception - See errors/ErrorDump-20141019-035511.txt ./gettags.py -d Sonospy.db /share/sonos-m3u ./movetags.py -s Sonospy.db -d Sonospy.db

error-log <class 'sqlite3.OperationalError'> Python 2.7: /usr/bin/python Sun Oct 19 03:55:10 2014

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

/share/HDA_DATA/Public/sonospy/sonospy-msrefactor5/sonospy/movetags.py in () 2592 2593 if name == "main": 2594 status = main() 2595 sys.exit(status) 2596 status undefined main =

/share/HDA_DATA/Public/sonospy/sonospy-msrefactor5/sonospy/movetags.py in main(argv=None) 2587 empty_database(trackdatabase) 2588 check_target_database_exists(trackdatabase) 2589 process_tags(args, options, tagdatabase, trackdatabase) 2590 filelog.close_log_files() 2591 return 0 global process_tags = args = [] options = <Values at 0xaabf30: {'the_processing': 'remove'...b', 'quiet': False, 'tagdatabase': 'Sonospy.db'}> tagdatabase = '/share/HDA_DATA/Public/sonospy/sonospy-msrefactor5/sonospy/Sonospy.db' trackdatabase = '/share/HDA_DATA/Public/sonospy/sonospy-msrefactor5/sonospy/Sonospy.db'

/share/HDA_DATA/Public/sonospy/sonospy-msrefactor5/sonospy/movetags.py in process_tags(args=[], options=<Values at 0xaabf30: {'the_processing': 'remove'...b', 'quiet': False, 'tagdatabase': 'Sonospy.db'}>, tagdatabase='/share/HDA_DATA/Public/sonospy/sonospy-msrefactor5/sonospy/Sonospy.db', trackdatabase='/share/HDA_DATA/Public/sonospy/sonospy-msrefactor5/sonospy/Sonospy.db') 69 cs1 = db1.cursor() 70 cs1.execute("attach '' as tempdb") 71 cs1.execute("""create table tempdb.tags_update as select * from tags_update""") 72 cs1.execute("""create table tempdb.tags as select * from tags""") 73 cs1.execute("""create table tempdb.workvirtuals_update as select * from workvirtuals_update""") cs1 = cs1.execute = <class 'sqlite3.OperationalError'>: disk I/O error class = <class 'sqlite3.OperationalError'> delattr = <method-wrapper 'delattr' of OperationalError object> dict = {} doc = None format = getattribute = <method-wrapper 'getattribute' of OperationalError object> getitem = <method-wrapper 'getitem' of OperationalError object> getslice = <method-wrapper 'getslice' of OperationalError object> hash = <method-wrapper 'hash' of OperationalError object> init = <method-wrapper 'init' of OperationalError object> module = 'sqlite3' new = reduce = reduce_ex = repr = <method-wrapper 'repr' of OperationalError object> setattr = <method-wrapper 'setattr' of OperationalError object> setstate = sizeof = str = <method-wrapper 'str' of OperationalError object> subclasshook = unicode = weakref = None args = ('disk I/O error',) message = 'disk I/O error'

The above is a description of an error in a Python program. Here is the original traceback:

Traceback (most recent call last): File "./movetags.py", line 2594, in status = main() File "./movetags.py", line 2589, in main process_tags(args, options, tagdatabase, trackdatabase) File "./movetags.py", line 71, in process_tags cs1.execute("""create table tempdb.tags_update as select * from tags_update""") OperationalError: disk I/O error

henkelis commented 10 years ago

Hi, What filesystem are you creating the Sonospy database on? I use SQLite to create the database - it is giving a disk error, which can occur when using NFS. Mark.

Claus2 commented 10 years ago

Mark, thank you very much fort the quick reply.

I had placed sonospy in a shared folder on a QNAP, so this could well cause the problem.

Will check and report (test will take 36 hours).

Best regards

Claus.

Von: Mark Henkelis [mailto:notifications@github.com] Gesendet: Sonntag, 19. Oktober 2014 23:00 An: henkelis/sonospy Cc: Claus2 Betreff: Re: [sonospy] I/O error, when scanning large data-portions (#75)

Hi, What filesystem are you creating the Sonospy database on? I use SQLite to create the database - it is giving a disk error, which can occur when using NFS. Mark.

— Reply to this email directly or view it on GitHub https://github.com/henkelis/sonospy/issues/75#issuecomment-59665119 . https://github.com/notifications/beacon/9304229__eyJzY29wZSI6Ik5ld3NpZXM6QmVhY29uIiwiZXhwaXJlcyI6MTcyOTM3MTU5NSwiZGF0YSI6eyJpZCI6NDYyMzcwOTN9fQ==--ecb23cfa3af86ae5ad47d48d0d04a427614f17f0.gif

Claus2 commented 10 years ago

Mark, there must be another reason for the I/O error, there is no NFS involved and the error is still there. Looks like - cs1.execute("""create table tempdb.tags_update as select * from tags_update""") - has Problems with large amount of data. Could ram-storage be the Problem? The Qnap TS-112 shows only 32MB of it.

Another solution would be, to create the database with Windows and then move it to Unix and use it there. I tried it using the IP-address of the NAS and get the messages from the unix Proxy

customsd call success: True, args: {'containerType': 'MService', 'secureUri': 'http://10.136.148.22:50104/smapi/control', 'authType': 'Anonymous', 'name': 'TS112', 'sid': '240', 'presentationMapVersion': '4', 'presentationMapUri': u'http://10.136.148.22:50104/5e0fc086-1c37-4648-805c-ec2aba2b0a27.xml', 'pollInterval': '30', 'uri': 'http://10.136.148.22:50104/smapi/control', 'caps': ['search', 'trFavorites', 'alFavorites', 'arFavorites', 'ucPlaylists']}

/share/HDA_DATA/.qpkg/sonospy-msrefactor5/sonospy/brisa/core/webserver.py:534: UserWarning: path does not exist warnings.warn(invalid_path_exists)

/share/HDA_DATA/.qpkg/sonospy-msrefactor5/sonospy/brisa/core/webserver.py:537: UserWarning: path must be absolute warnings.warn(invalid_path_abs)

The Sonos Controller Shows the Index correctly, but when starting a title, it tells me "file not found".

Would be great, if you still have some ideas to get Sonospy running. Best regards, Claus

Claus2 commented 10 years ago

after some experiments, the solution for me is, to create the database under Windows, export the table "tracks" with sqliteBrowser as csv-file, adapt the path-info to Unix-Standards with Notepad++, reimport to Sonospy-db and copy the dB to Unix. It's not very handy, but works and is easier than expected. AND .... it allows me, to use your excellent tool, thank you very much for it.

henkelis commented 10 years ago

On 22/10/14 10:52, Claus2 wrote:

Mark, there must be another reason for the I/O error, there is no NFS involved and the error is still there. Looks like - cs1.execute("""create table tempdb.tags_update as select

  • from tags_update""") - has Problems with large amount of data. Could ram-storage be the Problem? The Qnap TS-112 shows only 32MB of it.

It could be. I have a Qnap, when I get some time I'll look into it.

Another solution would be, to create the database with Windows and then move it to Unix and use it there. I tried it using the IP-address of the NAS and get the messages from the unix Proxy

customsd call success: True, args: {'containerType': 'MService', 'secureUri': 'http://10.136.148.22:50104/smapi/control', 'authType': 'Anonymous', 'name': 'TS112', 'sid': '240', 'presentationMapVersion': '4', 'presentationMapUri': u'http://10.136.148.22:50104/5e0fc086-1c37-4648-805c-ec2aba2b0a27.xml', 'pollInterval': '30', 'uri': 'http://10.136.148.22:50104/smapi/control', 'caps': ['search', 'trFavorites', 'alFavorites', 'arFavorites', 'ucPlaylists']}

/share/HDA_DATA/.qpkg/sonospy-msrefactor5/sonospy/brisa/core/webserver.py:534: UserWarning: path does not exist warnings.warn(invalid_path_exists)

/share/HDA_DATA/.qpkg/sonospy-msrefactor5/sonospy/brisa/core/webserver.py:537: UserWarning: path must be absolute warnings.warn(invalid_path_abs)

That suggests that the path you have created from the scan is not one that the Qnap can understand (Windows vs Linux probably).