zuora_connect 1.5.313 → 1.5.314

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c7fa631da95562ffbed414ffc8b15c7ca7caf757
4
- data.tar.gz: c7defc8fb255e7719fa74cc64d679a761be9ce29
3
+ metadata.gz: d0cf0420609a3c81b7024dd3903606536b411213
4
+ data.tar.gz: cd2ace3b4722dfd1dcd354555f097462014392f4
5
5
  SHA512:
6
- metadata.gz: 57bba8bae751a23da6bb36a2f2e53837434a3450cebf1ec2900b5b1d0162fc6d4fff30206465718f1dd096fad1ed618cd1f20cd38996922a5c099d256fb79d48
7
- data.tar.gz: 0790067b06387204f4921d044cc72899f80590c138607eed111cbcce74f9c463e1490c3aeaeecdb69fd2119cc868c9fba9b1d6d65d34dd4ec4a2791d6c89cfaf
6
+ metadata.gz: 7b9a0c804973326def2ea1c754866a26dfa579647a363e1cad92d5bc832eb989d74140df5e3ec0a5b9f0eabdef3ce0f4e4445e6ce0c206fe250def9c71bb3e16
7
+ data.tar.gz: 77e84f038f3a121ff7fb2e9a63883a1c2dd26eb838527eaf2df30fac0053773f1828a21670e1c4190a4f54cbe3d80ef7ea720a1d27bf94eec27ef25b47e72d64
@@ -33,7 +33,7 @@ module ZuoraConnect
33
33
  Thread.current[:appinstance] = self
34
34
  end
35
35
 
36
- def new_session(session: self.data_lookup, username: self.access_token, password: self.refresh_token)
36
+ def new_session(session: self.data_lookup, username: self.access_token, password: self.refresh_token, holding_pattern: false)
37
37
  @api_version = "v2"
38
38
  @username = username
39
39
  @password = password
@@ -63,18 +63,22 @@ module ZuoraConnect
63
63
 
64
64
  if session.empty?
65
65
  Rails.logger.info("[#{self.id}] REFRESHING - Session Empty")
66
+ raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
66
67
  self.refresh(session)
67
68
 
68
69
  elsif (self.id != session["appInstance"].to_i)
69
70
  Rails.logger.info("[#{self.id}] REFRESHING - AppInstance ID(#{self.id}) does not match session id(#{session["appInstance"].to_i})")
71
+ raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
70
72
  self.refresh(session)
71
73
 
72
74
  elsif session["#{self.id}::task_data"].blank?
73
75
  Rails.logger.info("[#{self.id}] REFRESHING - Task Data Blank")
76
+ raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
74
77
  self.refresh(session)
75
78
 
76
79
  elsif session["#{self.id}::last_refresh"].blank?
77
80
  Rails.logger.info("[#{self.id}] REFRESHING - No Time on Cookie")
81
+ raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
78
82
  self.refresh(session)
79
83
 
80
84
  # If the cache is expired and we can aquire a refresh lock
@@ -83,7 +87,7 @@ module ZuoraConnect
83
87
  self.refresh(session)
84
88
  else
85
89
  if time_expire < 0
86
- Rails.logger.info(["[#{self.id}] REBUILDING - Expired by #{time_expire} seconds", self.marked_for_refresh? ? " cache updating as of #{self.refreshed_at} seconds ago" : nil].compact.join(','))
90
+ Rails.logger.info(["[#{self.id}] REBUILDING - Expired by #{time_expire} seconds", self.marked_for_refresh? ? " cache updating as of #{self.reset_mark_refreshed_at} seconds ago" : nil].compact.join(','))
87
91
  else
88
92
  Rails.logger.info("[#{self.id}] REBUILDING - Expires in #{time_expire} seconds")
89
93
  end
@@ -98,6 +102,13 @@ module ZuoraConnect
98
102
  Time.zone = self.timezone
99
103
  Thread.current[:appinstance] = self
100
104
  return self
105
+ rescue ZuoraConnect::Exceptions::HoldingPattern => ex
106
+ while self.marked_for_refresh?
107
+ Rails.logger.info("[#{self.id}] Holding - Expires in #{self.reset_mark_expires_at}")
108
+ sleep(5)
109
+ end
110
+ self.reload_attributes([:refresh_token, :oauth_expires_at, :access_token])
111
+ retry
101
112
  end
102
113
 
103
114
  def refresh(session = nil)
@@ -110,25 +121,30 @@ module ZuoraConnect
110
121
  Rails.logger.info("[#{self.id}] REFRESH TASK - Connect Task Info Request Time #{response_time.round(2).to_s}")
111
122
  if response.code == 200
112
123
  build_task(JSON.parse(response.body), session)
113
-
114
124
  @last_refresh = Time.now.to_i
115
125
  self.cache_app_instance
126
+ self.reset_mark_for_refresh
116
127
  else
