diff options
| -rw-r--r-- | include/rabbit.hrl | 1 | ||||
| -rw-r--r-- | packaging/RPMS/Fedora/rabbitmq-server.spec | 4 | ||||
| -rw-r--r-- | packaging/debs/Debian/debian/control | 2 | ||||
| -rwxr-xr-x | scripts/rabbitmq-server | 2 | ||||
| -rw-r--r-- | scripts/rabbitmq-server.bat | 1 | ||||
| -rw-r--r-- | src/rabbit.erl | 29 | ||||
| -rw-r--r-- | src/rabbit_misc.erl | 16 |
7 files changed, 37 insertions, 18 deletions
diff --git a/include/rabbit.hrl b/include/rabbit.hrl index a4abc1ffb2..145f6104ae 100644 --- a/include/rabbit.hrl +++ b/include/rabbit.hrl @@ -176,6 +176,7 @@ -define(COPYRIGHT_MESSAGE, "Copyright (C) 2007-2010 LShift Ltd., Cohesive Financial Technologies LLC., and Rabbit Technologies Ltd."). -define(INFORMATION_MESSAGE, "Licensed under the MPL. See http://www.rabbitmq.com/"). +-define(ERTS_MINIMUM, "5.6.3"). -define(MAX_WAIT, 16#ffffffff). diff --git a/packaging/RPMS/Fedora/rabbitmq-server.spec b/packaging/RPMS/Fedora/rabbitmq-server.spec index b052d889b3..6926261f79 100644 --- a/packaging/RPMS/Fedora/rabbitmq-server.spec +++ b/packaging/RPMS/Fedora/rabbitmq-server.spec @@ -13,8 +13,8 @@ Source4: rabbitmq-asroot-script-wrapper Source5: rabbitmq-server.ocf URL: http://www.rabbitmq.com/ BuildArch: noarch -BuildRequires: erlang, python-simplejson, xmlto, libxslt -Requires: erlang, logrotate +BuildRequires: erlang >= R12B-3, python-simplejson, xmlto, libxslt +Requires: erlang >= R12B-3, logrotate BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%{_arch}-root Summary: The RabbitMQ server Requires(post): %%REQUIRES%% diff --git a/packaging/debs/Debian/debian/control b/packaging/debs/Debian/debian/control index 479c356829..a44f49a0e0 100644 --- a/packaging/debs/Debian/debian/control +++ b/packaging/debs/Debian/debian/control @@ -7,7 +7,7 @@ Standards-Version: 3.8.0 Package: rabbitmq-server Architecture: all -Depends: erlang-base | erlang-base-hipe, erlang-ssl | erlang-nox (<< 1:13.b-dfsg1-1), erlang-os-mon | erlang-nox (<< 1:13.b-dfsg1-1), erlang-mnesia | erlang-nox (<< 1:13.b-dfsg1-1), adduser, logrotate, ${misc:Depends} +Depends: erlang-base (>= 1:12.b.3) | erlang-base-hipe (>= 1:12.b.3), erlang-ssl | erlang-nox (<< 1:13.b-dfsg1-1), erlang-os-mon | erlang-nox (<< 1:13.b-dfsg1-1), erlang-mnesia | erlang-nox (<< 1:13.b-dfsg1-1), adduser, logrotate, ${misc:Depends} Description: An AMQP server written in Erlang RabbitMQ is an implementation of AMQP, the emerging standard for high performance enterprise messaging. The RabbitMQ server is a robust and diff --git a/scripts/rabbitmq-server b/scripts/rabbitmq-server index 638498c1e2..ccdfc40160 100755 --- a/scripts/rabbitmq-server +++ b/scripts/rabbitmq-server @@ -31,7 +31,7 @@ ## NODENAME=rabbit -SERVER_ERL_ARGS="+K true +A30 \ +SERVER_ERL_ARGS="+K true +A30 +P 1048576 \ -kernel inet_default_listen_options [{nodelay,true}] \ -kernel inet_default_connect_options [{nodelay,true}]" CLUSTER_CONFIG_FILE=/etc/rabbitmq/rabbitmq_cluster.config diff --git a/scripts/rabbitmq-server.bat b/scripts/rabbitmq-server.bat index 28eb8ebb8d..57fe1328ce 100644 --- a/scripts/rabbitmq-server.bat +++ b/scripts/rabbitmq-server.bat @@ -145,6 +145,7 @@ if not "!RABBITMQ_NODE_IP_ADDRESS!"=="" ( -s rabbit ^
+W w ^
+A30 ^
++P 1048576 ^
-kernel inet_default_listen_options "[{nodelay, true}]" ^
-kernel inet_default_connect_options "[{nodelay, true}]" ^
!RABBITMQ_LISTEN_ARG! ^
diff --git a/src/rabbit.erl b/src/rabbit.erl index 6da8d99114..7ca5b07b4b 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -241,14 +241,18 @@ rotate_logs(BinarySuffix) -> %%-------------------------------------------------------------------- start(normal, []) -> - {ok, SupPid} = rabbit_sup:start_link(), + case erts_version_check() of + ok -> + {ok, SupPid} = rabbit_sup:start_link(), - print_banner(), - [ok = run_boot_step(Step) || Step <- boot_steps()], - io:format("~nbroker running~n"), - - {ok, SupPid}. + print_banner(), + [ok = run_boot_step(Step) || Step <- boot_steps()], + io:format("~nbroker running~n"), + {ok, SupPid}; + Error -> + Error + end. stop(_State) -> terminated_ok = error_logger:delete_report_handler(rabbit_error_logger), @@ -261,6 +265,14 @@ stop(_State) -> %%--------------------------------------------------------------------------- +erts_version_check() -> + FoundVer = erlang:system_info(version), + case rabbit_misc:version_compare(?ERTS_MINIMUM, FoundVer, lte) of + true -> ok; + false -> {error, {erlang_version_too_old, + {found, FoundVer}, {required, ?ERTS_MINIMUM}}} + end. + boot_error(Format, Args) -> io:format("BOOT ERROR: " ++ Format, Args), error_logger:error_msg(Format, Args), @@ -410,8 +422,9 @@ print_banner() -> {"cookie hash", rabbit_misc:cookie_hash()}, {"log", log_location(kernel)}, {"sasl log", log_location(sasl)}, - {"database dir", rabbit_mnesia:dir()}], - DescrLen = lists:max([length(K) || {K, _V} <- Settings]), + {"database dir", rabbit_mnesia:dir()}, + {"erlang version", erlang:system_info(version)}], + DescrLen = 1 + lists:max([length(K) || {K, _V} <- Settings]), Format = "~-" ++ integer_to_list(DescrLen) ++ "s: ~s~n", lists:foreach(fun ({K, V}) -> io:format(Format, [K, V]) end, Settings), io:nl(). diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index 2c1808465f..59ba277610 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -598,24 +598,28 @@ version_compare(A, B, gte) -> version_compare(A, B, Result) -> Result =:= version_compare(A, B). -version_compare([], []) -> +version_compare(A, A) -> eq; -version_compare([], _ ) -> +version_compare([], [$0 | B]) -> + version_compare([], dropdot(B)); +version_compare([], _) -> lt; %% 2.3 < 2.3.1 -version_compare(_ , []) -> +version_compare([$0 | A], []) -> + version_compare(dropdot(A), []); +version_compare(_, []) -> gt; %% 2.3.1 > 2.3 version_compare(A, B) -> {AStr, ATl} = lists:splitwith(fun (X) -> X =/= $. end, A), {BStr, BTl} = lists:splitwith(fun (X) -> X =/= $. end, B), ANum = list_to_integer(AStr), BNum = list_to_integer(BStr), - if ANum =:= BNum -> ATl1 = lists:dropwhile(fun (X) -> X =:= $. end, ATl), - BTl1 = lists:dropwhile(fun (X) -> X =:= $. end, BTl), - version_compare(ATl1, BTl1); + if ANum =:= BNum -> version_compare(dropdot(ATl), dropdot(BTl)); ANum < BNum -> lt; ANum > BNum -> gt end. +dropdot(A) -> lists:dropwhile(fun (X) -> X =:= $. end, A). + recursive_delete(Files) -> lists:foldl(fun (Path, ok ) -> recursive_delete1(Path); (_Path, {error, _Err} = Error) -> Error |
