Hey Sean, I know you said you already did a thorough code review and fixed all the errors so you're not having any application errors, however, my guess would be there's still some kind of subtle recursion-related issue that's been overlooked. I would be real surprised if fileexists() does anything other than this:
return CreateObject("java","java.io.File").init(thepath).exists(); The only case in which I think you might find fileexists() creating extra overhead is in the case that there are massive (tens of thousands) of instances of it where the first character in the path is a / -- because under the hood, the only other thing it should be doing as far as I know is utilizing the CF server mappings. So if there are lots of mappings and the path starts with a / and moreso if it's got several slashes in it, then all those things combined could create some unexpected extra overhead. The extra slashes is an interesting issue also... it's funny because I never realized until CF8 that people were using mappings where the name of the mapping actually has extra slashes in it like "/com/mycompany" - I'd always thought mappings were atomic like "com", but apparently not. So when the file path is something like "/images/catalog/2/myfile", the part of the server responsible for mappings has to check for a mapping of "/images/catalog/2" then again for "/images/catalog" and finally for "/images". In the vast majority of cases, this doesn't cause any problems, but you can see how, particularly if the server had a lot of mappings, lots of calls to the map manager could potentially add up to some unusual problems related to memory. I'm actually not aware of having seen any confirmed cases in which it did cause a problem. It's possible you could be the first (or the first I've seen), although it wouldn't be my first guess. There is one way to find out however if fileExists is doing a lot more than you maybe need or want it to do and that would be to put it into a test harness and time its execution compared to the java equivalent I gave above and watch memory consumption on the machine. Don't do this on your development or staging server -- load CF8 onto a workstation and run it locally by itself to test this. I don't think you would need to run the web stress analyzer against it to know whether or not it's causing memory issues -- but load up the server with lots of mappings and use file paths that start with the forward slash / and have several slashes in them, to make sure you're testing the worst case scenario. Good luck! -- s. isaac dealey ^ new epoch isn't it time for a change? ph: 617.365.5732 http://onTap.riaforge.org/blog ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;192386516;25150098;k Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:307017 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4