Arne Kepp ha scritto:
Hm, looks like we have a heisenbug 
The GeoTools renderer has this unfortunate* behavior that it renders on a best effort basis and returns whatever it has when the error occurs. GeoServer can't tell when this has happened, and consequently GeoWebCache cannot either, so that it has not cached any partially rendered image should be attributed to luck.
Yep, it has been setup this way to render (unfortunately very common)
crap data, or at least data that does contain a certain amount of
invalid geometries.
My theory: The oracle_ng datastore or server is having connection problems or running into a bug. Depending on the circumstances, this can result in a partially rendered image, or in an outright exception (inimage exception -> image/png8). I would be surprised if we indeed lack synchronization to protect configuration changes, so how fast you click it is probably not important. There is some discussion of jdbc_ng and events on the GeoTools list right now, but it's probably unrelated.
>
Can you please carefully check the logs to look for jdbc_ng related exceptions? If there are none, can you enable verbose exceptions in the configuration and switch to the geoserver developer mode, then try to recreate the problem. I'm CCing Justin and Andrea, who know more about jdbc_ng and Oracle than I do, and I've created http://jira.codehaus.org/browse/GEOS-3018
The issue is known. When the configuration is applied, the datastores
are destroyed and recreated fully, since in 1.7.x there is no way to
tell _what_ changed in the configuration (we only know something
changed).
When that happens, the connection pools are also closed, so the
renderer is suddenly working against a connection that has been
closed, as a result, all requests against a database that
are still in need of loading data from the db will fail in
some way or the other.
In 2.0.x only the parts of the config that changed are saved on
submit, so unless you're touching the datastore configuration
itself, this won't happen.
Moreover, even with 1.7.x this _might_ not happen if we used
connection pools stored in JNDI, that are not closed along the
datastore during the configuration reload (I say might because
closing down the datastore wipes out other data structures
as well, there is no guarantee those are not going to
be needed, and I never actually tried).
This is apparently going to be resolved soon enough:
http://jira.codehaus.org/browse/GEOT-2475
Cheers
Andrea
--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.