Method: Batchbase::Core#execute
- Defined in:
- lib/batchbase/core.rb
#execute(options = {}, &process) ⇒ Object
内部的には
init
execute_inner
release
の順にコールしてます
- options
-
プログラムより指定するバッチ動作オプション(ハッシュ値):double_process_check 初期値 true :auto_recover 初期値 false
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/batchbase/core.rb', line 85 def execute(={},&process) result = nil begin init (,ARGV) logger.info "start script(#{pg_path})" logger.debug "caller=#{caller}" result = double_process_check_and_create_pid_file case result when DOUBLE_PROCESS_CHECK__OK,DOUBLE_PROCESS_CHECK__AUTO_RECOVERD if result == DOUBLE_PROCESS_CHECK__AUTO_RECOVERD logger.warn "lock file still exists[pid=#{env[:old_pid_from_pid_file]}:file=#{pid_file}],but process does not found.Auto_recover enabled.so process continues" end result = execute_inner(&process) when DOUBLE_PROCESS_CHECK__NG logger.error "lock file still exists[pid=#{env[:old_pid_from_pid_file]}:file=#{pid_file}],but process does not found.Auto_recover disabled.so process can not continue" when DOUBLE_PROCESS_CHECK__STILL_RUNNING logger.warn "pid:#{env[:old_pid_from_pid_file]} still running" when DOUBLE_PROCESS_CHECK__SAME_PROCESS_NAME logger.warn "process_name:#{env[:process_name]} still exists" else raise 'must not happen' end rescue => e logger.error e ensure release logger.info "finish script (%1.3fsec)" % (Time.now - @__script_started_at) end result end |