128
+ Rails.logger.fatal("[#{self.id}] REFRESH TASK - Failed Code #{response.code}")
117
129
  raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error Communicating with Connect", response.body, response.code)
118
130
  end
119
131
  rescue Net::ReadTimeout, Net::OpenTimeout, Errno::EPIPE, Errno::ECONNRESET, Errno::ECONNREFUSED, SocketError
120
132
  if (refresh_count += 1) < 3
133
+ Rails.logger.info("[#{self.id}] REFRESH TASK - Timeout Retrying(#{refresh_count})")
121
134
  retry
122
135
  else
136
+ Rails.logger.fatal("[#{self.id}] REFRESH TASK - Timeout Failed #{refresh_count}x")
123
137
  raise
124
138
  end
125
139
  rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex
126
140
  if (refresh_count += 1) < 3
141
+ Rails.logger.info("[#{self.id}] REFRESH TASK - Failed Retrying(#{refresh_count})")
127
142
  if ex.code == 401
128
143
  self.refresh_oauth
129
144
  end
130
145
  retry
131
146
  else
147
+ Rails.logger.fatal("[#{self.id}] REFRESH TASK - Failed #{refresh_count}x")
132
148
  raise
133
149
  end
134
150
  end
@@ -236,15 +252,21 @@ module ZuoraConnect
236
252
  end
237
253
  rescue Net::ReadTimeout, Net::OpenTimeout, Errno::EPIPE, Errno::ECONNRESET, Errno::ECONNREFUSED, SocketError => ex
238
254
  if (refresh_oauth_count += 1) < 3
255
+ Rails.logger.info("[#{self.id}] REFRESH OAUTH - Timeout Retrying(#{refresh_oauth_count})")
239
256
  retry
240
257
  else
258
+ Rails.logger.fatal("[#{self.id}] REFRESH OAUTH - Timeout Failed #{refresh_oauth_count}x")
241
259
  raise
242
260
  end
243
261
  rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex
262
+ sleep(5)
263
+ self.reload_attributes([:refresh_token, :oauth_expires_at, :access_token]) #Reload only the refresh token for retry
264
+
265
+ #After reload, if nolonger expired return
266
+ return if !self.oauth_expired?
267
+
244
268
  if (refresh_oauth_count += 1) < 3
245
269
  Rails.logger.info("[#{self.id}] REFRESH OAUTH - Failed Retrying(#{refresh_oauth_count})")
246
- sleep(5)
247
- self.reload_attributes([:refresh_token]) #Refload only the refresh token for retry
248
270
  retry
249
271
  else
250
272
  Rails.logger.fatal("[#{self.id}] REFRESH OAUTH - Failed #{refresh_oauth_count}x")
@@ -262,10 +284,14 @@ module ZuoraConnect
262
284
  Redis.current.del("AppInstance:#{self.id}:Refreshing") if defined?(Redis.current)
263
285
  end
264
286
 
265
- def refreshed_at
287
+ def reset_mark_refreshed_at
266
288
  return defined?(Redis.current) ? REFRESH_TIMEOUT.to_i - Redis.current.ttl("AppInstance:#{self.id}:Refreshing") : 0
267
289
  end
268
290
 
291
+ def reset_mark_expires_at
292
+ return defined?(Redis.current) ? Redis.current.ttl("AppInstance:#{self.id}:Refreshing") : 0
293
+ end
294
+
269
295
  def mark_for_refresh
270
296
  return defined?(Redis.current) ? Redis.current.set("AppInstance:#{self.id}:Refreshing", true, {:nx => true, :ex => REFRESH_TIMEOUT.to_i}) : true
271
297
  end
@@ -292,6 +318,7 @@ module ZuoraConnect
292
318
  if defined?(Redis.current)
293
319
  #Task data must be present and the last refresh cannot be old. We dont want to overwite new cache data with old
294
320
  if self.task_data.present? && (self.last_refresh.to_i > INSTANCE_REFRESH_WINDOW.ago.to_i)
321
+ Rails.logger.info("[#{self.id}] Caching AppInstance")
295
322
  Redis.current.setex("AppInstance:#{self.id}", INSTANCE_REDIS_CACHE_PERIOD.to_i, encrypt_data(data: self.save_data))
296
323
  end
297
324
  Redis.current.del("Deleted:#{self.id}")
@@ -1,5 +1,7 @@
1
1
  module ZuoraConnect
2
2
  module Exceptions
3
+
4
+ class HoldingPattern < StandardError; end
3
5
  class Error < StandardError; end
4
6
  class AuthorizationNotPerformed < Error; end
5
7
 
@@ -1,4 +1,4 @@
1
1
  module ZuoraConnect
2
- VERSION = "1.5.313"
2
+ VERSION = "1.5.314"
3
3
  end
4
4
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zuora_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.313
4
+ version: 1.5.314
5
5
  platform: ruby
6
6
  authors:
7
7
  - Connect Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-05 00:00:00.000000000 Z
11
+ date: 2018-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apartment