Mauro,

your improvements to SchemaCache have also introduced an unanticipated 
problem triggered by download failure:
https://jira.codehaus.org/browse/GEOT-4467

You set a 10 second timeout on connections and reads. It turns out that 
some application schemas, including that used in the GeoServer 
app-schema tutorial, import this W3 schema, which often takes more than 
10 seconds to connect:
http://www.w3.org/2001/xml.xsd

Furthermore, when a download fails, an empty file is created in the 
cache, preventing further download attempts. The cache is poisoned and 
the file must be manually removed. For example, restarting GeoServer 
does not permit another download attempt.

I would like to fix these problems, but I need your advice because I am 
not familiar with your use of SchemaCache and I do not want to, in 
fixing one bug, introduce another and break client code.

(1) Why do you set a timeout at all? Just a best practice to avoid an 
application hang? (Good idea!) If so, the obvious workaround is to 
increase the timeout (60 seconds?) to accommodate slow servers. Would 
this be a satisfactory solution?

(2) Please look at the logic in SchemaCache.startDownload(). Why is it 
necessary to create an empty file? How should SchemaCache recover when a 
download fails? Please have a look and recommend a solution. I know you 
gave this some thought and I do not want to introduce a deadlock or 
thread blocking that might impact your performance.

The original AppSchemaCache had no timeout and did not write to a file 
until it had all the bytes of the remote resource, so 9.x is not 
affected by these issues.

Kind regards,

-- 
Ben Caradoc-Davies <ben.caradoc-dav...@csiro.au>
Software Engineer
CSIRO Earth Science and Resource Engineering
Australian Resources Research Centre

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to