33
33
-export ([product_info /0 ,
34
34
product_name /0 ,
35
35
product_version /0 ,
36
+ base_product_name /0 ,
37
+ base_product_version /0 ,
36
38
motd_file /0 ,
37
39
motd /0 ]).
38
40
-export ([log_locations /0 , config_files /0 ]). % % for testing and mgmt-agent
@@ -670,7 +672,7 @@ maybe_print_boot_progress(true, IterationsLeft) ->
670
672
{memory , any ()}].
671
673
672
674
status () ->
673
- Version = product_version (),
675
+ Version = base_product_version (),
674
676
S1 = [{pid , list_to_integer (os :getpid ())},
675
677
% % The timeout value used is twice that of gen_server:call/2.
676
678
{running_applications , rabbit_misc :which_applications ()},
@@ -717,7 +719,16 @@ status() ->
717
719
[]
718
720
end ,
719
721
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 .
721
732
722
733
alarms () ->
723
734
Alarms = rabbit_misc :with_exit_handler (rabbit_misc :const ([]),
@@ -823,9 +834,20 @@ start(normal, []) ->
823
834
try
824
835
run_prelaunch_second_phase (),
825
836
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 ,
829
851
log_motd (),
830
852
{ok , SupPid } = rabbit_sup :start_link (),
831
853
@@ -1274,17 +1296,25 @@ validate_msg_store_io_batch_size_and_credit_disc_bound(CreditDiscBound,
1274
1296
- spec product_name () -> string ().
1275
1297
1276
1298
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 .
1279
1303
1280
1304
- spec product_version () -> string ().
1281
1305
1282
1306
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 .
1285
1311
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 ()}.
1288
1318
1289
1319
product_info () ->
1290
1320
PTKey = {? MODULE , product },
@@ -1294,37 +1324,54 @@ product_info() ->
1294
1324
persistent_term :get (PTKey )
1295
1325
catch
1296
1326
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 }
1325
1338
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
1328
1375
end .
1329
1376
1330
1377
string_from_app_env (Key , Default ) ->
@@ -1359,21 +1406,18 @@ motd_file() ->
1359
1406
% % 1. The environment variable;
1360
1407
% % 2. The `motd_file` configuration parameter;
1361
1408
% % 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 )
1377
1421
end .
1378
1422
1379
1423
motd () ->
0 commit comments