[udig-devel] [jira] Reopened: (UDIG-909) LayerImpl.setFilter() and rendering concurrency problem

Jesse Eichar (JIRA) jira at codehaus.org
Mon Jul 17 09:51:27 PDT 2006


     [ http://jira.codehaus.org/browse/UDIG-909?page=all ]

Jesse Eichar reopened UDIG-909:
-------------------------------

             

> LayerImpl.setFilter() and rendering concurrency problem
> -------------------------------------------------------
>
>                 Key: UDIG-909
>                 URL: http://jira.codehaus.org/browse/UDIG-909
>             Project: uDIG
>          Issue Type: Bug
>          Components: map
>    Affects Versions: UDIG 1.1.M7
>         Environment: All platforms
>            Reporter: Mark Presling
>         Assigned To: Jesse Eichar
>             Fix For: UDIG 1.1.RC3
>
>
> Note that this relates to code of uDig 1.1.M7 era, but I believe that it has not been resolved as of yet.
> When using LayerImpl.setFilter() to specify a filter for the SelectionLayer of a WFS layer there are occasionally concurrency issues with the renderer or FeatureSource/DataStore. Occasionally the SelectionLayer will be rendered with the underlying layers query and sometimes the main layer is rendered with the SelectionLayer query. This means that either only one feature will be rendered and highlighted (assuming the selection filter is for one feature) or all features will be rendered and highlighted.
> A simple fix for this is to change the renderer to synchronize the call to render():
>     private void render(Graphics2D graphics, Envelope bounds, IProgressMonitor monitor) throws RenderException {
>         synchronized (BasicFeatureRenderer.class) {
>             unsafeRender(graphics, bounds, monitor);
>         }
>     }
>     
>     private void unsafeRender(Graphics2D graphics, Envelope bounds,
>             IProgressMonitor monitor) throws RenderException {
> ... original render() code here ...
>     }
> So, this shows that the issue is probably deeper down inside the GeoTools DataStore level. Because each instance of the renderer (the layer and the selection layer) has the same FeatureSource, and the queries to the GeoServer contains the same filter for both calls (as evident in the GeoServer logs).
> This issue took a long time to track down to this level. I have been unable to go deeper into the GeoTools stack to find the root cause. If more information is required please don't hesitate to ask.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the udig-devel mailing list