Opened 2 years ago

Last modified 2 years ago

#22847 new enhancement

Objects of a data layer with no downloaded area at all should be considered as object outside of downloaded area — at Version 7

Reported by: skyper Owned by: team
Priority: normal Milestone:
Component: Core Version:
Keywords: downloaded area Cc:

Description (last modified by skyper)

If you have a data layer without any downloaded area, like a download from overpass or a route relation with all members, all objects are considered to be within a downloaded area but actually they should be considered as outside downloaded area.

This is by far new, though, I have never created a explicit ticket about it, see my comment on #18414.
#16803, #19008, #22820 and #22845 suffer from this misinterpretation.
Basically, all validator test depending on complete data are prone to produce false positive.
The fix option is offered even if the fix depends on complete data which can lead to conflicts on upload as parent objects have not been downloaded.

Change History (7)

comment:1 by GerdP, 2 years ago

What method/function doesn't work as expected?

comment:2 by taylor.smock, 2 years ago

In #22845 (the last one I looked at), the originating problem was that DeleteAction.checkAndConfirmOutlyingOperation was called on a node that was not inside a download area (it is called in the worker thread by the fix command).

Steps to reproduce (from comment:1:ticket:22845):

  1. Download only nodes via overpass, e.g.
    [out:xml][timeout:90][bbox:{{bbox}}];
    (
      node;
    );
    (._;>;);
    out meta;
    
  2. Run the JOSM validator (note: I recommend doing this on a single node instead of the entire dataset)
  3. Use the Fix command

comment:3 by skyper, 2 years ago

Description: modified (diff)

comment:4 by GerdP, 2 years ago

Yes, there are probably many tests or functions which don't check if the object is inside a download area. The question is if it makes sense to have a ticket for this. If it is meant as a reminder for all devs it's okay, but I see no way to "fix" this. All existing validator tests and probably other methods should be checked and of cause new code.
Same goes for incomplete objects.

comment:5 by taylor.smock, 2 years ago

It probably wouldn't be a bad idea to look into creating a base validation test junit interface to handle common sanity checks (e.g., assertDoesNotCallEdtWithFix, assertDoesNotThrowOutsideDownloadArea, assertDoesNotThrowInsideDownloadArea, etc.).

in reply to:  1 comment:6 by skyper, 2 years ago

In my eyes, the problem is that without any downloaded area the whole globe is considered as downloaded area. Please, duplicate the layer from Taylor's comment 2 and download a tiny area somewhere (does not even need to contain any object) and check the different results.

comment:7 by skyper, 2 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.