Lighthouse has a new layout. Prefer the old one? Return to the old layout, and switch back any time from the link at the top of each page.

Bug in Join.aggregate logic

#174

Currently the determinant of enquing the executable is whether or not the executable_queue has the specified round. This has a logical bug:

When the queue reaches the executable it will run it, but it will not discard the round array until there's a round to follow it.


      def queue # :nodoc:
        while @rounds.length > 1
          queue = @rounds[0]
          
          if queue.empty?
            @rounds.shift
          else
            return queue
          end
        end
        
        @rounds[0]
      end

Until that time, the join will think it doesn't need to enque the executable (even if the round no longer has the executable in it). Checking if the round is empty doesn't work since, once it hits the top, new executables may be registered in it.

A dirty solution is to enque a round after the join executable. Gross since obviously this pollutes the queue. It's the quick patch for now.

Reported by bahuvrihi · February 20th, 2009 @ 08:38 AM

State: resolved
Milestone: none
Assigned to: bahuvrihi bahuvrihi

Activity

  1. bahuvrihi
    bahuvrihi
    • State changed from new to resolved
    • Assigned user set to bahuvrihi

    (from [600afc6ffe1d76b5c2ea378e93a4c1fd1a60b6e9]) fixed bug in aggregate join logic [#174 Bug in Join.aggregate logic state:resolved responsible:bahuvrihi] http://github.com/bahuvrihi/tap/...

    February 21st, 2009 @ 11:11 PM

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.