The likely cause is that you are not setting an explicit application
version number, so Tapestry supplies a random hex string.

http://zadachite-dev.appspot.com/assets/ctx/91328db67ddf7725/images/layout_v2/footer.jpg

91328db67ddf7725 is the application version number.

Each instance of you app in the cluster is generating its own random
version number, so a lot of times, the request simply isn't recognized
if it isn't handled by the same instance that rendered the overall
page.

On Mon, Apr 12, 2010 at 9:23 PM, Alex Kotchnev <akoch...@gmail.com> wrote:
> I spent some more time looking at this and I ended up removing the usage of
> the ${asset:context:css/foobar.css} from the main templates. After doing so,
> all of the issues related to the stylesheet (and the sub-stylesheets and
> images that it loads) were cleared up - now, the stylesheets load properly
> every time when they're not loaded through the asset service.
>
> I first thought that this might be an issue w/ how GAE handles static files
> - supposedly, all files in the web context are handled specially ( w/ the
> exception of JSPs of course, but that's not relevant in T5), probably served
> up from outside of Jetty (which is what runs the app in GAE) and there might
> be something that is weird in GAE giving access to those static assets.
> However, after I switched to just using the raw path to the css (w/o using
> the asset:context binding prefixes), I continued having the same
> intermittent access issues for assets that are served from a component.
> Which on its own indicates that the issue is somewhere between the Asset
> service (which I haven't looked at the source code for yet) and the way it
> uses the servlet API and/or the filesystem to serve the assets that it's
> asked for.
>
> I haven't moved all my css / image serving out of the asset service - it has
> some cool ideas in terms of being able to package the app. However,
> considering that I'm dealing w/ a fairly simple app, and despite that I like
> the ideas behind the asset service, I'll probably move off of it - I do
> recall seeing some mentions of an alternative binding prefix to serve the
> assets in question from a CDN ; however, considering that the google static
> file serving infrastructure is probably as good as serving from a CDN, I'll
> probably just stick to static files.
>
> Anyway, I thought this might be useful to someone else that might run into
> issues with the Asset service and GAE. It would be interesting to look at
> the asset service implementation and see if there is an issue to be filed w/
> GAE re: accessing resources (classpath and web context).
>
> Regards,
>
> Alex K
>
> On Mon, Apr 12, 2010 at 1:27 PM, akochnev_chub 
> <akoch...@commercehub.com>wrote:
>
>>
>> I've been running into some issues w/ the asset service, in that at times
>> it
>> responds to service requests with 404s. After "warming up" the app by
>> reloading the pages in question a few times, the asset service eventually
>> responds w/ the assets. However, this results in a very unreliable
>> rendering
>> of the pages  - at times (if the app happens to be "warm"), the pages
>> render
>> just fine; at other times, I have to reload them a few times before getting
>> to proper rendering. Below  are some more details on the issue, any
>> suggestions on how to deal w/ it would be highly appreciated.
>>
>>
>> There is a pretty good chance that this might be an issue w/ the underlying
>> platform (GAE), and the way it chooses to swap the application in and out;
>> however, if that were the case, I would have expected more of the requests
>> to fail instead of the page content rendering fine and then the assets not
>> returning in time.
>>
>> I think the issue is partially aggravated by the fact that I load the main
>> stylesheet as a context asset (asset:context:/css/foo.css or something
>> similar), instead of just using the "naked" (e.g. /css/foo.css w/o a
>> context: prefix) path to the css in the layout; as a result, all of the
>> "other" css (using yaml for layout) and the images referenced by the main
>> css depend on the asset service (e.g.
>>
>> http://zadachite-dev.appspot.com/assets/ctx/91328db67ddf7725/images/layout_v2/footer.jpg
>> )
>> instead of just being loaded as static files. I was thinking that switching
>> the reference to the main stylesheet to not be a context: reference and
>> marking the web app context resources as static (in the GAE web config
>> file)
>> might resolve the issue.
>>
>> So, here's an example :
>> 1. go to http://zadachite-dev.appspot.com (this is the "dev" version which
>> is unlikely to be warm right now)
>>
>> 2. Upon the initial loading of the pages, some of the graphics (more or
>> less
>> randomly) or stylesheets don't return as they get 404s:
>>
>> <html><head>
>> <meta http-equiv="content-type" content="text/html;charset=utf-8">
>> <title>404 Unable to locate asset
>> 'classpath:ctx/91328db67ddf7725/yaml/core/base.css' (the file does not
>> exist).</title>
>> </head>
>> <body text=#000000 bgcolor=#ffffff>
>> <h1>Error: Unable to locate asset
>> 'classpath:ctx/91328db67ddf7725/yaml/core/base.css' (the file does not
>> exist).</h1>
>> </body></html>
>>
>>
>> or for images, it's a straight 404 w/o any further response.
>>
>> 3. Browse to some of the other pages of the site - one by one, the
>> "missing"
>> assets start showing up one by one and eventually the layout renders
>> correctly. After the app is "warmed up" now, even if you refresh the page
>> including the initially cached assets, they load fine.
>> --
>> View this message in context:
>> http://old.nabble.com/Asset-service-issues-in-GAE-tp28219164p28219164.html
>> Sent from the Tapestry - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>
>>
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to