class ZuoraConnect::AppInstanceBase
def refresh(session: {})
def refresh(session: {}) refresh_count ||= 0 skip_connect ||= ZuoraConnect.configuration.skip_connect begin #Check how app was deployed if !self.auto_deployed? && (!skip_connect || self['zuora_logins'].blank?) self.fetch_connect_data(session: session) else self.build_task(task_data: self.zuora_logins, session: session) end self.last_refresh = Time.now.to_i self.cache_app_instance self.reset_mark_for_refresh rescue *(ZuoraAPI::Login::CONNECTION_EXCEPTIONS + ZuoraAPI::Login::CONNECTION_READ_EXCEPTIONS) => ex refresh_count += 1 if refresh_count < 3 sleep(10) ZuoraConnect.logger.debug("REFRESH TASK - Connection Failure Retrying(#{refresh_count})", ex, self.default_ougai_items) retry else ZuoraConnect.logger.fatal("REFRESH TASK - Connection Failed", ex) raise end rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex refresh_count += 1 if refresh_count < 3 ZuoraConnect.logger.debug("REFRESH TASK - Communication Failure Retrying(#{refresh_count})", ex, self.default_ougai_items) self.refresh_oauth if ex.code == 401 retry else ZuoraConnect.logger.fatal("REFRESH TASK - Communication Failed #{ex.code}", ex, self.default_ougai_items) raise end end rescue => ex refresh_count += 1 if self['zuora_logins'].present? && refresh_count < 3 ZuoraConnect.logger.warn("REFRESH TASK - Fallback to local encrypted store", ex, self.default_ougai_items) skip_connect = true retry end raise end