only set DiffElem.Mod to true on modify

master
Oliver Tonnhofer 2016-12-06 10:49:17 +01:00
parent 7a020b28d5
commit c5993ecb81
3 changed files with 25 additions and 26 deletions

View File

@ -271,7 +271,7 @@ func (d *Deleter) Delete(delElem parser.DiffElem) error {
} }
} }
} }
if !delElem.Add { if delElem.Del {
if err := d.diffCache.Coords.Delete(delElem.Node.Id); err != nil { if err := d.diffCache.Coords.Delete(delElem.Node.Id); err != nil {
return err return err
} }

View File

@ -73,9 +73,9 @@ NextToken:
mod = false mod = false
del = false del = false
case "modify": case "modify":
add = true add = false
mod = true mod = true
del = true del = false
case "delete": case "delete":
add = false add = false
mod = false mod = false

View File

@ -223,7 +223,6 @@ func Update(oscFile string, geometryLimiter *limit.Limiter, expireor expire.Expi
return diffError(err, "delete element %#v", elem) return diffError(err, "delete element %#v", elem)
} }
if elem.Del { if elem.Del {
if !elem.Add {
// no new or modified elem -> remove from cache // no new or modified elem -> remove from cache
if elem.Rel != nil { if elem.Rel != nil {
if err := osmCache.Relations.DeleteRelation(elem.Rel.Id); err != nil && err != cache.NotFound { if err := osmCache.Relations.DeleteRelation(elem.Rel.Id); err != nil && err != cache.NotFound {
@ -244,14 +243,14 @@ func Update(oscFile string, geometryLimiter *limit.Limiter, expireor expire.Expi
return diffError(err, "delete coord %v", elem.Node) return diffError(err, "delete coord %v", elem.Node)
} }
} }
} else if elem.Node != nil && elem.Node.Tags == nil { }
if elem.Mod && elem.Node != nil && elem.Node.Tags == nil {
// handle modifies where a node drops all tags // handle modifies where a node drops all tags
if err := osmCache.Nodes.DeleteNode(elem.Node.Id); err != nil && err != cache.NotFound { if err := osmCache.Nodes.DeleteNode(elem.Node.Id); err != nil && err != cache.NotFound {
return diffError(err, "delete node %v", elem.Node) return diffError(err, "delete node %v", elem.Node)
} }
} }
} if elem.Add || elem.Mod {
if elem.Add {
if elem.Rel != nil { if elem.Rel != nil {
// check if first member is cached to avoid caching // check if first member is cached to avoid caching
// unneeded relations (typical outside of our coverage) // unneeded relations (typical outside of our coverage)