Skip to content

Commit 9bfd791

Browse files
authored
Merge pull request #2335 from rabbitmq/backport-product_info-changes
Backport product_info changes
2 parents fb45340 + df25461 commit 9bfd791

File tree

1 file changed

+100
-56
lines changed

1 file changed

+100
-56
lines changed

src/rabbit.erl

Lines changed: 100 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
-export([product_info/0,
3434
product_name/0,
3535
product_version/0,
36+
base_product_name/0,
37+
base_product_version/0,
3638
motd_file/0,
3739
motd/0]).
3840
-export([log_locations/0, config_files/0]). %% for testing and mgmt-agent
@@ -670,7 +672,7 @@ maybe_print_boot_progress(true, IterationsLeft) ->
670672
{memory, any()}].
671673

672674
status() ->
673-
Version = product_version(),
675+
Version = base_product_version(),
674676
S1 = [{pid, list_to_integer(os:getpid())},
675677
%% The timeout value used is twice that of gen_server:call/2.
676678
{running_applications, rabbit_misc:which_applications()},
@@ -717,7 +719,16 @@ status() ->
717719
[]
718720
end,
719721
S7 = [{totals, Totals}],
720-
S1 ++ S2 ++ S3 ++ S4 ++ S5 ++ S6 ++ S7.
722+
S8 = lists:filter(
723+
fun
724+
({product_base_name, _}) -> true;
725+
({product_base_version, _}) -> true;
726+
({product_name, _}) -> true;
727+
({product_version, _}) -> true;
728+
(_) -> false
729+
end,
730+
maps:to_list(product_info())),
731+
S1 ++ S2 ++ S3 ++ S4 ++ S5 ++ S6 ++ S7 ++ S8.
721732

722733
alarms() ->
723734
Alarms = rabbit_misc:with_exit_handler(rabbit_misc:const([]),
@@ -823,9 +834,20 @@ start(normal, []) ->
823834
try
824835
run_prelaunch_second_phase(),
825836

826-
rabbit_log:info("~n Starting ~s ~s on Erlang ~s~n ~s~n ~s~n",
827-
[product_name(), product_version(), rabbit_misc:otp_release(),
828-
?COPYRIGHT_MESSAGE, ?INFORMATION_MESSAGE]),
837+
ProductInfo = product_info(),
838+
case ProductInfo of
839+
#{product_overridden := true,
840+
product_base_name := BaseName,
841+
product_base_version := BaseVersion} ->
842+
rabbit_log:info("~n Starting ~s ~s on Erlang ~s~n Based on ~s ~s~n ~s~n ~s~n",
843+
[product_name(), product_version(), rabbit_misc:otp_release(),
844+
BaseName, BaseVersion,
845+
?COPYRIGHT_MESSAGE, ?INFORMATION_MESSAGE]);
846+
_ ->
847+
rabbit_log:info("~n Starting ~s ~s on Erlang ~s~n ~s~n ~s~n",
848+
[product_name(), product_version(), rabbit_misc:otp_release(),
849+
?COPYRIGHT_MESSAGE, ?INFORMATION_MESSAGE])
850+
end,
829851
log_motd(),
830852
{ok, SupPid} = rabbit_sup:start_link(),
831853

@@ -1274,17 +1296,25 @@ validate_msg_store_io_batch_size_and_credit_disc_bound(CreditDiscBound,
12741296
-spec product_name() -> string().
12751297

12761298
product_name() ->
1277-
#{name := ProductName} = product_info(),
1278-
ProductName.
1299+
case product_info() of
1300+
#{product_name := ProductName} -> ProductName;
1301+
#{product_base_name := BaseName} -> BaseName
1302+
end.
12791303

12801304
-spec product_version() -> string().
12811305

12821306
product_version() ->
1283-
#{version := ProductVersion} = product_info(),
1284-
ProductVersion.
1307+
case product_info() of
1308+
#{product_version := ProductVersion} -> ProductVersion;
1309+
#{product_base_version := BaseVersion} -> BaseVersion
1310+
end.
12851311

1286-
-spec product_info() -> #{name := string(),
1287-
version := string()}.
1312+
-spec product_info() -> #{product_base_name := string(),
1313+
product_base_version := string(),
1314+
product_overridden := boolean(),
1315+
product_name => string(),
1316+
product_version => string(),
1317+
otp_release := string()}.
12881318

