#174 ✓resolved
bahuvrihi

Bug in Join.aggregate logic

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

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.

Comments and changes to this ticket

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.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

A framework for making configurable, file-based tasks and workflows.

People watching this ticket

Referenced by

Pages