Import stats from 1.4 into 2.0

Rich budman85 at eastlink.ca
Sat Mar 21 15:34:50 UTC 2009


Hi

Finally got the compile to work.  Although, not the code from svn.
I got the source from the slackware current rep to which seems to use 
two different lib builds.
They existed in the source tar ball.
libamarok_taglib.so.1
libamarokplasma.so.2

The version I tried compiling from svn was using libplasma.so.3,
which would not load the app beyond the splash screen.

Compiling the source from slackware current I ran into two issues.
First was an older libgpod, so I compiled a new 0.7.0 version.
Then that got it farther to 92%, and died with the thumbnails errors in 
iPod.
I found the 2.0-ipod patch and applied that.
Worked like a charm. :)

Amarok now runs.
Also, I noticed the libmysqld.a was missing from the mysql pkg.
So I added that and recompiled amarok.

Although adding the mysql lib doesn't show any sign of speeding up the 
collection.
2 hours after initial start, only 69% complete.

Just a thought, to speed up the collecting process,
maybe do it in phases. 
  - scan the filenames and update urls only
  - run first batch (maybe 250 titles) of queries to update db info
  - display list box in collection
  - continue background batch queries for remaining collection
  - as user adds tracks to the playlist, update db info if necessary

It would allow faster initial access to the system for a user that has
lots of songs (30K or more).  Waiting several hours on the initial build can
be frustrating. :)   I tried hitting cancel, to resume scanning later, but
it locked up the entire app.

Making the progress bar more active would lighten the fears of it being 
locked up?
Example of update intervals on a large group of files:
  5min - 5%
  10min - 14%
  20min - 32%
  30min - 55%
  40min - 69%
  120min - no update, still 69%




Thanks
Rich



