Bug 36899

Summary: Make DumpRenderTree parallelizable (fix local database concurent access)
Product: WebKit Reporter: Csaba Osztrogonác <ossy>
Component: Tools / TestsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: beidson, darin, dpranke, eric, levin, ojan
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on:    
Bug Blocks: 33153    
Attachments:
Description Flags
proposed patch
none
proposed patch
eric: review-
updated patch
none
Patch
none
Patch eric: review+

Csaba Osztrogonác
Reported 2010-03-31 12:43:58 PDT
Now we can't run more than one DumpRenderTree on one machine, because DRT processes use same temporary directory for local storage, icon database, etc. (Or one DRT per user on Mac because of user temp.) Running more DRT on one machine is useful if more then one people (or buildbot) work on a powerful multicore server, or if you would like to make run-webkit-test script parallel to decrease runtime of layouttesting.
Attachments
proposed patch (3.15 KB, patch)
2010-03-31 13:08 PDT, Csaba Osztrogonác
no flags
proposed patch (3.16 KB, patch)
2010-03-31 23:09 PDT, Csaba Osztrogonác
eric: review-
updated patch (3.19 KB, patch)
2010-04-07 03:44 PDT, Csaba Osztrogonác
no flags
Patch (3.49 KB, patch)
2010-04-09 00:12 PDT, Csaba Osztrogonác
no flags
Patch (3.41 KB, patch)
2010-04-09 00:16 PDT, Csaba Osztrogonác
eric: review+
Csaba Osztrogonác
Comment 1 2010-03-31 13:08:09 PDT
Created attachment 52199 [details] proposed patch This patch tested and works on Qt-linux and on Mac-Leopard. Now the temporary directory for local storage and icon db is ~/.local on Qt, it will be $TMP/DumpRenderTree-XXXXXX with this patch. On Leopard it was ~/Library/Application Support/DumpRenderTree and it will be $TMP/DumpRenderTree-XXXXXX (here it was user temp) This patch would solve many strange storage, workers crashes on Qt bots.
David Levin
Comment 2 2010-03-31 14:12:29 PDT
I don't think the Mac OS X change is correct. There are a lot more places than this that use the home directory. It is better just to change the home directory for that platform rather than use this other environment variable.
Csaba Osztrogonác
Comment 3 2010-03-31 14:49:54 PDT
(In reply to comment #2) I think Mac DumpRenderTree only use home directory in this place. I can't find other places, but it is possible there are. As far as I know, now all database can be found here: ~/Library/Application Support/DumpRenderTree I consider it isn't a good idea to change home directory, I think it is an ugly hack. And I'm not sure if it works. --- There are some other files in user temp, but it is an other problem what we should fix: (On Mac now it is /var/folders/zz/zz7dAsWSGUu8b-4hUGMKs++++TY/-Tmp- On Qt-Linux there isn't user temp, there is only the global /tmp) - access-control-preflight-headers-status - appcache_counter - appcache_manifest_counter - network-simulator-state - preflightCache.txt - preflightCacheInvalidationByHeader.txt - preflightCacheInvalidationByMethod.txt - preflightCacheTimeout.txt - resource-count
Darin Adler
Comment 4 2010-03-31 17:38:13 PDT
Comment on attachment 52199 [details] proposed patch > + return [NSString stringWithCString: getenv("DUMPRENDERTREE_TEMP")]; The correct function for this is: -[NSFileManager stringWithFileSystemRepresentation:length:] The stringWithCString function will not work properly for non-ASCII characters.
Csaba Osztrogonác
Comment 5 2010-03-31 23:09:31 PDT
Created attachment 52261 [details] proposed patch Mac code is fixed by the advice of Darin.
Csaba Osztrogonác
Comment 6 2010-04-06 04:56:50 PDT
Anybody for review, please?
Eric Seidel (no email)
Comment 7 2010-04-06 20:57:51 PDT
Comment on attachment 52261 [details] proposed patch I don't believe that this is sufficient to make Mac work, but it is probably better than what we have now. Also, why call getenv so many times? Why not just once and cache the result in a local variable? Do we know if this makes the IconDatbase crashers on the Qt bot go away?
Csaba Osztrogonác
Comment 8 2010-04-07 02:50:27 PDT
(In reply to comment #7) > (From update of attachment 52261 [details]) > I don't believe that this is sufficient to make Mac work, but it is probably > better than what we have now. This patch isn't enough to make Mac work, but it is necessary to avoid concurent database file accessses. We have ideas to fix other problems mentioned here and in the master bug. But I don't want to upload a very big patch for review. I prefer one patch for one separated fix. > Also, why call getenv so many times? Why not just once and cache the result in > a local variable? You're right, it isn't so nice, I'll fix. New patch is coming soon. > Do we know if this makes the IconDatbase crashers on the Qt bot go away? I'm not sure enough, but I hope yes. I didn't want to apply this patch for testing on the official bot before landing, because I'm afraid of svn conflict and following fresh build. :))
Csaba Osztrogonác
Comment 9 2010-04-07 03:44:15 PDT
Created attachment 52726 [details] updated patch use local variable instead of calling getenv many times
Csaba Osztrogonác
Comment 10 2010-04-08 23:17:56 PDT
(In reply to comment #9) > Created an attachment (id=52726) [details] > updated patch > use local variable instead of calling getenv many times One more reaseon why this patch is useful: https://bugs.webkit.org/show_bug.cgi?id=37279 (We really need it to avoid false positive alarms)
Eric Seidel (no email)
Comment 11 2010-04-08 23:31:48 PDT
Comment on attachment 52726 [details] updated patch Stylistically this is wrong. variable names are wrong, spacing is wrong. You changed only one caller of getenv. This is an incomplete hack. It's a step in the right direction, but not a full fix.
Csaba Osztrogonác
Comment 12 2010-04-09 00:12:49 PDT
Csaba Osztrogonác
Comment 13 2010-04-09 00:16:32 PDT
Eric Seidel (no email)
Comment 14 2010-04-09 00:17:36 PDT
Comment on attachment 52943 [details] Patch OK. I look forward to hearing good things from the Qt bot.
Csaba Osztrogonác
Comment 15 2010-04-09 04:57:38 PDT
(In reply to comment #13) > Created an attachment (id=52943) [details] > Patch Landed in: http://trac.webkit.org/changeset/57328
Note You need to log in before you can comment on or make changes to this bug.