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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d0cf0420609a3c81b7024dd3903606536b411213
|
|
4
|
+
data.tar.gz: cd2ace3b4722dfd1dcd354555f097462014392f4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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
|
|
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}")
|
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.
|
|
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-
|
|
11
|
+
date: 2018-03-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: apartment
|