12891319
product_info() ->
12901320
PTKey = {?MODULE, product},
@@ -1294,37 +1324,54 @@ product_info() ->
12941324
persistent_term:get(PTKey)
12951325
catch
12961326
error:badarg ->
1297-
NameFromEnv = os:getenv("RABBITMQ_PRODUCT_NAME"),
1298-
VersionFromEnv = os:getenv("RABBITMQ_PRODUCT_VERSION"),
1299-
1300-
Info =
1301-
if
1302-
NameFromEnv =/= false andalso
1303-
VersionFromEnv =/= false ->
1304-
#{name => NameFromEnv,
1305-
version => VersionFromEnv};
1306-
true ->
1307-
Name = case NameFromEnv of
1308-
false ->
1309-
string_from_app_env(
1310-
product_name,
1311-
base_product_name());
1312-
_ ->
1313-
NameFromEnv
1314-
end,
1315-
Version = case VersionFromEnv of
1316-
false ->
1317-
string_from_app_env(
1318-
product_version,
1319-
base_product_version());
1320-
_ ->
1321-
VersionFromEnv
1322-
end,
1323-
#{name => Name,
1324-
version => Version}
1327+
BaseName = base_product_name(),
1328+
BaseVersion = base_product_version(),
1329+
Info0 = #{product_base_name => BaseName,
1330+
product_base_version => BaseVersion,
1331+
otp_release => rabbit_misc:otp_release()},
1332+
1333+
{NameFromEnv, VersionFromEnv} =
1334+
case rabbit_env:get_context() of
1335+
#{product_name := NFE,
1336+
product_version := VFE} -> {NFE, VFE};
1337+
_ -> {undefined, undefined}
13251338
end,
1326-
persistent_term:put(PTKey, Info),
1327-
Info
1339+
1340+
Info1 = case NameFromEnv of
1341+
undefined ->
1342+
NameFromApp = string_from_app_env(
1343+
product_name,
1344+
undefined),
1345+
case NameFromApp of
1346+
undefined ->
1347+
Info0;
1348+
_ ->
1349+
Info0#{product_name => NameFromApp,
1350+
product_overridden => true}
1351+
end;
1352+
_ ->
1353+
Info0#{product_name => NameFromEnv,
1354+
product_overridden => true}
1355+
end,
1356+
1357+
Info2 = case VersionFromEnv of
1358+
undefined ->
1359+
VersionFromApp = string_from_app_env(
1360+
product_version,
1361+
undefined),
1362+
case VersionFromApp of
1363+
undefined ->
1364+
Info1;
1365+
_ ->
1366+
Info1#{product_version => VersionFromApp,
1367+
product_overridden => true}
1368+
end;
1369+
_ ->
1370+
Info1#{product_version => VersionFromEnv,
1371+
product_overridden => true}
1372+
end,
1373+
persistent_term:put(PTKey, Info2),
1374+
Info2
13281375
end.
13291376

13301377
string_from_app_env(Key, Default) ->
@@ -1359,21 +1406,18 @@ motd_file() ->
13591406
%% 1. The environment variable;
13601407
%% 2. The `motd_file` configuration parameter;
13611408
%% 3. The default value.
1362-
case os:getenv("RABBITMQ_MOTD_FILE") of
1363-
false ->
1364-
string_from_app_env(motd_file, default_motd_file());
1365-
Val ->
1366-
Val
1367-
end.
1368-
1369-
default_motd_file() ->
1370-
EnabledPluginsFile = rabbit_plugins:enabled_plugins_file(),
1371-
ConfigDir = filename:dirname(EnabledPluginsFile),
1372-
case os:type() of
1373-
{unix, _} ->
1374-
filename:join(ConfigDir, "motd");
1375-
{win32, _} ->
1376-
filename:join(ConfigDir, "motd.txt")
1409+
Context = rabbit_env:get_context(),
1410+
case Context of
1411+
#{motd_file := File,
1412+
var_origins := #{motd_file := environment}}
1413+
when File =/= undefined ->
1414+
File;
1415+
_ ->
1416+
Default = case Context of
1417+
#{motd_file := File} -> File;
1418+
_ -> undefined
1419+
end,
1420+
string_from_app_env(motd_file, Default)
13771421
end.
13781422

13791423
motd() ->

0 commit comments

Comments
 (0)