stripe 5.0.1 → 5.1.0

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
  SHA256:
3
- metadata.gz: 85172888973b3726ad9e22512ff8b2568306b70d1627c5ee3adafb29c9626e07
4
- data.tar.gz: 89344233f7ba4423b5fbc35b30152dec1b5f798931a5b69710d244ea05146b98
3
+ metadata.gz: 52049216e773c7f0f33c6c1b99ab895927df85cc1a818086af835e6f4ae7e3b7
4
+ data.tar.gz: a44404e74a7fa7834672a71aeb2ff6b56f49f1def42f9cca984fe7cc2edc486e
5
5
  SHA512:
6
- metadata.gz: e48a09594870a21082733d2b9a7ef9eb9bc27d757de666bb1fbab25b1aa9143c3ad1c2e610a13199395efd36f8d3b71f1d601dd3e03da1a69911e5be46074c5a
7
- data.tar.gz: 1d376a59eb9072debb80e3c17b1fb6961d766f780c5d81b2771773018616ce4a8e049933537a9ba5a334df774b9307fbf0105af790bbc2ee7a0089d54441ee98
6
+ metadata.gz: 1f68b7b4fecb087800254fdcb9346be6c0d56fbe1494e4882f273802ab571d27f2b01d87b2466a9899ba0cb2566f209d93142883c073dda2aaecccb3e6372632
7
+ data.tar.gz: 97e07a834fbc3d2ecdb04f88aaa6198221aa030db6637f5404545e33d007fcb80bb23a426dbbca96eef2ed64e61167a86db671062adf58a0189ab2cccfbba410
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.1.0 - 2019-08-27
4
+ * [#841](https://github.com/stripe/stripe-ruby/pull/841) Retry requests on a 429 that's a lock timeout
5
+
3
6
  ## 5.0.1 - 2019-08-20
4
7
  * [#836](https://github.com/stripe/stripe-ruby/pull/836) Increase connection keep alive timeout to 30 seconds
5
8
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 5.0.1
1
+ 5.1.0
@@ -109,14 +109,7 @@ module Stripe
109
109
  connection.cert_store = Stripe.ca_store
110
110
  else
111
111
  connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
112
-
113
- unless @verify_ssl_warned
114
- @verify_ssl_warned = true
115
- warn("WARNING: Running without SSL cert verification. " \
116
- "You should never do this in production. " \
117
- "Execute `Stripe.verify_ssl_certs = true` to enable " \
118
- "verification.")
119
- end
112
+ warn_ssl_verify_none
120
113
  end
121
114
 
122
115
  connection
@@ -134,5 +127,15 @@ module Stripe
134
127
  [u.host, u.port, u.user, u.password]
135
128
  end
136
129
  end
130
+
131
+ private def warn_ssl_verify_none
132
+ return if @verify_ssl_warned
133
+
134
+ @verify_ssl_warned = true
135
+ warn("WARNING: Running without SSL cert verification. " \
136
+ "You should never do this in production. " \
137
+ "Execute `Stripe.verify_ssl_certs = true` to enable " \
138
+ "verification.")
139
+ end
137
140
  end
138
141
  end
@@ -88,6 +88,16 @@ module Stripe
88
88
  # 409 Conflict
89
89
  return true if error.http_status == 409
90
90
 
91
+ # 429 Too Many Requests
92
+ #
93
+ # There are a few different problems that can lead to a 429. The most
94
+ # common is rate limiting, on which we *don't* want to retry because
95
+ # that'd likely contribute to more contention problems. However, some
96
+ # 429s are lock timeouts, which is when a request conflicted with
97
+ # another request or an internal process on some particular object.
98
+ # These 429s are safe to retry.
99
+ return true if error.http_status == 429 && error.code == "lock_timeout"
100
+
91
101
  # 500 Internal Server Error
92
102
  #
93
103
  # We only bother retrying these for non-POST requests. POSTs end up
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Stripe
4
- VERSION = "5.0.1"
4
+ VERSION = "5.1.0"
5
5
  end
@@ -122,6 +122,12 @@ module Stripe
122
122
  method: :post, num_retries: 0)
123
123
  end
124
124
 
125
+ should "retry on a 429 Too Many Requests when lock timeout" do
126
+ assert StripeClient.should_retry?(Stripe::StripeError.new(http_status: 429,
127
+ code: "lock_timeout"),
128
+ method: :post, num_retries: 0)
129
+ end
130
+
125
131
  should "retry on a 500 Internal Server Error when non-POST" do
126
132
  assert StripeClient.should_retry?(Stripe::StripeError.new(http_status: 500),
127
133
  method: :get, num_retries: 0)
@@ -142,6 +148,12 @@ module Stripe
142
148
  method: :post, num_retries: 0)
143
149
  end
144
150
 
151
+ should "not retry on a 429 Too Many Requests when not lock timeout" do
152
+ refute StripeClient.should_retry?(Stripe::StripeError.new(http_status: 429,
153
+ code: "rate_limited"),
154
+ method: :post, num_retries: 0)
155
+ end
156
+
145
157
  should "not retry on a 500 Internal Server Error when POST" do
146
158
  refute StripeClient.should_retry?(Stripe::StripeError.new(http_status: 500),
147
159
  method: :post, num_retries: 0)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.1
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-20 00:00:00.000000000 Z
11
+ date: 2019-08-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Stripe is the easiest way to accept payments online. See https://stripe.com
14
14
  for details.