You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Oleg Gusakov (JIRA)" <ji...@codehaus.org> on 2008/12/11 08:15:19 UTC

[jira] Commented: (MERCURY-40) DefaultSatSolver is non-deterministic

    [ http://jira.codehaus.org/browse/MERCURY-40?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=157672#action_157672 ] 

Oleg Gusakov commented on MERCURY-40:
-------------------------------------

Looks like I am wrong: it really non-deterministic behavior of the resolver:

* when as the system of inequasions has more'n one solution, optimal selection is completly in the hands of the optimization function
* optimization function uses GAs to orders GAVs inside
* order of GAs used to create optimization function defines which of otherwise equivalent solutions is selected
* this GA ordering is defined by a Map's implementation, used by the solver
* HashMap's behavior changed from Java5 to Java6, thus tests failure
* Ben's solution to use LinkedHashMap which has predictable behavior between Java5 and Java6 seem to fit the bill

I re-implemented Ben's fix and will be running ITs to make sure nothing else breaks.

Thanks *Ben*!

> DefaultSatSolver is non-deterministic
> -------------------------------------
>
>                 Key: MERCURY-40
>                 URL: http://jira.codehaus.org/browse/MERCURY-40
>             Project: Mercury
>          Issue Type: Bug
>    Affects Versions: 1.0.0-alpha-2
>            Reporter: Benjamin Bentmann
>         Attachments: mercury-failed.txt, mercury-passed.txt, org.apache.maven.mercury.metadata.sat.DefaultSatSolverTest.txt
>
>
> Running the unit test {{DefaultSatSolverTest.testSingleVersionResolution()}} once on Java 1.5 and 1.6 revealed a bug in {{DefaultSatSolver.solve()}} due to usage of {{HashMap}}. See attached logs (passed with 1.5, failed with 1.6).
> The internal tweaks to the hash algos employed by the different JRE versions exhibited a non-deterministic ordering of the artifact metadata list.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira