Opened 21 months ago
Last modified 21 months ago
#22847 new enhancement
Objects of a data layer with no downloaded area at all should be considered as object outside of downloaded area
Reported by: | skyper | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Core | Version: | |
Keywords: | downloaded area | Cc: |
Description (last modified by )
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.
Attachments (0)
Change History (9)
follow-up: 6 comment:1 by , 21 months ago
comment:2 by , 21 months 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):
- Download only nodes via overpass, e.g.
[out:xml][timeout:90][bbox:{{bbox}}]; ( node; ); (._;>;); out meta;
- Run the JOSM validator (note: I recommend doing this on a single node instead of the entire dataset)
- Use the Fix command
comment:3 by , 21 months ago
Description: | modified (diff) |
---|
comment:4 by , 21 months 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 , 21 months 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.).
comment:6 by , 21 months 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 , 21 months ago
Description: | modified (diff) |
---|
comment:8 by , 21 months ago
I suspect that the proposed change will make JOSM unusable for data which isn't downloaded in a proper boundary. That doesn't sound right to me.
comment:9 by , 21 months ago
The important thing is to keep in mind that JOSM is used with all kinds of data, from normally downloaded via OSM APi to generated or converted from other sources. A lot of validator tests are meant to be used only with the first and produce more or less garbage with others.
Many tests don't have to care about download areas.
Some tests should probably be disabled for data that is not completely inside a download area.
What method/function doesn't work as expected?