[postgis-tickets] [PostGIS] #4684: concurrent topology construction routine may result in invalid topology

PostGIS trac at osgeo.org
Mon Aug 2 11:45:59 PDT 2021


#4684: concurrent topology construction routine may result in invalid topology
-----------------------+---------------------------
  Reporter:  laopsahl  |      Owner:  strk
      Type:  defect    |     Status:  new
  Priority:  medium    |  Milestone:  PostGIS 3.0.4
 Component:  topology  |    Version:  3.0.x
Resolution:            |   Keywords:
-----------------------+---------------------------

Comment (by strk):

 I've pushed a script to see the effects of concurrent topology population.
 Interesting, in some cases you also get deadlocks, like in this output:
 {{{
 $ ./check_multiprocess_topology_population.sh
 ERROR:  SQL/MM Spatial exception - geometry crosses edge 1
 ERROR:  Edge changed disposition around start node 1
 ERROR:  Side-location conflict: new edge starts in face 1 and ends in face
 2
 ERROR:  SQL/MM Spatial exception - geometry crosses edge 5
 ERROR:  deadlock detected
 DETAIL:  Process 174600 waits for ShareLock on transaction 3178504;
 blocked by process 174602.
 Process 174602 waits for ShareLock on transaction 3178502; blocked by
 process 174600.
 HINT:  See server log for query details.
 CONTEXT:  while updating tuple (1,3) in relation "edge_data"
 SQL statement "UPDATE "mt_topo".edge_data SET next_right_edge= -16,
 abs_next_right_edge= 16 WHERE start_node = 5 AND next_right_edge= -5 AND
 abs_next_right_edge= 5 AND edge_id != 16"
 Topology mt_topo (id 697, SRID 0, precision 0)
 11 nodes, 17 edges, 9 faces, 0 topogeoms in 0 layers

 }}}

-- 
Ticket URL: <https://trac.osgeo.org/postgis/ticket/4684#comment:28>
PostGIS <http://trac.osgeo.org/postgis/>
The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project.


More information about the postgis-tickets mailing list