From: Stéphane S. <ste...@ep...> - 2012-05-29 10:59:00
|
Hi, I have an application running under Tomcat (with exist-1.4.1-rev15155) that exhibits a strange behavior: after a random period of time (somteimes some days), it starts failing to serve URLs with a 404 error for some URLs it served before without any problem. Morevover, the failure starts with some random URLs among the URL input space, and progressively contaminate more and more of the URLs. Here is an example of the 404 error which is returned by tomcat : HTTP Status 404 - /community/companies/100/logo/1.jpeg type Status report message /community/companies/100/logo/1.jpeg description The requested resource (/community/companies/100/logo/1.jpeg) is not available. Apache Tomcat/6.0.35 I have noticed that for failed URLs, the URLRewrite log file always leave a very short trace (to be compared with the trace for a successful URL see below in PS) and does not seem to return a <dispatch> element : 2012-05-29 12:19:04,377 [http-8080-5] TRACE (XQueryURLRewrite.java [doFilter]:185) - /community/companies/100/logo/1.jpeg 2012-05-29 12:19:04,378 [http-8080-5] TRACE (XQueryURLRewrite.java [doFilter]:215) - Processing request URI: /community/companies/100/logo/1.jpeg 2012-05-29 12:19:04,378 [http-8080-5] TRACE (XQueryURLRewrite.java [doFilter]:322) - URLRewrite took 1ms. Can anyone explain me what is happening in the URLRewrite filter in the failed URL case ? Why doesn't it return a <dispatch> element and why does the 3 lines long trace above leads to a 404 error ? I have tried to investigate URLRewrite source code, but not beeing familiar with servlet filters API, I cannot figure out what is happening.... Do you think that could be an issue with the URLRewriting cache ? As you can see in a successful trace in PS: below, my controller.xql code does not set the <cache-control cache="no"/> element. Should I set it explicitely to "no" to be sure it will not be used (in case it is the cause) ? Any help or suggestion would be very welcome :) Regards, Stéphane S. --- PS: complete trace for a successful URL 2012-05-29 12:19:29,489 [http-8080-5] TRACE (XQueryURLRewrite.java [doFilter]:185) - /community/companies/127/logo/1.jpeg 2012-05-29 12:19:29,490 [http-8080-5] TRACE (XQueryURLRewrite.java [doFilter]:215) - Processing request URI: /community/companies/127/logo/1.jpeg 2012-05-29 12:19:29,490 [http-8080-5] TRACE (XQueryURLRewrite.java [findSource]:716) - basePath=/ 2012-05-29 12:19:29,490 [http-8080-5] TRACE (XQueryURLRewrite.java [adjustPathForSourceLookup]:697) - request path=/community/companies/127/logo/1.jpeg 2012-05-29 12:19:29,490 [http-8080-5] TRACE (XQueryURLRewrite.java [adjustPathForSourceLookup]:708) - adjusted request path=community/companies/127/logo/1.jpeg 2012-05-29 12:19:29,490 [http-8080-5] TRACE (XQueryURLRewrite.java [findSource]:807) - Looking for controller.xql in the filesystem, starting from: / 2012-05-29 12:19:29,490 [http-8080-5] TRACE (XQueryURLRewrite.java [findSource]:838) - Found controller file: {ANONYMIZED}/tomcat/ROOT/community/companies/controller.xql 2012-05-29 12:19:29,491 [http-8080-5] DEBUG (XQueryURLRewrite.java [declareVariables]:922) - exist:path = /127/logo/1.jpeg exist:resource = 1.jpeg exist:controller = /community/companies 2012-05-29 12:19:29,491 [http-8080-5] TRACE (XQueryURLRewrite.java [logResult]:629) - <dispatch xmlns="http://exist.sourceforge.net/NS/exist"> <forward url="/community/companies/images.xql"> <add-parameter name="id" value="127"/> <add-parameter name="base-name" value="logo"/> <add-parameter name="image-id" value="1"/> <add-parameter name="image-ext" value="jpeg"/> </forward> </dispatch> |