Rich wrote:
> Hi
>
> I guess the first attempt at the svn compile was beginners luck. :)
> I was trying to recompile it now, which it does complete with no errors.
> However, when I try to run it, it constantly dies after the splash screen.
> So I was thought I may have overlooked a step in compiling it.
>
>
> I added options to add debugging to see if that showed anything useful.
> The failure doesn't produce any back trace.
>
> Starting program: /usr/local/bin/amarok --debug
> [Thread debugging using libthread_db enabled]
> [New Thread 0xb34416f0 (LWP 6107)]
> amarok: BEGIN: App::App()
> amarok: BEGIN: void App::continueInit()
> amarok: BEGIN: EngineController::EngineController()
> amarok: BEGIN: void EngineController::initializePhonon()
> amarok:         [EngineController] Tick Interval (actual):  100
> amarok: END__: void EngineController::initializePhonon() - Took 7.5s
> amarok: END__: EngineController::EngineController() - Took 7.5s
> amarok: BEGIN: MainWindow::MainWindow()
> <unknown program name>(6107)/: Communication problem with  "amarok" , it 
> probably crashed.
> Error message was:  "org.freedesktop.DBus.Error.NoReply" : " "Message 
> did not receive a reply (timeout by message bus)" "
> Program exited with code 0377.
> (gdb) KCrash: Application 'amarok' crashing...
> sock_file=/home/budman/.kde/socket-mars/kdeinit4_0_0
> kdeinit4: preparing to launch /usr/lib/kde4/libexec/drkonqi
> amarok: Fatal IO error: client killed
>
> I then ran a stack strace on the 'running' version from a latest distro pkg.
> I then compared it to the bad failing run.
>
> Its odd they pretty much run in sync, except when it tries to load the 
> fonts.
>
> Failing run:
>
> 19450 open("/usr/lib/mysql/libexpat.so.1", O_RDONLY) = -1 ENOENT (No 
> such file or directory)
> 19450 open("/usr/lib/libexpat.so.1", O_RDONLY) = 3
> 19450 read(3, 
> "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\37"..., 512) = 512
> 19450 fstat64(3, {st_mode=S_IFREG|0755, st_size=126996, ...}) = 0
> 19450 mmap2(NULL, 129724, PROT_READ|PROT_EXEC, 
> MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6101000
> 19450 mmap2(0xb611f000, 8192, PROT_READ|PROT_WRITE, 
> MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d) = 0xb611f000
> 19450 close(3)                          = 0
> 19450 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 
> -1, 0) = 0xb6100000
> 19450 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 
> -1, 0) = 0xb60ff000
> 19450 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 
> -1, 0) = 0xb60fe000
> 19450 set_thread_area({entry_number:-1 -> 6, base_addr:0xb60fe6d0, 
> limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_i
> n_pages:1, seg_not_present:0, useable:1}) = 0
> 19450 mprotect(0xb6268000, 4096, PROT_READ) = 0
> 19450 mprotect(0xb6280000, 4096, PROT_READ) = 0
> 19450 mprotect(0xb635c000, 4096, PROT_READ) = 0
> 19450 mprotect(0xb6706000, 77824, PROT_READ|PROT_WRITE) = 0
> 19450 mprotect(0xb6706000, 77824, PROT_READ|PROT_EXEC) = 0
> 19450 mprotect(0xb6874000, 8192, PROT_READ) = 0
> 19450 mprotect(0xb68ac000, 4096, PROT_READ) = 0
> 19442 stat64("/usr/share/fonts/TTF/DejaVuSans-Bold.ttf", 
> {st_mode=S_IFREG|0644, st_size=569432, ...}) = 0
> 19442 open("/usr/share/fonts/TTF/DejaVuSans-Bold.ttf", O_RDONLY) = 3
> 19442 fcntl64(3, F_SETFD, FD_CLOEXEC)   = 0
> 19442 fstat64(3, {st_mode=S_IFREG|0644, st_size=569432, ...}) = 0
> 19442 mmap2(NULL, 569432, PROT_READ, MAP_PRIVATE, 3, 0) = 0xae7b4000
> 19442 close(3)                          = 0
> 19442 brk(0x85a5000)                    = 0x85a5000
> 19442 brk(0x85c6000)                    = 0x85c6000
> 19442 brk(0x85e7000)                    = 0x85e7000
> 19442 clock_gettime(CLOCK_MONOTONIC, {425986, 258420178}) = 0
> 19442 clock_gettime(CLOCK_MONOTONIC, {425986, 258488039}) = 0
> 19442 clock_gettime(CLOCK_MONOTONIC, {425986, 258709591}) = 0
> 19442 clock_gettime(CLOCK_MONOTONIC, {425986, 258750991}) = 0
>
> 19442 select(9, [8], [8], NULL, NULL)   = -1 EBADF (Bad file descriptor)
> 19442 write(2, "amarok: Fatal IO error: client k"..., 38) = 38
> 19450 mprotect(0xb698b000, 16384, PROT_READ) = 0
> 19442 writev(5, [{"l\1\1\1D\0\0\0 
> \0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fr"..., 144},
>             {"?\0\0\0type=\'signal\',interface=\'org"..., 68}], 2) = -1 
> EBADF (Bad file descriptor)
> 19442 close(5)                          = -1 EBADF (Bad file descriptor)
> 19442 gettimeofday({1237150391, 171217}, NULL) = 0
> 19442 clock_gettime(CLOCK_REALTIME, {1237150391, 171297797}) = 0
> 19442 futex(0xbf943df8, 0x80 /* FUTEX_??? */, 1 <unfinished ...>
> 19447 <... poll resumed> [{fd=13, events=POLLIN|POLLERR|POLLNVAL, 
> revents=POLLNVAL}], 1, 333) = 1
> 19447 read(13, 0xb003f210, 72)          = -1 EBADF (Bad file descriptor)
> 19447 poll([{fd=13, events=POLLIN|POLLERR|POLLNVAL, revents=POLLNVAL}], 
> 1, 333) = 1
>              === thousands of the above line ====
> 19450 open("/usr/share/locale/locale.alias", O_RDONLY) = 3
> 19450 fstat64(3, {st_mode=S_IFREG|0644, st_size=2570, ...}) = 0
> 19450 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 
> -1, 0) = 0xb7505000
> 19450 read(3, "# Locale name alias data base.\n#"..., 4096) = 2570
> 19450 read(3, "", 4096)                 = 0
> 19450 close(3)                          = 0
> 19450 munmap(0xb7505000, 4096)          = 0
>
>
> Output from gdb:
>
> Starting program: /usr/local/bin/amarok --debug
> [Thread debugging using libthread_db enabled]
> [New Thread 0xb34416f0 (LWP 6107)]
> amarok: BEGIN: App::App()
> amarok: BEGIN: void App::continueInit()
> amarok: BEGIN: EngineController::EngineController()
> amarok: BEGIN: void EngineController::initializePhonon()
> amarok:         [EngineController] Tick Interval (actual):  100
> amarok: END__: void EngineController::initializePhonon() - Took 7.5s
> amarok: END__: EngineController::EngineController() - Took 7.5s
> amarok: BEGIN: MainWindow::MainWindow()
> <unknown program name>(6107)/: Communication problem with  "amarok" , it 
> probably crashed.
> Error message was:  "org.freedesktop.DBus.Error.NoReply" : " "Message 
> did not receive a reply (timeout by message bus)" "
> Program exited with code 0377.
> (gdb) KCrash: Application 'amarok' crashing...
> sock_file=/home/budman/.kde/socket-mars/kdeinit4_0_0
> kdeinit4: preparing to launch /usr/lib/kde4/libexec/drkonqi
> amarok: Fatal IO error: client killed
>
>
>
> That line "select(9, [8], [8], NULL, NULL)   = -1 EBADF (Bad file 
> descriptor)"
> 19442 write(2, "amarok: Fatal IO error: client k"..., 38) = 38
>
>
> In the good run, its
>
> 19642 select(9, [8], [8], NULL, NULL)   = 2 (in [8], out [8])
> and then continues to load the next font.
>
> Good run:
>
> 19642 stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3424, 
> ...}) = 0
> 19642 stat64("/usr/share/fonts/TTF/DejaVuSans-Bold.ttf", 
> {st_mode=S_IFREG|0644, st_size=569432, ...}) = 0
> 19642 open("/usr/share/fonts/TTF/DejaVuSans-Bold.ttf", O_RDONLY) = 14
> 19642 fcntl64(14, F_SETFD, FD_CLOEXEC)  = 0
> 19642 fstat64(14, {st_mode=S_IFREG|0644, st_size=569432, ...}) = 0
> 19642 mmap2(NULL, 569432, PROT_READ, MAP_PRIVATE, 14, 0) = 0xaef13000
> 19642 close(14)                         = 0
> 19642 brk(0x846e000)                    = 0x846e000
> 19642 brk(0x8490000)                    = 0x8490000
> 19642 brk(0x84b1000)                    = 0x84b1000
> 19642 clock_gettime(CLOCK_MONOTONIC, {426387, 295547393}) = 0
> 19642 clock_gettime(CLOCK_MONOTONIC, {426387, 295612875}) = 0
> 19642 clock_gettime(CLOCK_MONOTONIC, {426387, 295857156}) = 0
> 19642 clock_gettime(CLOCK_MONOTONIC, {426387, 295899380}) = 0
> 19642 select(9, [8], [8], NULL, NULL)   = 2 (in [8], out [8])
> 19642 read(8, 
> "\34T\37\3\213\0@\1,\1\0\0R\27j\31\0\220S\t,\1\0\0\230K"..., 4096) = 32
> 19642 writev(8, 
> [{"5\30\4\0\245\0@\1\210\1\0\0@\0@\0\236\4\5\0\246\0@\1\245"..., 624}], 
> 1) = 624
> 19642 read(8, 
> "\34K8\3\213\0@\1#\0\0\0`\'j\31\0\230\37\10\240K\311\277"..., 4096) = 128
>
>
> I compiled as:
>
> export KDEDIR=/usr
> export XDG_CONFIG_DIRS=/etc/xdg:/etc/kde/xdg
> export NUMJOBS="-j7"
> export SLKCFLAGS="-O0 -g"
>
> cd ~/svn/amarok
> mkdir -p build
> cd build
>   cmake \
>     -DCMAKE_BUILD_TYPE=debugfull \
>     -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
>     -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
>     -DCMAKE_BUILD_TYPE=None \
>     -DCMAKE_INSTALL_PREFIX=/usr \
>     -DMAN_INSTALL_DIR=/usr/man \
>     -DSYSCONF_INSTALL_DIR=/etc/kde \
>     ..
> make $NUMJOBS || make || exit 1
>
> I was hoping to add a debug line before the if  track compare in 
> FastForwardWorker.cpp
> to see what url is being generated.  I can change the table back to its 
> original state (I have backups)
> with the deviceid=-1 and last mount NULL. 
>
>
> Thanks
> Rich
>
>
>
> Rich wrote:
>   
>> Hi
>>
>> I tried the SQLite import, that worked fine.
>> I originally had some old entries in there before I enabled MySql in 1.4.
>>
>> Thanks, I found the table after looking a bit deeper. :)
>>
>> So I ran the sql in the mysql db to see why it wasnt being detected.
>> I found the deviceid in the stats table had 99% of the rows as -1
>> which matched NULL on the join.  So I issued an update to set
>> the deviceid to match a valid id in device table.  
>>
>> I tried the import again it failed with no tracks to import.
>>
>> When I run the query in mysql, I get 2600+ rows back.
>>
>> I did notice many of my paths in the url column were never updated.
>> So I ran a script on the column to correct the path of the files.
>>
>> I thought maybe it was a path issue.
>> So now I tried again, still not recognizing the tracks.
>>
>> Since the songs were collected when I ran 2.02 for the first time,
>> this would generate a new unique id.  Would this be causing the
>> tracks not be picked up?
>>
>> What determines a valid track in the import?
>>
>>
>>
>> Thanks
>> Rich
>>
>>
>> Seb Ruiz wrote:
>>     
>>> 2009/3/15 Rich <budman85 at eastlink.ca>:
>>>   
>>>       
>>>> Hi
>>>>
>>>> I tried importing old stats from mysql in amarok 1.4, but turns up with
>>>> no tracks found.
>>>>
>>>> I checked the source sql, the lastmountpoint column doesn't exist so the
>>>> import fails.
>>>> Is there another table missing or is this column not needed?
>>>>     
>>>>         
>>> The importer does a join on the device table, which contains this column.
>>>
>>> Are you getting any errors when running Amarok from the command line
>>> with the --debug option enabled?
>>>
>>>   
>>>       
>>>> SELECT lastmountpoint, S.url, createdate, accessdate, percentage,
>>>> rating, playcounter, lyrics from statistics ORDER BY lastmountpoint, url;
>>>> ERROR 1054 (42S22): Unknown column 'lastmountpoint' in 'field list'
>>>> mysql> describe statistics;
>>>> +-------------+--------------+------+-----+---------+-------+
>>>> | Field       | Type         | Null | Key | Default | Extra |
>>>> +-------------+--------------+------+-----+---------+-------+
>>>> | url         | varchar(255) | NO   | PRI |         |       |
>>>> | deviceid    | int(11)      | NO   | PRI | 0       |       |
>>>> | createdate  | int(11)      | YES  |     | NULL    |       |
>>>> | accessdate  | int(11)      | YES  |     | NULL    |       |
>>>> | percentage  | float        | YES  | MUL | NULL    |       |
>>>> | rating      | int(11)      | YES  | MUL | 0       |       |
>>>> | playcounter | int(11)      | YES  | MUL | NULL    |       |
>>>> | uniqueid    | varchar(32)  | YES  | UNI | NULL    |       |
>>>> | deleted     | tinyint(1)   | YES  |     | 0       |       |
>>>> +-------------+--------------+------+-----+---------+-------+
>>>>
>>>>
>>>> Thanks
>>>> Rich
>>>> _______________________________________________
>>>> Amarok mailing list
>>>> Amarok at kde.org
>>>> https://mail.kde.org/mailman/listinfo/amarok
>>>>
>>>>     
>>>>         
>>>
>>>   
>>>       
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Amarok mailing list
>> Amarok at kde.org
>> https://mail.kde.org/mailman/listinfo/amarok
>>   
>>     
> _______________________________________________
> Amarok mailing list
> Amarok at kde.org
> https://mail.kde.org/mailman/listinfo/amarok
>
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/amarok/attachments/20090321/ce6afa98/attachment.html>


More information about the Amarok mailing list