Skip to content

Commit 12d73ad

Browse files
Merge pull request #1196 from rabbitmq/rabbitmq-server-1194
Support integers in memory relative free disk space limits
2 parents e5ece87 + 1b51bb0 commit 12d73ad

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

src/rabbit_disk_monitor.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575

7676
%%----------------------------------------------------------------------------
7777

78-
-type disk_free_limit() :: (integer() | string() | {'mem_relative', float()}).
78+
-type disk_free_limit() :: (integer() | string() | {'mem_relative', float() | integer()}).
7979
-spec start_link(disk_free_limit()) -> rabbit_types:ok_pid_or_error().
8080
-spec get_disk_free_limit() -> integer().
8181
-spec set_disk_free_limit(disk_free_limit()) -> 'ok'.
@@ -237,7 +237,7 @@ parse_free_win32(CommandResult) ->
237237
list_to_integer(lists:reverse(Free)).
238238

239239
interpret_limit({mem_relative, Relative})
240-
when is_float(Relative) ->
240+
when is_number(Relative) ->
241241
round(Relative * vm_memory_monitor:get_total_memory());
242242
interpret_limit(Absolute) ->
243243
case rabbit_resource_monitor_misc:parse_information_unit(Absolute) of

test/unit_inbroker_parallel_SUITE.erl

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1521,15 +1521,26 @@ set_disk_free_limit_command1(_Config) ->
15211521
ok = control_action(set_disk_free_limit,
15221522
["2000kiB"]),
15231523
2048000 = rabbit_disk_monitor:get_disk_free_limit(),
1524+
1525+
%% Use an integer
15241526
ok = control_action(set_disk_free_limit,
1525-
["mem_relative", "1.1"]),
1526-
ExpectedLimit = 1.1 * vm_memory_monitor:get_total_memory(),
1527-
% Total memory is unstable, so checking order
1528-
true = ExpectedLimit/rabbit_disk_monitor:get_disk_free_limit() < 1.2,
1529-
true = ExpectedLimit/rabbit_disk_monitor:get_disk_free_limit() > 0.98,
1527+
["mem_relative", "1"]),
1528+
check_limit(1),
1529+
1530+
%% Use a float
1531+
ok = control_action(set_disk_free_limit,
1532+
["mem_relative", "1.5"]),
1533+
check_limit(1.5),
1534+
15301535
ok = control_action(set_disk_free_limit, ["50MB"]),
15311536
passed.
15321537

1538+
check_limit(Limit) ->
1539+
ExpectedLimit = Limit * vm_memory_monitor:get_total_memory(),
1540+
% Total memory is unstable, so checking order
1541+
true = ExpectedLimit/rabbit_disk_monitor:get_disk_free_limit() < 1.2,
1542+
true = ExpectedLimit/rabbit_disk_monitor:get_disk_free_limit() > 0.98.
1543+
15331544
%% ---------------------------------------------------------------------------
15341545
%% rabbitmqctl helpers.
15351546
%% ---------------------------------------------------------------------------

0 commit comments

Comments
 (0)