Method: NetSuite::Utilities#backoff

Defined in:
lib/netsuite/utilities.rb

#backoff(options = {}) ⇒ Object

TODO need structured logger for various statements



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/netsuite/utilities.rb', line 7

def backoff(options = {})
  count = 0
  begin
    count += 1
    yield
  rescue options[:exception] || Savon::SOAPFault => e
    if !e.message.include?("Only one request may be made against a session at a time")
      raise e
    end
    if count >= (options[:attempts] || 8)
      raise e
    end
    # log.warn("concurrent request failure", sleep: count, attempt: count)
    sleep(count)
    retry
  end
end