zuora_connect 1.5.313 → 1.5.314
Sign up to get free protection for your applications and to get access to all the features.
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
|