Module: Steem::Retriable
- Included in:
- Broadcast, TransactionBuilder
- Defined in:
- lib/steem/mixins/retriable.rb
Constant Summary collapse
- MAX_RETRY_COUNT =
30- MAX_RETRY_ELAPSE =
60- MAX_BACKOFF =
MAX_RETRY_ELAPSE / 4
- RETRYABLE_EXCEPTIONS =
[ NonCanonicalSignatureError, IncorrectRequestIdError, IncorrectResponseIdError, RemoteDatabaseLockError ]
Instance Method Summary collapse
-
#backoff ⇒ Object
Expontential backoff.
- #can_retry?(e = nil) ⇒ Boolean
Instance Method Details
#backoff ⇒ Object
Expontential backoff.
19 20 21 22 23 24 25 |
# File 'lib/steem/mixins/retriable.rb', line 19 def backoff @backoff ||= 0.1 @backoff *= 2 @backoff = 0.1 if @backoff > MAX_BACKOFF sleep @backoff end |
#can_retry?(e = nil) ⇒ Boolean
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/steem/mixins/retriable.rb', line 27 def can_retry?(e = nil) @retry_count ||= 0 @first_retry_at ||= Time.now.utc return false if @retry_count >= MAX_RETRY_COUNT @retry_count = if Time.now.utc - @first_retry_at > MAX_RETRY_ELAPSE @first_retry_at = nil else @retry_count + 1 end can_retry = case e when *RETRYABLE_EXCEPTIONS then true else; false end backoff if can_retry can_retry end |