pwrake 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/pwrake/branch/communicator.rb +1 -1
 - data/lib/pwrake/branch/shell.rb +2 -0
 - data/lib/pwrake/master/master.rb +4 -2
 - data/lib/pwrake/master/master_application.rb +37 -4
 - data/lib/pwrake/option/host_map.rb +21 -0
 - data/lib/pwrake/option/option.rb +15 -1
 - data/lib/pwrake/queue/queue_array.rb +34 -20
 - data/lib/pwrake/queue/task_queue.rb +1 -4
 - data/lib/pwrake/task/task_algorithm.rb +5 -1
 - data/lib/pwrake/task/task_manager.rb +50 -1
 - data/lib/pwrake/task/task_property.rb +21 -8
 - data/lib/pwrake/task/task_wrapper.rb +24 -9
 - data/lib/pwrake/version.rb +1 -1
 - data/lib/pwrake/worker/gfarm_directory.rb +4 -2
 - data/lib/pwrake/worker/log_executor.rb +2 -1
 - data/lib/pwrake/worker/worker_main.rb +2 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 700155f122d51b4ae814349492054d336daa6dad
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 8bd23134b9c79784b95670440c0e823f139b41e5
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: ca62080f1e262829e1da0623c474d0415bdda728498bea11a25f8b17d2a3d60ecf8ebb701ab4eb160f8a894840e402477f2daf87335103aefa42bf89a021d1b5
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: ad190406c5a890f78e3691cac5bed219e537ac911617fe4cb1d68ce6d6cbd65c9963e0fa5bd8e328aad864e6303bef893bd5877afefcd2e85402d6864759f8ee
         
     | 
    
        data/lib/pwrake/branch/shell.rb
    CHANGED
    
    | 
         @@ -229,6 +229,7 @@ module Pwrake 
     | 
|
| 
       229 
229 
     | 
    
         
             
                        task = Rake.application[task_name]
         
     | 
| 
       230 
230 
     | 
    
         
             
                        @ncore = task.wrapper.n_used_cores
         
     | 
| 
       231 
231 
     | 
    
         
             
                        begin
         
     | 
| 
      
 232 
     | 
    
         
            +
                          Rake.application.current_flow[Fiber.current] = task.property.subflow
         
     | 
| 
       232 
233 
     | 
    
         
             
                          task.execute(task.arguments) if task.needed?
         
     | 
| 
       233 
234 
     | 
    
         
             
                          result = "taskend:#{@id}:#{task.name}"
         
     | 
| 
       234 
235 
     | 
    
         
             
                        rescue Exception=>e
         
     | 
| 
         @@ -237,6 +238,7 @@ module Pwrake 
     | 
|
| 
       237 
238 
     | 
    
         
             
                          result = "taskfail:#{@id}:#{task.name}"
         
     | 
| 
       238 
239 
     | 
    
         
             
                          break if @exited
         
     | 
| 
       239 
240 
     | 
    
         
             
                        ensure
         
     | 
| 
      
 241 
     | 
    
         
            +
                          Rake.application.current_flow[Fiber.current] = nil
         
     | 
| 
       240 
242 
     | 
    
         
             
                          master_w.put_line result
         
     | 
| 
       241 
243 
     | 
    
         
             
                        end
         
     | 
| 
       242 
244 
     | 
    
         
             
                      end
         
     | 
    
        data/lib/pwrake/master/master.rb
    CHANGED
    
    | 
         @@ -17,6 +17,7 @@ module Pwrake 
     | 
|
| 
       17 
17 
     | 
    
         
             
                  @channel_by_hostid = {}
         
     | 
| 
       18 
18 
     | 
    
         
             
                  @channels = []
         
     | 
| 
       19 
19 
     | 
    
         
             
                  @hostinfo_by_id = {}
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @current_flow = {}
         
     | 
| 
       20 
21 
     | 
    
         
             
                  # init
         
     | 
| 
       21 
22 
     | 
    
         
             
                  @option = Option.new
         
     | 
| 
       22 
23 
     | 
    
         
             
                  Log.set_logger(@option)
         
     | 
| 
         @@ -31,6 +32,7 @@ module Pwrake 
     | 
|
| 
       31 
32 
     | 
    
         
             
                attr_reader :task_queue
         
     | 
| 
       32 
33 
     | 
    
         
             
                attr_reader :option
         
     | 
| 
       33 
34 
     | 
    
         
             
                attr_reader :thread
         
     | 
| 
      
 35 
     | 
    
         
            +
                attr_reader :current_flow # current_flow[Fiber.current] = task.property.subflow
         
     | 
| 
       34 
36 
     | 
    
         | 
| 
       35 
37 
     | 
    
         
             
                def setup_branch_handler(sub_host)
         
     | 
| 
       36 
38 
     | 
    
         
             
                  ior,w0 = IO.pipe
         
     | 
| 
         @@ -331,7 +333,7 @@ module Pwrake 
     | 
|
| 
       331 
333 
     | 
    
         
             
                    Fiber.new do
         
     | 
| 
       332 
334 
     | 
    
         
             
                      j = i
         
     | 
| 
       333 
335 
     | 
    
         
             
                      while tw = pool.deq()
         
     | 
| 
       334 
     | 
    
         
            -
                        Log.debug "postproc##{j} deq=#{tw.name}"
         
     | 
| 
      
 336 
     | 
    
         
            +
                        #Log.debug "postproc##{j} deq=#{tw.name}"
         
     | 
| 
       335 
337 
     | 
    
         
             
                        tw.postprocess(postproc)
         
     | 
| 
       336 
338 
     | 
    
         
             
                        pool.count_down
         
     | 
| 
       337 
339 
     | 
    
         
             
                        @hostinfo_by_taskname.delete(tw.name)
         
     | 
