Skip to content

Commit 46477f2

Browse files
authored
Merge pull request #13 from trocco-io/retry-with-sslerror
2 parents 011a319 + d1c69c4 commit 46477f2

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

lib/embulk/output/bigquery/google_client.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,17 @@ def with_network_retry(&block)
4949
retries = 0
5050
begin
5151
yield
52-
rescue ::Java::Java.net.SocketException, ::Java::Java.net.ConnectException => e
53-
if ['Broken pipe', 'Connection reset', 'Connection timed out'].include?(e.message)
52+
53+
# httpclient which google-api-ruby-client depends on, catches java.net.SocketException and java.net.ConnectionException and
54+
# raises SSLError.
55+
# https://github.com/nahi/httpclient/blob/4658227a46f7caa633ef8036f073bbd1f0a955a2/lib/httpclient/jruby_ssl_socket.rb#L124-L134
56+
rescue OpenSSL::SSL::SSLError => e
57+
retry_messages = [
58+
"Java::JavaNet::SocketException: Connection reset",
59+
"Java::JavaNet::SocketException: Broken pipe",
60+
"Java::JavaNet::ConnectException: Connection timed out",
61+
]
62+
if retry_messages.include?(e.message)
5463
if retries < @task['retries']
5564
retries += 1
5665
Embulk.logger.warn { "embulk-output-bigquery: retry \##{retries}, #{e.class} #{e.message}" }

0 commit comments

Comments
 (0)