Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 327165 - No way to install subclipse when using jdk 1.7.0 beta
Summary: No way to install subclipse when using jdk 1.7.0 beta
Status: CLOSED DUPLICATE of bug 317785
Alias: None
Product: Equinox
Classification: Eclipse Project
Component: p2 (show other bugs)
Version: unspecified   Edit
Hardware: PC Linux
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: P2 Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-10-06 18:11 EDT by Rémi Forax CLA
Modified: 2010-10-07 10:39 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Rémi Forax CLA 2010-10-06 18:11:56 EDT
Build Identifier: I20100921-1024

The jdk 1.7.0 comes with a new sort implementation of arrays named TimSort.
This implementation know checks if the Comparator provided respect
the constract between compare and equals.

It seems the comparator used by p2 to select mirrors breaks that contract
so an IllegalArgumentException is thrown.

Thus there is no way to install a new software if jdk1.7.0 is used.
 
java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.ComparableTimSort.mergeHi(ComparableTimSort.java:835)
at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:453)
at java.util.ComparableTimSort.mergeCollapse(ComparableTimSort.java:376)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:182)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
at java.util.Arrays.sort(Arrays.java:466)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorSelector.hasValidMirror(MirrorSelector.java:317)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:517)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:576)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.getArtifact(MirrorRequest.java:248)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transferSingle(MirrorRequest.java:223)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transfer(MirrorRequest.java:179)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.perform(MirrorRequest.java:115)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:565)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.DownloadJob.run(DownloadJob.java:63)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

Reproducible: Always

Steps to Reproduce:
1. Donwnload latest jdk 1.7.0 binary
2. Download Eclipse 3.7M2a
3. try to install subclipse from:
   http://subclipse.tigris.org/update_1.4.x
Comment 1 Andrew Niefer CLA 2010-10-07 10:39:12 EDT
This is a threading problem rather than a problem with equals/compare

*** This bug has been marked as a duplicate of bug 317785 ***