Skip to content

Commit 651974c

Browse files
committed
Make spillway OTP 27 compatible
1 parent bd4440c commit 651974c

File tree

2 files changed

+51
-6
lines changed

2 files changed

+51
-6
lines changed

.github/workflows/erlang.yml

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ env:
77

88
jobs:
99

10-
build:
11-
12-
runs-on: ubuntu-20.04
10+
OTP25:
11+
runs-on: ubuntu-24.04
1312

1413
strategy:
1514
matrix:
@@ -24,12 +23,44 @@ jobs:
2423
otp-version: ${{matrix.otp}}
2524
rebar3-version: ${{matrix.rebar}}
2625
- name: Restore _build
27-
uses: actions/cache@v2
26+
uses: actions/cache@v4
27+
with:
28+
path: _build
29+
key: _build-cache-for-os-${{runner.os}}-otp-${{steps.setup-beam.outputs.otp-version}}-rebar3-${{steps.setup-beam.outputs.rebar3-version}}-hash-${{hashFiles('rebar.lock')}}
30+
- name: Restore rebar3's cache
31+
uses: actions/cache@v4
32+
with:
33+
path: ~/.cache/rebar3
34+
key: rebar3-cache-for-os-${{runner.os}}-otp-${{steps.setup-beam.outputs.otp-version}}-rebar3-${{steps.setup-beam.outputs.rebar3-version}}-hash-${{hashFiles('rebar.lock')}}
35+
- name: Compile
36+
run: rebar3 compile
37+
- name: Format check
38+
run: rebar3 format --verify
39+
- name: Run tests and verifications
40+
run: rebar3 test
41+
42+
OTP27:
43+
runs-on: ubuntu-24.04
44+
45+
strategy:
46+
matrix:
47+
otp: ['27.3.4']
48+
rebar: ['3.24.0']
49+
50+
steps:
51+
- uses: actions/checkout@v2
52+
- uses: erlef/setup-beam@v1
53+
id: setup-beam
54+
with:
55+
otp-version: ${{matrix.otp}}
56+
rebar3-version: ${{matrix.rebar}}
57+
- name: Restore _build
58+
uses: actions/cache@v4
2859
with:
2960
path: _build
3061
key: _build-cache-for-os-${{runner.os}}-otp-${{steps.setup-beam.outputs.otp-version}}-rebar3-${{steps.setup-beam.outputs.rebar3-version}}-hash-${{hashFiles('rebar.lock')}}
3162
- name: Restore rebar3's cache
32-
uses: actions/cache@v2
63+
uses: actions/cache@v4
3364
with:
3465
path: ~/.cache/rebar3
3566
key: rebar3-cache-for-os-${{runner.os}}-otp-${{steps.setup-beam.outputs.otp-version}}-rebar3-${{steps.setup-beam.outputs.rebar3-version}}-hash-${{hashFiles('rebar.lock')}}

src/spillway_srv.erl

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,21 @@ enter(Name, Size, Limit) when Size > 0 ->
7070
%% The counter must already exist.
7171
-spec leave(term(), non_neg_integer()) -> non_neg_integer().
7272
leave(Name, Size) ->
73-
ets:update_counter(?TID, Name, {#counter.value, -Size, 0, 0}).
73+
Counter =
74+
case ets:update_counter(?TID, Name, {#counter.value, -Size, 0, 0}) of
75+
[] ->
76+
0;
77+
[Result | _] ->
78+
Result;
79+
Result ->
80+
Result
81+
end,
82+
case Counter >= 0 of
83+
true ->
84+
Counter;
85+
false ->
86+
0
87+
end.
7488

7589
%% Return the current counter value.
7690
-spec cur(term()) -> non_neg_integer().

0 commit comments

Comments
 (0)