remove way references from diff cache
parent
fedb2a8914
commit
639c206b16
|
@ -74,7 +74,7 @@ func (d *Deleter) deleteRelation(id int64) {
|
|||
}
|
||||
}
|
||||
|
||||
func (d *Deleter) deleteWay(id int64) {
|
||||
func (d *Deleter) deleteWay(id int64, forMod bool) {
|
||||
elem, err := d.osmCache.Ways.GetWay(id)
|
||||
if err != nil {
|
||||
if err == cache.NotFound {
|
||||
|
@ -96,6 +96,11 @@ func (d *Deleter) deleteWay(id int64) {
|
|||
d.delDb.Delete(m.Table.Name, elem.Id)
|
||||
deleted = true
|
||||
}
|
||||
if deleted && !forMod {
|
||||
for _, n := range elem.Refs {
|
||||
d.diffCache.Coords.DeleteRef(n, id)
|
||||
}
|
||||
}
|
||||
if deleted && d.expireTiles != nil {
|
||||
err := d.osmCache.Coords.FillWay(elem)
|
||||
if err != nil {
|
||||
|
@ -138,7 +143,7 @@ func (d *Deleter) Delete(delElem parser.DiffElem) {
|
|||
if delElem.Rel != nil {
|
||||
d.deleteRelation(delElem.Rel.Id)
|
||||
} else if delElem.Way != nil {
|
||||
d.deleteWay(delElem.Way.Id)
|
||||
d.deleteWay(delElem.Way.Id, false)
|
||||
|
||||
if delElem.Mod {
|
||||
dependers := d.diffCache.Ways.Get(delElem.Way.Id)
|
||||
|
@ -151,7 +156,7 @@ func (d *Deleter) Delete(delElem parser.DiffElem) {
|
|||
if delElem.Mod {
|
||||
dependers := d.diffCache.Coords.Get(delElem.Node.Id)
|
||||
for _, way := range dependers {
|
||||
d.deleteWay(way)
|
||||
d.deleteWay(way, true)
|
||||
dependers := d.diffCache.Ways.Get(way)
|
||||
for _, rel := range dependers {
|
||||
d.deleteRelation(rel)
|
||||
|
|
|
@ -257,7 +257,7 @@ def test_node_way_ref_after_delete_2():
|
|||
"""Nodes does not referece deleted way"""
|
||||
data = cache_query(nodes=[20001, 20002], deps=True)
|
||||
assert 'ways' not in data['nodes']['20001']
|
||||
assert '20002' not in data['nodes']
|
||||
assert data['nodes']['20002'] == None
|
||||
assert query_row(db_conf, 'osm_roads', 20001) == None
|
||||
assert query_row(db_conf, 'osm_barrierpoints', 20001)['type'] == 'block'
|
||||
|
||||
|
|
Loading…
Reference in New Issue