summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <klishinm@vmware.com>2022-01-11 01:15:49 +0300
committerGitHub <noreply@github.com>2022-01-11 01:15:49 +0300
commit98539b9852f8ff77865ef93c0de975d343ff5b60 (patch)
tree919f0be9e30df416e8d570ac3694fc7a19455aff
parent4a3d92677c6413a570f7c7162cf4012f8137d4ff (diff)
parentfd781441f35070dd63ae5dfe3e8acd5c9d608ee5 (diff)
downloadrabbitmq-server-git-98539b9852f8ff77865ef93c0de975d343ff5b60.tar.gz
Merge pull request #3970 from rabbitmq/gh-3895-bugfix
Fix issue with fsutil
-rw-r--r--deps/rabbit/src/rabbit_disk_monitor.erl39
1 files changed, 5 insertions, 34 deletions
diff --git a/deps/rabbit/src/rabbit_disk_monitor.erl b/deps/rabbit/src/rabbit_disk_monitor.erl
index 28b4cb3eba..93016b112e 100644
--- a/deps/rabbit/src/rabbit_disk_monitor.erl
+++ b/deps/rabbit/src/rabbit_disk_monitor.erl
@@ -252,13 +252,9 @@ get_disk_free(Dir, {win32, _}) ->
_ -> exit(could_not_determine_disk_free)
end;
DriveLetter ->
- case win32_get_disk_free_fsutil(DriveLetter) of
- {ok, Free0} -> Free0;
- error ->
- case win32_get_disk_free_pwsh(DriveLetter) of
- {ok, Free1} -> Free1;
- _ -> exit(could_not_determine_disk_free)
- end
+ case catch win32_get_disk_free_pwsh(DriveLetter) of
+ {ok, Free1} -> Free1;
+ _PwshNotOk -> exit(could_not_determine_disk_free)
end
end.
@@ -278,30 +274,6 @@ win32_get_drive_letter([DriveLetter, $:, $/ | _]) when
win32_get_drive_letter(_) ->
error.
-win32_get_disk_free_fsutil(DriveLetter) when
- (DriveLetter >= $a andalso DriveLetter =< $z) orelse
- (DriveLetter >= $A andalso DriveLetter =< $Z) ->
- % DriveLetter $c
- FsutilCmd = "fsutil.exe volume diskfree " ++ [DriveLetter] ++ ":",
-
- % C:\windows\system32>fsutil volume diskfree c:
- % Total free bytes : 812,733,878,272 (756.9 GB)
- % Total bytes : 1,013,310,287,872 (943.7 GB)
- % Total quota free bytes : 812,733,878,272 (756.9 GB)
- case run_cmd(FsutilCmd) of
- {error, timeout} ->
- error;
- FsutilResult ->
- case string:slice(FsutilResult, 0, 5) of
- "Error" ->
- error;
- "Total" ->
- FirstLine = hd(string:tokens(FsutilResult, "\r\n")),
- {match, [FreeStr]} = re:run(FirstLine, "(\\d+,?)+", [{capture, first, list}]),
- {ok, list_to_integer(lists:flatten(string:tokens(FreeStr, ",")))}
- end
- end.
-
win32_get_disk_free_pwsh(DriveLetter) when
(DriveLetter >= $a andalso DriveLetter =< $z) orelse
(DriveLetter >= $A andalso DriveLetter =< $Z) ->
@@ -310,10 +282,9 @@ win32_get_disk_free_pwsh(DriveLetter) when
case run_cmd(PoshCmd) of
{error, timeout} ->
error;
- PoshResultStr ->
+ PoshResult ->
% Note: remove \r\n
- PoshResult = string:slice(PoshResultStr, 0, length(PoshResultStr) - 2),
- {ok, list_to_integer(PoshResult)}
+ {ok, list_to_integer(string:trim(PoshResult))}
end.
win32_get_disk_free_dir(Dir) ->