[
https://issues.apache.org/jira/browse/LUCENE-8227?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16417546#comment-16417546
]
Karl Wright commented on LUCENE-8227:
-------------------------------------
The plane that rejects the right bound goes through point 3 of the polygon:
{code}
[junit4] 1> Rejection plane contains [lat=-0.375870856827283,
lon=2.9129132647718414([X=-0.9065744420970767, Y=0.21100590938346708,
Z=-0.36732668582405886])]
{code}
The question is therefore whether the described arc segment is greater than 180
degrees. If it is, then the plane's sidedness will be incorrect, and that
would lead to this exact situation. It would also lead to a polygon that is
bogus, since edges cannot span more than 180 degrees and still work. Let me
see if I can figure out whether the shape is bogus, and if so, find a way to
detect that when we build it.
> TestGeo3DPoint.testGeo3DRelations() reproducing failures
> --------------------------------------------------------
>
> Key: LUCENE-8227
> URL: https://issues.apache.org/jira/browse/LUCENE-8227
> Project: Lucene - Core
> Issue Type: Bug
> Components: general/test, modules/spatial3d
> Reporter: Steve Rowe
> Assignee: Karl Wright
> Priority: Major
>
> Three failures: two NPEs and one assert "assess edge that ends in a crossing
> can't both up and down":
> 1.a. (NPE) From
> [https://builds.apache.org/job/Lucene-Solr-NightlyTests-master/1512/]:
> {noformat}
> [junit4] 2> NOTE: reproduce with: ant test -Dtestcase=TestGeo3DPoint
> -Dtests.method=testGeo3DRelations -Dtests.seed=C1F88333EC85EAE0
> -Dtests.multiplier=2 -Dtests.nightly=true -Dtests.slow=true
> -Dtests.linedocsfile=/home/jenkins/jenkins-slave/workspace/Lucene-Solr-NightlyTests-master/test-data/enwiki.random.lines.txt
> -Dtests.locale=ga -Dtests.timezone=America/Ojinaga -Dtests.asserts=true
> -Dtests.file.encoding=UTF-8
> [junit4] ERROR 10.4s J1 | TestGeo3DPoint.testGeo3DRelations <<<
> [junit4] > Throwable #1: java.lang.NullPointerException
> [junit4] > at
> __randomizedtesting.SeedInfo.seed([C1F88333EC85EAE0:7187FEA763C8447C]:0)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.countCrossingPoint(GeoComplexPolygon.java:1382)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.matches(GeoComplexPolygon.java:1283)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.traverse(GeoComplexPolygon.java:564)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.traverse(GeoComplexPolygon.java:572)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.traverse(GeoComplexPolygon.java:569)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.traverse(GeoComplexPolygon.java:660)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.traverse(GeoComplexPolygon.java:646)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon.isWithin(GeoComplexPolygon.java:370)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoBaseMembershipShape.isWithin(GeoBaseMembershipShape.java:36)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoBaseShape.getBounds(GeoBaseShape.java:35)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon.getBounds(GeoComplexPolygon.java:440)
> [junit4] > at
> org.apache.lucene.spatial3d.TestGeo3DPoint.testGeo3DRelations(TestGeo3DPoint.java:225)
> [junit4] > at java.lang.Thread.run(Thread.java:748)
> {noformat}
> 1.b. (NPE) From
> [https://builds.apache.org/job/Lucene-Solr-SmokeRelease-7.x/184/]:
> {noformat}
> [smoker] [junit4] 2> NOTE: reproduce with: ant test
> -Dtestcase=TestGeo3DPoint -Dtests.method=testGeo3DRelations
> -Dtests.seed=F2A368AB96A2FD75 -Dtests.multiplier=2 -Dtests.locale=fr-ML
> -Dtests.timezone=America/Godthab -Dtests.asserts=true
> -Dtests.file.encoding=UTF-8
> [smoker] [junit4] ERROR 0.99s J0 | TestGeo3DPoint.testGeo3DRelations
> <<<
> [smoker] [junit4] > Throwable #1: java.lang.NullPointerException
> [smoker] [junit4] > at
> __randomizedtesting.SeedInfo.seed([F2A368AB96A2FD75:42DC153F19EF53E9]:0)
> [smoker] [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.countCrossingPoint(GeoComplexPolygon.java:1382)
> [smoker] [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.matches(GeoComplexPolygon.java:1283)
> [smoker] [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.traverse(GeoComplexPolygon.java:564)
> [smoker] [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.traverse(GeoComplexPolygon.java:572)
> [smoker] [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.traverse(GeoComplexPolygon.java:572)
> [smoker] [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.traverse(GeoComplexPolygon.java:660)
> [smoker] [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.traverse(GeoComplexPolygon.java:646)
> [smoker] [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon.isWithin(GeoComplexPolygon.java:370)
> [smoker] [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoBaseMembershipShape.isWithin(GeoBaseMembershipShape.java:36)
> [smoker] [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoBaseShape.getBounds(GeoBaseShape.java:43)
> [smoker] [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon.getBounds(GeoComplexPolygon.java:440)
> [smoker] [junit4] > at
> org.apache.lucene.spatial3d.TestGeo3DPoint.testGeo3DRelations(TestGeo3DPoint.java:224)
> [smoker] [junit4] > at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> [smoker] [junit4] > at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> [smoker] [junit4] > at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [smoker] [junit4] > at
> java.base/java.lang.reflect.Method.invoke(Method.java:564)
> [smoker] [junit4] > at
> java.base/java.lang.Thread.run(Thread.java:844)
> {noformat}
> 2. (both up&down) From
> [https://jenkins.thetaphi.de/job/Lucene-Solr-7.x-Linux/1598/]:
> {noformat}
> [junit4] 2> NOTE: reproduce with: ant test -Dtestcase=TestGeo3DPoint
> -Dtests.method=testGeo3DRelations -Dtests.seed=BACC479CC2D38CCA
> -Dtests.multiplier=3 -Dtests.slow=true -Dtests.badapples=true
> -Dtests.locale=lv -Dtests.timezone=SystemV/AST4ADT -Dtests.asserts=true
> -Dtests.file.encoding=UTF-8
> [junit4] FAILURE 3.01s J2 | TestGeo3DPoint.testGeo3DRelations <<<
> [junit4] > Throwable #1: java.lang.AssertionError: assess edge that
> ends in a crossing can't both up and down
> [junit4] > at
> __randomizedtesting.SeedInfo.seed([BACC479CC2D38CCA:AB33A084D9E2256]:0)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.countCrossingPoint(GeoComplexPolygon.java:1438)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.matches(GeoComplexPolygon.java:1283)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.traverse(GeoComplexPolygon.java:564)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.traverse(GeoComplexPolygon.java:660)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.traverse(GeoComplexPolygon.java:646)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon.isWithin(GeoComplexPolygon.java:370)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoBaseMembershipShape.isWithin(GeoBaseMembershipShape.java:36)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoBaseShape.getBounds(GeoBaseShape.java:43)
> [junit4] > at
> org.apache.lucene.spatial3d.geom.GeoComplexPolygon.getBounds(GeoComplexPolygon.java:440)
> [junit4] > at
> org.apache.lucene.spatial3d.TestGeo3DPoint.testGeo3DRelations(TestGeo3DPoint.java:224)
> [junit4] > at java.lang.Thread.run(Thread.java:748)
> {noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]