| 
         @@ -339,7 +341,7 @@ module Pwrake 
     | 
|
| 
       339 
341 
     | 
    
         
             
                        break if yield(pool,j)
         
     | 
| 
       340 
342 
     | 
    
         
             
                      end
         
     | 
| 
       341 
343 
     | 
    
         
             
                      postproc.close
         
     | 
| 
       342 
     | 
    
         
            -
                      Log.debug "postproc##{j} end"
         
     | 
| 
      
 344 
     | 
    
         
            +
                      #Log.debug "postproc##{j} end"
         
     | 
| 
       343 
345 
     | 
    
         
             
                    end
         
     | 
| 
       344 
346 
     | 
    
         
             
                  end
         
     | 
| 
       345 
347 
     | 
    
         
             
                end
         
     | 
| 
         @@ -13,6 +13,10 @@ module Pwrake 
     | 
|
| 
       13 
13 
     | 
    
         
             
                  @role.task_queue
         
     | 
| 
       14 
14 
     | 
    
         
             
                end
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
      
 16 
     | 
    
         
            +
                def current_flow
         
     | 
| 
      
 17 
     | 
    
         
            +
                  @role.current_flow
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       16 
20 
     | 
    
         
             
                # Run the Pwrake application.
         
     | 
| 
       17 
21 
     | 
    
         
             
                def run
         
     | 
| 
       18 
22 
     | 
    
         
             
                  standard_exception_handling do
         
     | 
| 
         @@ -46,10 +50,33 @@ module Pwrake 
     | 
|
| 
       46 
50 
     | 
    
         
             
                  end
         
     | 
| 
       47 
51 
     | 
    
         
             
                end
         
     | 
| 
       48 
52 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
                 
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                   
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
      
 53 
     | 
    
         
            +
                # Find the rakefile and then load it and any pending imports.
         
     | 
| 
      
 54 
     | 
    
         
            +
                def load_rakefile
         
     | 
| 
      
 55 
     | 
    
         
            +
                  if subdirs = pwrake_options['SUBDIR']
         
     | 
| 
      
 56 
     | 
    
         
            +
                    subdirs.each do |x|
         
     | 
| 
      
 57 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 58 
     | 
    
         
            +
                        Rake.application.current_flow[Fiber.current] = x
         
     | 
| 
      
 59 
     | 
    
         
            +
                        super
         
     | 
| 
      
 60 
     | 
    
         
            +
                      ensure
         
     | 
| 
      
 61 
     | 
    
         
            +
                        Rake.application.current_flow[Fiber.current] = nil
         
     | 
| 
      
 62 
     | 
    
         
            +
                      end
         
     | 
| 
      
 63 
     | 
    
         
            +
                    end
         
     | 
| 
      
 64 
     | 
    
         
            +
                  else
         
     | 
| 
      
 65 
     | 
    
         
            +
                    super
         
     | 
| 
      
 66 
     | 
    
         
            +
                  end
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                def find_rakefile_location # :nodoc:
         
     | 
| 
      
 70 
     | 
    
         
            +
                  if subdir = Rake.application.current_flow[Fiber.current]
         
     | 
| 
      
 71 
     | 
    
         
            +
                    Dir.chdir(subdir)
         
     | 
| 
      
 72 
     | 
    
         
            +
                    if fn = have_rakefile
         
     | 
| 
      
 73 
     | 
    
         
            +
                      [File.join(subdir,fn), Rake.original_dir]
         
     | 
| 
      
 74 
     | 
    
         
            +
                    end
         
     | 
| 
      
 75 
     | 
    
         
            +
                  else
         
     | 
| 
      
 76 
     | 
    
         
            +
                    super
         
     | 
| 
      
 77 
     | 
    
         
            +
                  end
         
     | 
| 
      
 78 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 79 
     | 
    
         
            +
                  Dir.chdir(Rake.original_dir)
         
     | 
| 
       53 
80 
     | 
    
         
             
                end
         
     | 
| 
       54 
81 
     | 
    
         | 
| 
       55 
82 
     | 
    
         
             
                def invoke(t,*args)
         
     | 
| 
         @@ -138,6 +165,12 @@ module Pwrake 
     | 
|
| 
       138 
165 
     | 
    
         
             
                    "[Pw] Pwrake configuation file in YAML",
         
     | 
| 
       139 
166 
     | 
    
         
             
                    lambda {|value| options.pwrake_conf = value}
         
     | 
| 
       140 
167 
     | 
    
         
             
                   ],
         
     | 
| 
      
 168 
     | 
    
         
            +
                   ['--subdir "dir1 dir2 ..."',
         
     | 
| 
      
 169 
     | 
    
         
            +
                    "[Pw] Join workflows in subdirectories",
         
     | 
| 
      
 170 
     | 
    
         
            +
                    lambda { |value|
         
     | 
| 
      
 171 
     | 
    
         
            +
                      options.subdir = value.split(/[\s,;:]+/)
         
     | 
| 
      
 172 
     | 
    
         
            +
                    }
         
     | 
| 
      
 173 
     | 
    
         
            +
                   ],
         
     | 
| 
       141 
