Module: VimBaseSyncDebug

Defined in:
lib/VMwareWebService/vim_base_sync_debug.rb

Class Method Summary collapse

Class Method Details

.vsd_set_callbacks(lock) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/VMwareWebService/vim_base_sync_debug.rb', line 2

def self.vsd_set_callbacks(lock)
  lock.on_lock_request do |li|
    $vim_log.info "VimSyncDebug - Requesting lock: #{li[:lock].lock_name}, from_mode = #{li[:lock].sync_mode}, to_mode = #{li[:mode]} [#{li[:call_stack][0]}]"
  end

  lock.on_lock_acquire do |li|
    $vim_log.info "VimSyncDebug - Acquired lock: #{li[:lock].lock_name}, acquired_mode = #{li[:lock].sync_mode}, requested_mode = #{li[:mode]} [#{li[:call_stack][0]}]"
  end

  lock.on_unlock_request do |li|
    $vim_log.info "VimSyncDebug - Releasing lock: #{li[:lock].lock_name}, pre-release_mode = #{li[:lock].sync_mode}, [#{li[:call_stack][0]}]"
  end

  lock.on_unlock do |li|
    $vim_log.info "VimSyncDebug - Released lock: #{li[:lock].lock_name}, post-release_mode = #{li[:lock].sync_mode}, [#{li[:call_stack][0]}]"
  end

  lock.on_dead_locker do |lia|
    li  = lia.first
    thr = li[:thread]
    ln  = li[:lock].lock_name
    $vim_log.error "VimSyncDebug - Locking Thread has terminated: Lock(#{ln}), Thread(#{thr.object_id})."
    $vim_log.error "VimSyncDebug - Start backtrace"
    $vim_log.error li[:call_stack].join("\n")
    $vim_log.error "VimSyncDebug - End backtrace"
  end

  lock.on_lock_timeout lambda { |li, dt|
    thr = li[:thread]
    $vim_log.error "VimSyncDebug - Lock timeout: thread #{thr.object_id} has held #{li[:lock].lock_name} for #{dt} seconds"
    $vim_log.error "VimSyncDebug - Lock acquisition: Start backtrace"
    $vim_log.error li[:call_stack].join("\n")
    $vim_log.error "VimSyncDebug - Lock acquisition: End backtrace"

    $vim_log.error "VimSyncDebug - Locking thread: Start backtrace"
    $vim_log.error thr.backtrace.join("\n") if thr.alive?
    $vim_log.error "VimSyncDebug - Locking thread: End backtrace"
    return false # don't raise an exception
  }

  lock.on_watchdog_start do |l|
    $vim_log.info "VimSyncDebug - Watchdog starting for #{l.lock_name}"
  end

  lock.on_watchdog_stop do |l, err|
    $vim_log.info "VimSyncDebug - Watchdog for #{l.lock_name} stopping"
    if err
      $vim_log.error "VimSyncDebug - Watchdog ERROR: #{err}"
      $vim_log.error "VimSyncDebug - Watchdog: Start backtrace"
      $vim_log.error err.backtrace.join("\n")
      $vim_log.error "VimSyncDebug - Watchdog: End backtrace"
    end
  end

  lock.on_watchdog_heartbeat do |l|
    $vim_log.debug "Watchdog for #{l.lock_name}: HEARTBEAT"
  end

  # lock.on_watchdog_acquire_mutex do |l|
  #   $vim_log.debug "Watchdog for #{l.lock_name}: MUTEX acquired"
  # end
  #
  # lock.on_watchdog_release_mutex do |l|
  #   $vim_log.debug "Watchdog for #{l.lock_name}: MUTEX released"
  # end
end