stripe 5.0.1 → 5.1.0

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
  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.