174 
     | 
    
         
             
                   ['--show-conf','--show-config',
         
     | 
| 
       142 
175 
     | 
    
         
             
                    "[Pw] Show Pwrake configuration options",
         
     | 
| 
       143 
176 
     | 
    
         
             
                    lambda {|value| options.show_conf = true }
         
     | 
| 
         @@ -86,6 +86,27 @@ module Pwrake 
     | 
|
| 
       86 
86 
     | 
    
         
             
                  end
         
     | 
| 
       87 
87 
     | 
    
         
             
                  @continuous_fail
         
     | 
| 
       88 
88 
     | 
    
         
             
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                def accept_core(task_name, use_cores)
         
     | 
| 
      
 91 
     | 
    
         
            +
                  if @reserved_task
         
     | 
| 
      
 92 
     | 
    
         
            +
                    if @reserved_task == task_name
         
     | 
| 
      
 93 
     | 
    
         
            +
                      if use_cores <= @idle_cores
         
     | 
| 
      
 94 
     | 
    
         
            +
                        Log.info "use reserved: #{@name} for #{task_name} (#{use_cores} cores)"
         
     | 
| 
      
 95 
     | 
    
         
            +
                        @reserved_task = nil
         
     | 
| 
      
 96 
     | 
    
         
            +
                        return :ok
         
     | 
| 
      
 97 
     | 
    
         
            +
                      end
         
     | 
| 
      
 98 
     | 
    
         
            +
                    end
         
     | 
| 
      
 99 
     | 
    
         
            +
                  else
         
     | 
| 
      
 100 
     | 
    
         
            +
                    if use_cores <= @idle_cores
         
     | 
| 
      
 101 
     | 
    
         
            +
                      return :ok
         
     | 
| 
      
 102 
     | 
    
         
            +
                    elsif use_cores > 1
         
     | 
| 
      
 103 
     | 
    
         
            +
                      @reserved_task = task_name
         
     | 
| 
      
 104 
     | 
    
         
            +
                      Log.info "reserve host: #{@name} for #{task_name} (#{use_cores} cores)"
         
     | 
| 
      
 105 
     | 
    
         
            +
                      return :reserve
         
     | 
| 
      
 106 
     | 
    
         
            +
                    end
         
     | 
| 
      
 107 
     | 
    
         
            +
                  end
         
     | 
| 
      
 108 
     | 
    
         
            +
                  :busy
         
     | 
| 
      
 109 
     | 
    
         
            +
                end
         
     | 
| 
       89 
110 
     | 
    
         
             
              end
         
     | 
| 
       90 
111 
     | 
    
         | 
| 
       91 
112 
     | 
    
         
             
              class HostMap < Hash
         
     | 
    
        data/lib/pwrake/option/option.rb
    CHANGED
    
    | 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "pathname"
         
     | 
| 
       2 
2 
     | 
    
         
             
            require "yaml"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "socket"
         
     | 
| 
       3 
4 
     | 
    
         
             
            require "parallel"
         
     | 
| 
       4 
5 
     | 
    
         
             
            require "pwrake/option/host_map"
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
         @@ -144,6 +145,19 @@ module Pwrake 
     | 
|
| 
       144 
145 
     | 
    
         
             
                    'DEBUG',
         
     | 
| 
       145 
146 
     | 
    
         
             
                    'PLOT_PARALLELISM',
         
     | 
| 
       146 
147 
     | 
    
         
             
                    'SHOW_CONF',
         
     | 
| 
      
 148 
     | 
    
         
            +
                    ['SUBDIR','SUBDIRS',
         
     | 
| 
      
 149 
     | 
    
         
            +
                      proc{|v|
         
     | 
| 
      
 150 
     | 
    
         
            +
                        if Array===v
         
     | 
| 
      
 151 
     | 
    
         
            +
                          v.each do |d|
         
     | 
| 
      
 152 
     | 
    
         
            +
                            if !File.directory?(d)
         
     | 
| 
      
 153 
     | 
    
         
            +
                              raise "directory #{d.inspect} does not exist"
         
     | 
| 
      
 154 
     | 
    
         
            +
                            end
         
     | 
| 
      
 155 
     | 
    
         
            +
                          end
         
     | 
| 
      
 156 
     | 
    
         
            +
                        elsif !v.nil?
         
     | 
| 
      
 157 
     | 
    
         
            +
                          raise "invalid argument for SUBDIR: #{v.inspect}"
         
     | 
| 
      
 158 
     | 
    
         
            +
                        end
         
     | 
| 
      
 159 
     | 
    
         
            +
                      }
         
     | 
| 
      
 160 
     | 
    
         
            +
                    ],
         
     | 
| 
       147 
161 
     | 
    
         
             
                    ['REPORT_DIR','REPORT'],
         
     | 
| 
       148 
162 
     | 
    
         
             
                    'REPORT_IMAGE',
         
     | 
| 
       149 
163 
     | 
    
         
             
                    'FAILED_TARGET', # rename(default), delete, leave
         
     | 
| 
         @@ -207,7 +221,7 @@ module Pwrake 
     | 
|
| 
       207 
221 
     | 
    
         
             
                    ['SHELL_START_INTERVAL', proc{|v| (v || 0.012).to_f}],
         
     | 
| 
       208 
222 
     | 
    
         
             
                    ['HEARTBEAT', proc{|v| (v || 240).to_i}],
         
     | 
| 
       209 
223 
     | 
    
         
             
                    ['RETRY', proc{|v| (v || 1).to_i}],
         
     | 
| 
       210 
     | 
    
         
            -
                    ['MASTER_HOSTNAME', proc{|v| (v ||  
     | 
| 
      
 224 
     | 
    
         
            +
                    ['MASTER_HOSTNAME', proc{|v| (v || Socket.gethostname).chomp}],
         
     | 
| 
       211 
225 
     | 
    
         
             
                    ['WORK_DIR', proc{|v|
         
     | 
| 
       212 
226 
     | 
    
         
             
                       v ||= '%CWD_RELATIVE_TO_HOME'
         
     | 
| 
       213 
227 
     | 
    
         
             
                       v.sub('%CWD_RELATIVE_TO_HOME',cwd_relative_if_under_home)
         
     | 
| 
         @@ -68,18 +68,22 @@ module Pwrake 
     | 
|
| 
       68 
68 
     | 
    
         | 
| 
       69 
69 
     | 
    
         
             
                def shift(host_info=nil)
         
     | 
| 
       70 
70 
     | 
    
         
             
                  return super() unless host_info
         
     | 
| 
       71 
     | 
    
         
            -
                   
     | 
| 
      
 71 
     | 
    
         
            +
                  i_tried = []
         
     | 
| 
       72 
72 
     | 
    
         
             
                  (size-1).downto(0) do |i|
         
     | 
| 
      
 73 
     | 
    
         
            +
                    tw = at(i)
         
     | 
| 
      
 74 
     | 
    
         
            +
                    if tw.tried_host?(host_info)
         
     | 
| 
      
 75 
     | 
    
         
            +
                      i_tried << i
         
     | 
| 
      
 76 
     | 
    
         
            +
                    elsif tw.acceptable_for(host_info)
         
     | 
| 
      
 77 
     | 
    
         
            +
                      return delete_at(i)
         
     | 
| 
      
 78 
     | 
    
         
            +
                    end
         
     | 
| 
      
 79 
     | 
    
         
            +
                  end
         
     | 
| 
      
 80 
     | 
    
         
            +
                  i_tried.each do |i|
         
     | 
| 
       73 
81 
     | 
    
         
             
                    tw = at(i)
         
     | 
| 
       74 
82 
     | 
    
         
             
                    if tw.acceptable_for(host_info)
         
     | 
| 
       75 
     | 
    
         
            -
                       
     | 
| 
       76 
     | 
    
         
            -
                        return delete_at(i)
         
     | 
| 
       77 
     | 
    
         
            -
                      else
         
     | 
| 
       78 
     | 
    
         
            -
                        i_found ||= i
         
     | 
| 
       79 
     | 
    
         
            -
                      end
         
     | 
| 
      
 83 
     | 
    
         
            +
                      return delete_at(i)
         
     | 
| 
       80 
84 
     | 
    
         
             
                    end
         
     | 
| 
       81 
85 
     | 
    
         
             
                  end
         
     | 
| 
       82 
     | 
    
         
            -
                   
     | 
| 
      
 86 
     | 
    
         
            +
                  nil
         
     | 
| 
       83 
87 
     | 
    
         
             
                end
         
     | 
| 
       84 
88 
     | 
    
         
             
              end
         
     | 
| 
       85 
89 
     | 
    
         | 
| 
         @@ -90,18 +94,22 @@ module Pwrake 
     | 
|
| 
       90 
94 
     | 
    
         | 
| 
       91 
95 
     | 
    
         
             
                def shift(host_info=nil)
         
     | 
| 
       92 
96 
     | 
    
         
             
                  return super() unless host_info
         
     | 
| 
       93 
     | 
    
         
            -
                   
     | 
| 
      
 97 
     | 
    
         
            +
                  i_tried = []
         
     | 
| 
       94 
98 
     | 
    
         
             
                  size.times do |i|
         
     | 
| 
      
 99 
     | 
    
         
            +
                    tw = at(i)
         
     | 
| 
      
 100 
     | 
    
         
            +
                    if tw.tried_host?(host_info)
         
     | 
| 
      
 101 
     | 
    
         
            +
                      i_tried << i
         
     | 
| 
      
 102 
     | 
    
         
            +
                    elsif tw.acceptable_for(host_info)
         
     | 
| 
      
 103 
     | 
    
         
            +
                      return delete_at(i)
         
     | 
| 
      
 104 
     | 
    
         
            +
                    end
         
     | 
| 
      
 105 
     | 
    
         
            +
                  end
         
     | 
| 
      
 106 
     | 
    
         
            +
                  i_tried.each do |i|
         
     | 
| 
       95 
107 
     | 
    
         
             
                    tw = at(i)
         
     | 
| 
       96 
108 
     | 
    
         
             
                    if tw.acceptable_for(host_info)
         
     | 
| 
       97 
     | 
    
         
            -
                       
     | 
| 
       98 
     | 
    
         
            -
                        return delete_at(i)
         
     | 
| 
       99 
     | 
    
         
            -
                      else
         
     | 
| 
       100 
     | 
    
         
            -
                        i_found ||= i
         
     | 
| 
       101 
     | 
    
         
            -
                      end
         
     | 
| 
      
 109 
     | 
    
         
            +
                      return delete_at(i)
         
     | 
| 
       102 
110 
     | 
    
         
             
                    end
         
     | 
| 
       103 
111 
     | 
    
         
             
                  end
         
     | 
| 
       104 
     | 
    
         
            -
                   
     | 
| 
      
 112 
     | 
    
         
            +
                  nil
         
     | 
| 
       105 
113 
     | 
    
         
             
                end
         
     | 
| 
       106 
114 
     | 
    
         
             
              end
         
     | 
| 
       107 
115 
     | 
    
         | 
| 
         @@ -172,18 +180,24 @@ module Pwrake 
     | 
|
| 
       172 
180 
     | 
    
         
             
                end
         
     | 
| 
       173 
181 
     | 
    
         | 
| 
       174 
182 
     | 
    
         
             
                def pop_last_rank(r,host_info)
         
     | 
| 
       175 
     | 
    
         
            -
                   
     | 
| 
      
 183 
     | 
    
         
            +
                  i_tried = []
         
     | 
| 
       176 
184 
     | 
    
         
             
                  (size-1).downto(0) do |i|
         
     | 
| 
       177 
185 
     | 
    
         
             
                    tw = at(i)
         
     | 
| 
       178 
     | 
    
         
            -
                    if tw.rank == r 
     | 
| 
       179 
     | 
    
         
            -
                      if tw. 
     | 
| 
      
 186 
     | 
    
         
            +
                    if tw.rank == r
         
     | 
| 
      
 187 
     | 
    
         
            +
                      if tw.tried_host?(host_info)
         
     | 
| 
      
 188 
     | 
    
         
            +
                        i_tried << i
         
     | 
| 
      
 189 
     | 
    
         
            +
                      elsif tw.acceptable_for(host_info)
         
     | 
| 
       180 
190 
     | 
    
         
             
                        return delete_at(i)
         
     | 
| 
       181 
     | 
    
         
            -
                      else
         
     | 
| 
       182 
     | 
    
         
            -
                        i_found ||= i
         
     | 
| 
       183 
191 
     | 
    
         
             
                      end
         
     | 
| 
       184 
192 
     | 
    
         
             
                    end
         
     | 
| 
       185 
193 
     | 
    
         
             
                  end
         
     | 
| 
       186 
     | 
    
         
            -
                   
     | 
| 
      
 194 
     | 
    
         
            +
                  i_tried.each do |i|
         
     | 
| 
      
 195 
     | 
    
         
            +
                    tw = at(i)
         
     | 
| 
      
 196 
     | 
    
         
            +
                    if tw.acceptable_for(host_info)
         
     | 
| 
      
 197 
     | 
    
         
            +
                      return delete_at(i)
         
     | 
| 
      
 198 
     | 
    
         
            +
                    end
         
     | 
| 
      
 199 
     | 
    
         
            +
                  end
         
     | 
| 
      
 200 
     | 
    
         
            +
                  nil
         
     | 
| 
       187 
201 
     | 
    
         
             
                end
         
     | 
| 
       188 
202 
     | 
    
         | 
| 
       189 
203 
     | 
    
         
             
                def hrf_delete(t)
         
     | 
| 
         @@ -70,15 +70,12 @@ module Pwrake 
     | 
|
| 
       70 
70 
     | 
    
         
             
                end
         
     | 
| 
       71 
71 
     | 
    
         | 
| 
       72 
72 
     | 
    
         
             
                def deq_task(&block) # locality version
         
     | 
| 
       73 
     | 
    
         
            -
                  Log.debug "deq_task:"+(empty? ? " (empty)" : "\n#{inspect_q}")
         
     | 
| 
      
 73 
     | 
    
         
            +
                  Log.debug "deq_task from:"+(empty? ? " (empty)" : "\n#{inspect_q}")
         
     | 
| 
       74 
74 
     | 
    
         
             
                  queued = 0
         
     | 
| 
       75 
75 
     | 
    
         
             
                  @n_turn.times do |turn|
         
     | 
| 
       76 
76 
     | 
    
         
             
                    next if turn_empty?(turn)
         
     | 
| 
       77 
77 
     | 
    
         
             
                    queued += deq_turn(turn,&block)
         
     | 
| 
       78 
78 
     | 
    
         
             
                  end
         
     | 
| 
       79 
     | 
    
         
            -
                  if queued>0
         
     | 
| 
       80 
     | 
    
         
            -
                    Log.debug "deq_task: queued=#{queued}"
         
     | 
| 
       81 
     | 
    
         
            -
                  end
         
     | 
| 
       82 
79 
     | 
    
         
             
                end
         
     | 
| 
       83 
80 
     | 
    
         | 
| 
       84 
81 
     | 
    
         
             
                def deq_turn(turn,&block)
         
     | 
| 
         @@ -21,7 +21,17 @@ module Pwrake 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    prop = @last_property
         
     | 
| 
       22 
22 
     | 
    
         
             
                    @last_property = TaskProperty.new
         
     | 
| 
       23 
23 
     | 
    
         
             
                  end
         
     | 
| 
       24 
     | 
    
         
            -
                   
     | 
| 
      
 24 
     | 
    
         
            +
                  if !@disable_subflow
         
     | 
| 
      
 25 
     | 
    
         
            +
                    @subflow_prefix = Rake.application.current_flow[Fiber.current]
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
                  task = super
         
     | 
| 
      
 28 
     | 
    
         
            +
                  task.pw_set_property(prop)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  if !@disable_subflow
         
     | 
| 
      
 30 
     | 
    
         
            +
                    task.property.subflow = @subflow_prefix
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
                  task
         
     | 
| 
      
 33 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 34 
     | 
    
         
            +
                  @subflow_prefix = nil
         
     | 
| 
       25 
35 
     | 
    
         
             
                end
         
     | 
| 
       26 
36 
     | 
    
         | 
| 
       27 
37 
     | 
    
         
             
                def create_rule(*args, &block) # :nodoc:
         
     | 
| 
         @@ -30,5 +40,44 @@ module Pwrake 
     | 
|
| 
       30 
40 
     | 
    
         
             
                  super
         
     | 
| 
       31 
41 
     | 
    
         
             
                end
         
     | 
| 
       32 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
                def resolve_args(args)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  task_name, arg_names, deps = super(args)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  if @subflow_prefix
         
     | 
| 
      
 46 
     | 
    
         
            +
                    # fix prerequisites
         
     | 
| 
      
 47 
     | 
    
         
            +
                    deps.map! do |task_name|
         
     | 
| 
      
 48 
     | 
    
         
            +
                      add_prefix(task_name)
         
     | 
| 
      
 49 
     | 
    
         
            +
                    end
         
     | 
| 
      
 50 
     | 
    
         
            +
                  end
         
     | 
| 
      
 51 
     | 
    
         
            +
                  [task_name, arg_names, deps]
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                def intern(task_class, task_name)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  if @subflow_prefix
         
     | 
| 
      
 56 
     | 
    
         
            +
                    base_name = task_name
         
     | 
| 
      
 57 
     | 
    
         
            +
                    # fix task name
         
     | 
| 
      
 58 
     | 
    
         
            +
                    task_name = add_prefix(task_name)
         
     | 
| 
      
 59 
     | 
    
         
            +
                    if base_name != task_name && task_class == Rake::Task
         
     | 
| 
      
 60 
     | 
    
         
            +
                      sbfl = @subflow_prefix
         
     | 
| 
      
 61 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 62 
     | 
    
         
            +
                        @subflow_prefix = nil
         
     | 
| 
      
 63 
     | 
    
         
            +
                        @disable_subflow = true
         
     | 
| 
      
 64 
     | 
    
         
            +
                        Rake::Task.define_task(base_name => task_name)
         
     | 
| 
      
 65 
     | 
    
         
            +
                      ensure
         
     | 
| 
      
 66 
     | 
    
         
            +
                        @subflow_prefix = sbfl
         
     | 
| 
      
 67 
     | 
    
         
            +
                        @disable_subflow = false
         
     | 
| 
      
 68 
     | 
    
         
            +
                      end
         
     | 
| 
      
 69 
     | 
    
         
            +
                    end
         
     | 
| 
      
 70 
     | 
    
         
            +
                  end
         
     | 
| 
      
 71 
     | 
    
         
            +
                  super(task_class, task_name)
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                def add_prefix(task_name)
         
     | 
| 
      
 75 
     | 
    
         
            +
                  task_name = task_name.to_s
         
     | 
| 
      
 76 
     | 
    
         
            +
                  if /^\.?\.?\// =~ task_name
         
     | 
| 
      
 77 
     | 
    
         
            +
                    task_name
         
     | 
| 
      
 78 
     | 
    
         
            +
                  else
         
     | 
| 
      
 79 
     | 
    
         
            +
                    File.join(@subflow_prefix, task_name)
         
     | 
| 
      
 80 
     | 
    
         
            +
                  end
         
     | 
| 
      
 81 
     | 
    
         
            +
                end
         
     | 
| 
       33 
82 
     | 
    
         
             
              end
         
     | 
| 
       34 
83 
     | 
    
         
             
            end
         
     | 
| 
         @@ -4,6 +4,7 @@ module Pwrake 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
                attr_reader :ncore, :exclusive, :allow, :deny, :order_allow_deny,
         
     | 
| 
       6 
6 
     | 
    
         
             
                  :retry, :disable_steal
         
     | 
| 
      
 7 
     | 
    
         
            +
                attr_accessor :subflow
         
     | 
| 
       7 
8 
     | 
    
         | 
| 
       8 
9 
     | 
    
         
             
                def parse_description(description)
         
     | 
| 
       9 
10 
     | 
    
         
             
                  if /\bn_?cores?[=:]\s*([+-]?\d+)/i =~ description
         
     | 
| 
         @@ -38,19 +39,31 @@ module Pwrake 
     | 
|
| 
       38 
39 
     | 
    
         
             
                  end
         
     | 
| 
       39 
40 
     | 
    
         
             
                end
         
     | 
| 
       40 
41 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
                def  
     | 
| 
      
 42 
     | 
    
         
            +
                def merge(prop)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  @ncore = prop.ncore if prop.ncore
         
     | 
| 
      
 44 
     | 
    
         
            +
                  @exclusive = prop.exclusive if prop.exclusive
         
     | 
| 
      
 45 
     | 
    
         
            +
                  @allow = prop.allow if prop.allow
         
     | 
| 
      
 46 
     | 
    
         
            +
                  @deny = prop.deny if prop.deny
         
     | 
| 
      
 47 
     | 
    
         
            +
                  @order_allow_deny = prop.order_allow_deny if prop.order_allow_deny
         
     | 
| 
      
 48 
     | 
    
         
            +
                  @retry = prop.retry if prop.retry
         
     | 
| 
      
 49 
     | 
    
         
            +
                  @disable_steal = prop.disable_steal if prop.disable_steal
         
     | 
| 
      
 50 
     | 
    
         
            +
                  @subflow = prop.subflow if prop.subflow
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                def use_cores(host_info)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  nc = (@exclusive) ? 0 : (@ncore || 1)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  if nc < 1
         
     | 
| 
      
 56 
     | 
    
         
            +
                    nc += host_info.ncore
         
     | 
| 
      
 57 
     | 
    
         
            +
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
                  return nc
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                def accept_host(host_info)
         
     | 
| 
       42 
62 
     | 
    
         
             
                  return true unless host_info
         
     | 
| 
       43 
63 
     | 
    
         
             
                  if @disable_steal && host_info.steal_flag
         
     | 
| 
       44 
64 
     | 
    
         
             
                    #Log.debug("@disable_steal && host_info.steal_flag")
         
     | 
| 
       45 
65 
     | 
    
         
             
                    return false
         
     | 
| 
       46 
66 
     | 
    
         
             
                  end
         
     | 
| 
       47 
     | 
    
         
            -
                  ncore = (@exclusive) ? 0 : (@ncore || 1)
         
     | 
| 
       48 
     | 
    
         
            -
                  if ncore > 0
         
     | 
| 
       49 
     | 
    
         
            -
                    return false if ncore > host_info.idle_cores
         
     | 
| 
       50 
     | 
    
         
            -
                  else
         
     | 
| 
       51 
     | 
    
         
            -
                    n = host_info.ncore + ncore
         
     | 
| 
       52 
     | 
    
         
            -
                    return false if n < 1 || n > host_info.idle_cores
         
     | 
| 
       53 
     | 
    
         
            -
                  end
         
     | 
| 
       54 
67 
     | 
    
         
             
                  hn = host_info.name
         
     | 
| 
       55 
68 
     | 
    
         
             
                  if @allow
         
     | 
| 
       56 
69 
     | 
    
         
             
                    if @deny
         
     | 
| 
         @@ -29,12 +29,11 @@ module Pwrake 
     | 
|
| 
       29 
29 
     | 
    
         
             
                  @assigned = []
         
     | 
| 
       30 
30 
     | 
    
         
             
                  @exec_host = nil
         
     | 
| 
       31 
31 
     | 
    
         
             
                  @exec_host_id = nil
         
     | 
| 
       32 
     | 
    
         
            -
                  @tried_hosts =  
     | 
| 
      
 32 
     | 
    
         
            +
                  @tried_hosts = {}
         
     | 
| 
       33 
33 
     | 
    
         
             
                  @n_retry = @property.retry || Rake.application.pwrake_options["RETRY"] || 1
         
     | 
| 
       34 
34 
     | 
    
         
             
                end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                def_delegators :@task, :name, :actions, :prerequisites, :subsequents
         
     | 
| 
       37 
     | 
    
         
            -
                def_delegators :@property, :acceptable_for
         
     | 
| 
       38 
37 
     | 
    
         | 
| 
       39 
38 
     | 
    
         
             
                attr_reader :task, :task_id, :group, :group_id, :file_stat
         
     | 
| 
       40 
39 
     | 
    
         
             
                attr_reader :location
         
     | 
| 
         @@ -91,7 +90,7 @@ module Pwrake 
     | 
|
| 
       91 
90 
     | 
    
         
             
                end
         
     | 
| 
       92 
91 
     | 
    
         | 
| 
       93 
92 
     | 
    
         
             
                def retry_or_subsequent
         
     | 
| 
       94 
     | 
    
         
            -
                  @tried_hosts  
     | 
| 
      
 93 
     | 
    
         
            +
                  @tried_hosts[@exec_host] = true
         
     | 
| 
       95 
94 
     | 
    
         
             
                  if @status=="end"
         
     | 
| 
       96 
95 
     | 
    
         
             
                    @task.pw_enq_subsequents
         
     | 
| 
       97 
96 
     | 
    
         
             
                  elsif @n_retry > 0
         
     | 
| 
         @@ -102,7 +101,7 @@ module Pwrake 
     | 
|
| 
       102 
101 
     | 
    
         
             
                    @n_retry -= 1
         
     | 
| 
       103 
102 
     | 
    
         
             
                    Rake.application.task_queue.enq(self)
         
     | 
| 
       104 
103 
     | 
    
         
             
                  else
         
     | 
| 
       105 
     | 
    
         
            -
                    s="give up retry (retry_count 
     | 
| 
      
 104 
     | 
    
         
            +
                    s="give up retry (retry_count=#{@n_retry}): #{name}"
         
     | 
| 
       106 
105 
     | 
    
         
             
                    Log.error(s)
         
     | 
| 
       107 
106 
     | 
    
         
             
                    $stderr.puts(s)
         
     | 
| 
       108 
107 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -171,7 +170,7 @@ module Pwrake 
     | 
|
| 
       171 
170 
     | 
    
         
             
                  @@task_logger << row
         
     | 
| 
       172 
171 
     | 
    
         
             
                  #
         
     | 
| 
       173 
172 
     | 
    
         
             
                  clsname = @task.class.to_s.sub(/^(Rake|Pwrake)::/o,"")
         
     | 
| 
       174 
     | 
    
         
            -
                  msg = '%s 
     | 
| 
      
 173 
     | 
    
         
            +
                  msg = '%s[%s] status=%s id=%d elap=%.6f exec_host=%s' %
         
     | 
| 
       175 
174 
     | 
    
         
             
                    [clsname,name,@status,@task_id,elap,@exec_host]
         
     | 
| 
       176 
175 
     | 
    
         
             
                  if @status=="end"
         
     | 
| 
       177 
176 
     | 
    
         
             
                    Log.info msg
         
     | 
| 
         @@ -266,7 +265,7 @@ module Pwrake 
     | 
|
| 
       266 
265 
     | 
    
         
             
                      end
         
     | 
| 
       267 
266 
     | 
    
         
             
                      @rank = max_rank + step
         
     | 
| 
       268 
267 
     | 
    
         
             
                    end
         
     | 
| 
       269 
     | 
    
         
            -
                    Log.debug "Task[#{name}] rank=#{@rank.inspect}"
         
     | 
| 
      
 268 
     | 
    
         
            +
                    #Log.debug "Task[#{name}] rank=#{@rank.inspect}"
         
     | 
| 
       270 
269 
     | 
    
         
             
                  end
         
     | 
| 
       271 
270 
     | 
    
         
             
                  @rank
         
     | 
| 
       272 
271 
     | 
    
         
             
                end
         
     | 
| 
         @@ -343,9 +342,25 @@ module Pwrake 
     | 
|
| 
       343 
342 
     | 
    
         
             
                  @n_used_cores ||= @property.n_used_cores(host_info)
         
     | 
| 
       344 
343 
     | 
    
         
             
                end
         
     | 
| 
       345 
344 
     | 
    
         | 
| 
       346 
     | 
    
         
            -
                def  
     | 
| 
       347 
     | 
    
         
            -
                   
     | 
| 
       348 
     | 
    
         
            -
             
     | 
| 
      
 345 
     | 
    
         
            +
                def acceptable_for(host_info)
         
     | 
| 
      
 346 
     | 
    
         
            +
                  unless @property.accept_host(host_info)
         
     | 
| 
      
 347 
     | 
    
         
            +
                    return false
         
     | 
| 
      
 348 
     | 
    
         
            +
                  end
         
     | 
| 
      
 349 
     | 
    
         
            +
                  use_cores = @property.use_cores(host_info)
         
     | 
| 
      
 350 
     | 
    
         
            +
                  if @reserved_host.nil? || @reserved_host == host_info
         
     | 
| 
      
 351 
     | 
    
         
            +
                    case host_info.accept_core(name,use_cores)
         
     | 
| 
      
 352 
     | 
    
         
            +
                    when :ok
         
     | 
| 
      
 353 
     | 
    
         
            +
                      @reserved_host = nil
         
     | 
| 
      
 354 
     | 
    
         
            +
                      return true
         
     | 
| 
      
 355 
     | 
    
         
            +
                    when :reserve
         
     | 
| 
      
 356 
     | 
    
         
            +
                      @reserved_host = host_info
         
     | 
| 
      
 357 
     | 
    
         
            +
                    end
         
     | 
| 
      
 358 
     | 
    
         
            +
                  end
         
     | 
| 
      
 359 
     | 
    
         
            +
                  false
         
     | 
| 
      
 360 
     | 
    
         
            +
                end
         
     | 
| 
      
 361 
     | 
    
         
            +
             
     | 
| 
      
 362 
     | 
    
         
            +
                def tried_host?(host_info)
         
     | 
| 
      
 363 
     | 
    
         
            +
                  host_info && @tried_hosts[host_info.name]
         
     | 
| 
       349 
364 
     | 
    
         
             
                end
         
     | 
| 
       350 
365 
     | 
    
         | 
| 
       351 
366 
     | 
    
         
             
              end
         
     | 
    
        data/lib/pwrake/version.rb
    CHANGED
    
    
| 
         @@ -1,3 +1,5 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "socket"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            module Pwrake
         
     | 
| 
       2 
4 
     | 
    
         | 
| 
       3 
5 
     | 
    
         
             
              class GfarmDirectory < SharedDirectory
         
     | 
| 
         @@ -8,7 +10,7 @@ module Pwrake 
     | 
|
| 
       8 
10 
     | 
    
         
             
                @@gfarm2fs_debug = nil
         
     | 
| 
       9 
11 
     | 
    
         
             
                @@gfarm2fs_debug_wait = 1
         
     | 
| 
       10 
12 
     | 
    
         
             
                @@current_id = 0
         
     | 
| 
       11 
     | 
    
         
            -
                @@hostname =  
     | 
| 
      
 13 
     | 
    
         
            +
                @@hostname = Socket.gethostname
         
     | 
| 
       12 
14 
     | 
    
         | 
| 
       13 
15 
     | 
    
         
             
                def self.init(opts)
         
     | 
| 
       14 
16 
     | 
    
         
             
                  @@prefix   = opts[:base_dir]
         
     | 
| 
         @@ -57,7 +59,7 @@ module Pwrake 
     | 
|
| 
       57 
59 
     | 
    
         
             
                  path = @log.path
         
     | 
| 
       58 
60 
     | 
    
         
             
                  begin
         
     | 
| 
       59 
61 
     | 
    
         
             
                    if @@gfarm2fs_debug && path
         
     | 
| 
       60 
     | 
    
         
            -
                      f = path+("gfarm2fs-" 
     | 
| 
      
 62 
     | 
    
         
            +
                      f = path+("gfarm2fs-"+@@hostname+"-"+@suffix)
         
     | 
| 
       61 
63 
     | 
    
         
             
                      spawn_cmd "gfarm2fs #{@@gfarm2fs_option} -d #{@gfarm_mountpoint} > #{f} 2>&1 & sleep #{@@gfarm2fs_debug_wait}"
         
     | 
| 
       62 
64 
     | 
    
         
             
                    else
         
     | 
| 
       63 
65 
     | 
    
         
             
                      spawn_cmd "gfarm2fs #{@@gfarm2fs_option} #{@gfarm_mountpoint}"
         
     | 
| 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "singleton"
         
     | 
| 
       2 
2 
     | 
    
         
             
            require "forwardable"
         
     | 
| 
       3 
3 
     | 
    
         
             
            require "logger"
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "socket"
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
6 
     | 
    
         
             
            module Pwrake
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
         @@ -46,7 +47,7 @@ module Pwrake 
     | 
|
| 
       46 
47 
     | 
    
         
             
                    @dir = dir_class.new
         
     | 
| 
       47 
48 
     | 
    
         
             
                    @dir.open
         
     | 
| 
       48 
49 
     | 
    
         
             
                    @path = @dir.log_path
         
     | 
| 
       49 
     | 
    
         
            -
                    fn = "worker-#{ 
     | 
| 
      
 50 
     | 
    
         
            +
                    fn = "worker-#{Socket.gethostname}-#{Process.pid}.log"
         
     | 
| 
       50 
51 
     | 
    
         
             
                    @logfile = (@path + fn).to_s
         
     | 
| 
       51 
52 
     | 
    
         
             
                    ::FileUtils.mkdir_p(@path.to_s)
         
     | 
| 
       52 
53 
     | 
    
         
             
                    @logger = @logger_file = ::Logger.new(@logfile)
         
     | 
| 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "thread"
         
     | 
| 
       2 
2 
     | 
    
         
             
            require "fileutils"
         
     | 
| 
       3 
3 
     | 
    
         
             
            require "timeout"
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "socket"
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
6 
     | 
    
         
             
            begin
         
     | 
| 
       6 
7 
     | 
    
         
             
              Pwrake::Invoker.new.run
         
     | 
| 
         @@ -8,7 +9,7 @@ rescue => exc 
     | 
|
| 
       8 
9 
     | 
    
         
             
              log = Pwrake::LogExecutor.instance
         
     | 
| 
       9 
10 
     | 
    
         
             
              log.error exc
         
     | 
| 
       10 
11 
     | 
    
         
             
              log.error exc.backtrace.join("\n")
         
     | 
| 
       11 
     | 
    
         
            -
              open("pwrake_worker_err-#{ 
     | 
| 
      
 12 
     | 
    
         
            +
              open("pwrake_worker_err-#{Socket.gethostname}-#{Process.pid}","w") do |f|
         
     | 
| 
       12 
13 
     | 
    
         
             
                f.puts exc
         
     | 
| 
       13 
14 
     | 
    
         
             
                f.puts exc.backtrace.join("\n")
         
     | 
| 
       14 
15 
     | 
    
         
             
              end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: pwrake
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2.2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.2.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Masahiro TANAKA
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2017- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2017-07-14 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: parallel
         
     |