Class: Ktl::ReassignmentTask

Inherits:
Object
  • Object
show all
Defined in:
lib/ktl/reassignment_task.rb

Instance Method Summary collapse

Constructor Details

#initialize(reassigner, plan, shell, options = {}) ⇒ ReassignmentTask

Returns a new instance of ReassignmentTask.



5
6
7
8
9
10
# File 'lib/ktl/reassignment_task.rb', line 5

def initialize(reassigner, plan, shell, options={})
  @reassigner = reassigner
  @plan = plan
  @shell = shell
  @logger = options[:logger] || NullLogger.new
end

Instance Method Details

#execute(dryrun = false) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/ktl/reassignment_task.rb', line 12

def execute(dryrun = false)
  if @reassigner.reassignment_in_progress?
    @logger.warn 'reassignment already in progress, exiting'
  else
    if use_overflow?
      @logger.info 'loading overflow data'
      reassignment = @reassigner.load_overflow
    else
      @logger.info 'generating a new reassignment plan'
      reassignment = @plan.generate
    end
    if reassignment.size > 0
      @logger.info 'reassigning %d partitions' % reassignment.size
      if dryrun
        @logger.info 'dryrun detected, skipping reassignment'
      else
        @reassigner.execute(reassignment)
      end
    else
      @logger.warn 'empty reassignment, ignoring'
    end
  end
end