[udig-devel] selection problems

Vince Darley vince.darley at eurobios.com
Mon Oct 29 10:05:01 PDT 2007


The renderer seems to become very unhappy when the selection contains 
large numbers of items on the map.  We typically have one layer of 
locations containing 50000+ points.  If (either through our own code 
or through the TableView) the majority of these become selected, uDig locks up.

The symptoms seem to be:

1) Error log like this (notice how I have trimmed some v.v.v. long 
lines with IDs on them):

!ENTRY net.refractions.udig.project 2 0 2007-10-29 14:18:56.812
!MESSAGE Problem rendering: Exception rendering layer 
DefaultMapLayer[ Test, VISIBLE, style=StyleImpl<NO_PARENT>[ 
name=Default Styler], 
data=net.refractions.udig.project.internal.impl.UDIGFeatureStore at 12fbd5b, 
query=Query:
    feature type: accesspoint_layer_3
    filter: [ 90638, 75594, 75595, 90639, 75592, 75593, 75598, 90634, 
75599, 90635, 90636, 75596, 75597, 90637, 86716, 86717, 86714, 86715.....
    [properties:  ALL ]]
!STACK 0
net.refractions.udig.project.render.RenderException: Problem 
rendering: Exception rendering layer DefaultMapLayer[ Test, VISIBLE, 
style=StyleImpl<NO_PARENT>[ name=Default Styler], 
data=net.refractions.udig.project.internal.impl.UDIGFeatureStore at 12fbd5b, 
query=Query:
    feature type: accesspoint_layer_3
    filter: [ 90638, 75594, 75595, 90639, 75592, 75593, 75598, 90634, 
75599, 90635, 90636, 75596,.....
    [properties:  ALL ]]
         at 
net.refractions.udig.render.internal.feature.basic.BasicFeatureRenderer.render(BasicFeatureRenderer.java:334)
         at 
net.refractions.udig.render.internal.feature.basic.BasicFeatureRenderer.render(BasicFeatureRenderer.java:193)
         at 
net.refractions.udig.project.internal.render.impl.RenderJob.startRendering(RenderJob.java:101)
         at 
net.refractions.udig.project.internal.render.impl.RenderJob.run(RenderJob.java:188)
         at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.lang.Exception: Exception rendering layer 
DefaultMapLayer[ Test, VISIBLE, style=StyleImpl<NO_PARENT>[ 
name=Default Styler], 
data=net.refractions.udig.project.internal.impl.UDIGFeatureStore at 12fbd5b, 
query=Query:
    feature type: accesspoint_layer_3
    filter: [ 90638, 75594, 75595, 90639, 75592, 75593, 75598, 90634, 
75599, 90635, 90636, 75596, 75597, 90637,
    [properties:  ALL ]]
         at 
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:467)
         at 
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:374)
         at 
net.refractions.udig.render.internal.feature.basic.BasicFeatureRenderer.render(BasicFeatureRenderer.java:309)
         ... 4 more
Caused by: org.geotools.data.DataSourceException: Error Performing 
SQL query: SELECT "oid", AsText(force_2d("the_geom")) FROM 
"public"."accesspoint_layer_3" WHERE (("oid" = '90638') OR ("oid" = 
'75594') OR ("oid" = '75595') OR ("oid" = '90639') OR ("oid" = 
'75592') OR ("oid" = '75593') OR ("oid" = '75598') OR ("oid" = 
'90634') OR ("oid" = ......
         at 
org.geotools.data.jdbc.JDBC1DataStore.executeQuery(JDBC1DataStore.java:933)
         at 
org.geotools.data.jdbc.JDBC1DataStore.getFeatureReader(JDBC1DataStore.java:672)
         at 
org.geotools.data.jdbc.JDBCFeatureCollection.reader(JDBCFeatureCollection.java:78)
         at 
org.geotools.renderer.lite.StreamingRenderer.getReader(StreamingRenderer.java:1173)
         at 
org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1272)
         at 
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:464)
         ... 6 more
Caused by: org.postgresql.util.PSQLException: ERROR: stack depth limit exceeded
         at 
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1525)
         at 
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1309)
         at 
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
         at 
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
         at 
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:340)
         at 
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:239)
         at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at 
org.postgresql.ds.common.PooledConnectionImpl$StatementHandler.invoke(PooledConnectionImpl.java:474)
         at $Proxy5.executeQuery(Unknown Source)
         at 
org.geotools.data.jdbc.JDBC1DataStore.executeQuery(JDBC1DataStore.java:922)
         ... 11 more


2) The above messages take a long time to appear, and are then 
repeated every 30-60 seconds while uDig is locked up.

Is there anything we can do about this?  (This is with rc12)

----

On an entirely unrelated note, we've now coded up a first version of 
a BIRT plugin which allow a uDig map to be a BIRT report item -- in 
the report designer you can drag and drop the map to a report, size 
it as desired, and control certain aspects of the rendering (through 
an extension mechanism).  There are still a few bugs and problems 
(BIRT's extension API is sadly poorly documented and requires 
hundreds of lines of code for some seemingly routine things).  When 
this finally works well we'll release it as a community plugin.

regards,

Vince.


Vince Darley
CEO, Eurobios UK Ltd
Tel: +44 207 921 0445
Mobile: +44 794 154 8527
www.eurobios.com



More information about the udig-devel mailing list