Skip to content

Commit 3a0447a

Browse files
authored
Fixed bug in exponential retry intervals (#83)
* Fixed bug in exponential retry intervals * Update test.yml
1 parent cf91009 commit 3a0447a

File tree

4 files changed

+60
-6
lines changed

4 files changed

+60
-6
lines changed

.github/workflows/test.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@ jobs:
1010
- uses: actions/checkout@v3
1111
name: Checkout project
1212

13-
- uses: leafo/gh-actions-lua@v9
14-
name: Install Lua
15-
with:
16-
luaVersion: "5.1.5"
13+
- name: Install Lua
14+
run: sudo apt-get install lua5.1 lua-check luarocks
1715

1816
- name: Setup telescope
1917
run: |
@@ -28,4 +26,4 @@ jobs:
2826
- name: Run tests
2927
run: |
3028
lua -v
31-
./tsc -f test/test_socket.lua test/test_nakama.lua test/test_satori.lua test/test_session.lua
29+
./tsc -f test/test_socket.lua test/test_nakama.lua test/test_satori.lua test/test_session.lua test/test_retries.lua

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
77

88
## [Unreleased]
99

10+
### Fixed
11+
- Creating an exponentially increasing retry interval caused a Lua error
12+
1013
## [3.4.0] - 2024-09-16
14+
### Added
1115
- Added support for Satori
1216

1317
## [3.3.0] - 2024-06-14

nakama/util/retries.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ local M = {}
99
function M.exponential(attempts, interval)
1010
local delays = {}
1111
for i=1,attempts do
12-
delays[i] = (i > 1) and delays[i] * 2 or interval
12+
delays[i] = (i > 1) and delays[i - 1] * 2 or interval
1313
end
1414
return delays
1515
end

test/test_retries.lua

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
local retries = require "nakama.util.retries"
2+
local log = require "nakama.util.log"
3+
log.print()
4+
5+
context("Retries", function()
6+
7+
before(function() end)
8+
after(function() end)
9+
10+
test("create exponentially increasing intervals", function()
11+
local intervals = retries.exponential(5, 0.5)
12+
assert(#intervals == 5)
13+
assert(intervals[1] == 0.5)
14+
assert(intervals[2] == 1.0)
15+
assert(intervals[3] == 2.0)
16+
assert(intervals[4] == 4.0)
17+
assert(intervals[5] == 8.0)
18+
end)
19+
20+
test("create incrementally increasing intervals", function()
21+
local intervals = retries.incremental(5, 0.5)
22+
assert(#intervals == 5)
23+
assert(intervals[1] == 0.5)
24+
assert(intervals[2] == 1.0)
25+
assert(intervals[3] == 1.5)
26+
assert(intervals[4] == 2.0)
27+
assert(intervals[5] == 2.5)
28+
end)
29+
30+
test("create fixed intervals", function()
31+
local intervals = retries.fixed(5, 0.5)
32+
assert(#intervals == 5)
33+
assert(intervals[1] == 0.5)
34+
assert(intervals[2] == 0.5)
35+
assert(intervals[3] == 0.5)
36+
assert(intervals[4] == 0.5)
37+
assert(intervals[5] == 0.5)
38+
end)
39+
40+
test("create no intervals", function()
41+
local intervals = retries.none()
42+
assert(#intervals == 0)
43+
intervals = retries.exponential(0, 0)
44+
assert(#intervals == 0)
45+
intervals = retries.incremental(0, 0)
46+
assert(#intervals == 0)
47+
intervals = retries.fixed(0, 0)
48+
assert(#intervals == 0)
49+
end)
50+
end)
51+
52+

0 commit comments

Comments
 (0)