Sha256: 624e201c07cb20cf0ec8ccc133bc81aaaccf0c9494d7b6aadc3f24b4b0316032
Contents?: true
Size: 1.57 KB
Versions: 1
Compression:
Stored size: 1.57 KB
Contents
module CM module Batch class Celluloid < Nucleon.plugin_class(:CM, :batch) #----------------------------------------------------------------------------- # Plugin interface def normalize(reload) super yield if block_given? end #----------------------------------------------------------------------------- # Checks #----------------------------------------------------------------------------- # Property accessors / modifiers #----------------------------------------------------------------------------- # Operations #----------------------------------------------------------------------------- # Utilities def execute_parallel(operation) values = [] timeouts = [] resources.each do |resource| values << ::Celluloid::Future.new(resource) do success = true begin timeouts << ( resource.respond_to?(:timeout) ? resource.timeout : nil ) resource.execute(operation) success = resource.status == code.success rescue => error logger.error("Resource #{resource.id} #{operation} experienced an error:") logger.error(error.inspect) logger.error(error.message) logger.error(Nucleon::Util::Data.to_yaml(error.backtrace)) error('resource_execution', { :id => resource.id, :operation => operation, :message => error.message }) success = false end success end end values = values.each_with_index.map do |future, index| future.value(timeouts[index]) end !values.include?(false) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cm-0.1.8 | lib/CM/batch/celluloid.rb |