From 5ec7bc555bbfcbd22a1095bc4936568898f894da Mon Sep 17 00:00:00 2001 From: Guillermo Ramos Date: Mon, 24 Feb 2020 13:03:02 +0100 Subject: tgserver: Catch errors w/ exponential backoff wait --- tgserver | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tgserver b/tgserver index e624ae2..b83e68a 100755 --- a/tgserver +++ b/tgserver @@ -37,9 +37,19 @@ $TOKEN ||= fetch_token() or my $cache = TgLib::Cache->new($logger); my $api = TgLib::Api->new($TOKEN, $logger); +my $sleep_exp = 1; while (1) { # FIXME magic timeout - foreach my $update (@{$api->get_updates(3600, $cache->offset)}) { + my @updates = eval { @{$api->get_updates(3600, $cache->offset)} }; + if ($@) { + chomp $@; + print "ERROR: $@\n"; + sleep($sleep_exp); + $sleep_exp *= 2 unless $sleep_exp >= 32; + } else { + $sleep_exp = 1; + }; + foreach my $update (@updates) { # Cache current offset $cache->offset($update->{'update_id'}+1); -- cgit v1.2.3