[ 
https://issues.apache.org/jira/browse/IVY-1120?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12753852#action_12753852
 ] 

Lucas Lech edited comment on IVY-1120 at 9/11/09 1:54 AM:
----------------------------------------------------------

I've been running two parallel debugging sessions - the ant task that was 
invoking *ivy:buildnumber* was in first session executed directly and in 
another one it was executed as dependency of some other task (somewhere down 
the line of dependency graph) - few other ivy tasks, like ivy:publish have been 
executed before

so in both sessions *ivy:buildnumber* has been fed with exactly the same 
attributes

session invoking the ivy:buildnumber "directly" got the exact matcher while the 
one invoking it indirectly got the regexp one\\
on both occasions _expression_ was equal to _organisation_ string-wise; in 
second session it wasn't equal address-wise though

clearly the comparison in the matcher is broken (unless you're purposely 
comparing address values and I'm missing something here)
after replacing == with .equals & rebuilding ivy, this task started working 
properly

what's the reason for comparing references (ref) ant not values (*ref) ?


      was (Author: gibffe):
    I've been running two parallel debugging sessions - the ant task that was 
invoking *ivy:buildnumber* was in first session executed directly and in 
another one it was executed as dependency of some other task (somewhere down 
the line of dependency graph) - few other ivy tasks, like ivy:publish have been 
executed before

so in both sessions *ivy:buildnumber* has been fed with exactly the same 
attributes

session invoking the ivy:buildnumber "directly" got the exact matcher while the 
one invoking it indirectly got the regexp one\\
on both occasions _expression_ was equal to _organisation_ string-wise; in 
second session it wasn't equal address-wise though

clearly the comparison in the matcher is broken (unless you're purposely 
comparing address values and I'm missing here)
after replacing == with .equals & rebuilding ivy, this task started working 
properly

what's the reason for comparing references (ref) ant not values (*ref) ?

  
> IvyBuildNumber non-deterministic behaviour
> ------------------------------------------
>
>                 Key: IVY-1120
>                 URL: https://issues.apache.org/jira/browse/IVY-1120
>             Project: Ivy
>          Issue Type: Bug
>          Components: Ant
>    Affects Versions: 2.1.0-RC2
>         Environment: ant 1.7.1,  windows xp
>            Reporter: Lucas Lech
>
> IvyBuildNumber.java -> doExecute()
> creates an inline patternMatcher with this method:
> {code:title=IvyBuildNumber.java|borderStyle=solid}
> public Matcher getMatcher(String expression) {
>                 if ((expression == organisation)
>                         || (expression == module)
>                         || (expression == branch)) {
>                     return exact.getMatcher(expression);
>                 }
>                 return regexp.getMatcher(expression);
>             }
> {code}
> I'm guessing the == comparison is a typo ? Shouldn't it be saying *.equals* ?
> I've been having issues with this task - non-deterministic results - I got 
> down in my debug to this place where I get wrong matcher when 
> *reference address comparison* fails.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to