[ 
https://issues.apache.org/jira/browse/JENA-2333?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17555721#comment-17555721
 ] 

Andy Seaborne commented on JENA-2333:
-------------------------------------

It seems that somewhere there is a pair of values that aren't comparing 
properly.

This is not a race condition - this is all sequential code. What changes is the 
order in the internal data structures of GraphMem which cause different order 
in the comparisons for sorting.

Presumably that is why you have many {{[ rdfs:label  "VIVO"@de ]}} in the test 
data.


> Sorting by labels in SPARQL query fail
> --------------------------------------
>
>                 Key: JENA-2333
>                 URL: https://issues.apache.org/jira/browse/JENA-2333
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: ARQ, Jena
>    Affects Versions: Jena 2.10.1, Jena 3.16.0, Jena 4.5.0
>            Reporter: Georgy Litvinov
>            Priority: Major
>         Attachments: SortingBug.java, bad_data_out.n3
>
>
> {color:#172b4d}Sorting by labels fail on this data set.{color}
> {color:#172b4d}Simple Java example to reproduce attached.{color}
> {color:#172b4d}Looks like a race condition involved.{color}
> {noformat}
> SELECT ?label WHERE {
>    ?object <http://www.w3.org/2000/01/rdf-schema#label> ?label . } ORDER BY 
> ASC(?label)
> {noformat}
>  
> {noformat}
> java.lang.IllegalArgumentException: Comparison method violates its general 
> contract!
>     at java.base/java.util.TimSort.mergeLo(TimSort.java:781)
>     at java.base/java.util.TimSort.mergeAt(TimSort.java:518)
>     at java.base/java.util.TimSort.mergeCollapse(TimSort.java:448)
>     at java.base/java.util.TimSort.sort(TimSort.java:245)
>     at java.base/java.util.Arrays.sort(Arrays.java:1441)
>     at 
> org.apache.jena.atlas.data.AbortableComparator.abortableSort(AbortableComparator.java:57)
>     at 
> org.apache.jena.atlas.data.SortedDataBag.iterator(SortedDataBag.java:205)
>     at 
> org.apache.jena.atlas.data.SortedDataBag.iterator(SortedDataBag.java:192)
>     at 
> org.apache.jena.sparql.engine.iterator.QueryIterSort$SortedBindingIterator.initializeIterator(QueryIterSort.java:88)
>     at 
> org.apache.jena.atlas.iterator.IteratorDelayedInitialization.init(IteratorDelayedInitialization.java:38)
>     at 
> org.apache.jena.atlas.iterator.IteratorDelayedInitialization.hasNext(IteratorDelayedInitialization.java:48)
>     at 
> org.apache.jena.sparql.engine.iterator.QueryIterPlainWrapper.hasNextBinding(QueryIterPlainWrapper.java:59)
>     at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>     at 
> org.apache.jena.sparql.engine.iterator.QueryIterConvert.hasNextBinding(QueryIterConvert.java:58)
>     at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>     at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:38)
>     at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>     at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:38)
>     at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>     at org.apache.jena.sparql.exec.RowSetStream.hasNext(RowSetStream.java:47)
>     at 
> org.apache.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream.java:81)
>     at test.SortingBug.isReproduced(SortingBug.java:53)
>     at test.SortingBug.main(SortingBug.java:39)
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to