diff options
Diffstat (limited to 'lib/mnesia')
47 files changed, 147 insertions, 119 deletions
| diff --git a/lib/mnesia/doc/src/Makefile b/lib/mnesia/doc/src/Makefile index 82fcf66256..da52c69f00 100644 --- a/lib/mnesia/doc/src/Makefile +++ b/lib/mnesia/doc/src/Makefile @@ -1,7 +1,7 @@  #  # %CopyrightBegin%  # -# Copyright Ericsson AB 1997-2017. All Rights Reserved. +# Copyright Ericsson AB 1997-2018. All Rights Reserved.  #  # Licensed under the Apache License, Version 2.0 (the "License");  # you may not use this file except in compliance with the License. @@ -49,16 +49,18 @@ XML_PART_FILES = \  XML_CHAPTER_FILES = \  	Mnesia_chap1.xml \  	Mnesia_overview.xml \ +	Mnesia_chap8.xml \ +	notes.xml + +XML_CHAPTER_GEN_FILES = \  	Mnesia_chap2.xml \  	Mnesia_chap3.xml \  	Mnesia_chap4.xml \  	Mnesia_chap5.xml \  	Mnesia_chap7.xml \ -	Mnesia_chap8.xml \  	Mnesia_App_A.xml \  	Mnesia_App_B.xml \ -	Mnesia_App_C.xml \ -	notes.xml +	Mnesia_App_C.xml  BOOK_FILES = book.xml @@ -66,6 +68,8 @@ XML_FILES = \  	$(BOOK_FILES) $(XML_CHAPTER_FILES) \  	$(XML_PART_FILES) $(XML_REF3_FILES) $(XML_APPLICATION_FILES) +XML_GEN_FILES = $(XML_CHAPTER_GEN_FILES:%=$(XMLDIR)/%) +  GIF_FILES = \  	company.gif diff --git a/lib/mnesia/doc/src/Mnesia_chap2.xmlsrc b/lib/mnesia/doc/src/Mnesia_chap2.xmlsrc index 914e0e509c..8135e14301 100644 --- a/lib/mnesia/doc/src/Mnesia_chap2.xmlsrc +++ b/lib/mnesia/doc/src/Mnesia_chap2.xmlsrc @@ -4,7 +4,7 @@  <chapter>    <header>      <copyright> -      <year>1997</year><year>2016</year> +      <year>1997</year><year>2018</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> diff --git a/lib/mnesia/doc/src/Mnesia_chap5.xmlsrc b/lib/mnesia/doc/src/Mnesia_chap5.xmlsrc index 62759c624b..481e6651e6 100644 --- a/lib/mnesia/doc/src/Mnesia_chap5.xmlsrc +++ b/lib/mnesia/doc/src/Mnesia_chap5.xmlsrc @@ -4,7 +4,7 @@  <chapter>    <header>      <copyright> -      <year>1997</year><year>2016</year> +      <year>1997</year><year>2018</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -226,8 +226,10 @@          not known beforehand, all fragments are searched for          matching records.</p>        <p>Notice that in <c>ordered_set</c> tables, the records -        are ordered per fragment, and the the order is undefined in -        results returned by <c>select</c> and <c>match_object</c>.</p> +        are ordered per fragment, and the order is undefined in +        results returned by <c>select</c> and <c>match_object</c>, +        as well as <c>first</c>, <c>next</c>, <c>prev</c> and +        <c>last</c>.</p>        <p>The following code illustrates how a <c>Mnesia</c> table is          converted to be a fragmented table and how more fragments          are added later:</p> diff --git a/lib/mnesia/doc/src/company.erl b/lib/mnesia/doc/src/company.erl index 5a3b122394..fc04aa77bf 100644 --- a/lib/mnesia/doc/src/company.erl +++ b/lib/mnesia/doc/src/company.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1999-2016. All Rights Reserved. +%% Copyright Ericsson AB 1999-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/doc/src/company_o.erl b/lib/mnesia/doc/src/company_o.erl index 650b6cdeca..b4b3638596 100644 --- a/lib/mnesia/doc/src/company_o.erl +++ b/lib/mnesia/doc/src/company_o.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1999-2016. All Rights Reserved. +%% Copyright Ericsson AB 1999-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/doc/src/notes.xml b/lib/mnesia/doc/src/notes.xml index ba94e913f5..7134e3d1e4 100644 --- a/lib/mnesia/doc/src/notes.xml +++ b/lib/mnesia/doc/src/notes.xml @@ -4,7 +4,7 @@  <chapter>    <header>      <copyright> -      <year>1996</year><year>2017</year> +      <year>1996</year><year>2018</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -39,7 +39,22 @@      thus constitutes one section in this document. The title of each      section is the version number of Mnesia.</p> -  <section><title>Mnesia 4.15.3</title> +  <section><title>Mnesia 4.15.4</title> + +    <section><title>Improvements and New Features</title> +      <list> +        <item> +	    <p> Calls to <c>erlang:get_stacktrace()</c> are removed. +	    </p> +          <p> +	    Own Id: OTP-14861</p> +        </item> +      </list> +    </section> + +</section> + +<section><title>Mnesia 4.15.3</title>      <section><title>Fixed Bugs and Malfunctions</title>        <list> diff --git a/lib/mnesia/src/mnesia.erl b/lib/mnesia/src/mnesia.erl index 1842769778..e298904e2a 100644 --- a/lib/mnesia/src/mnesia.erl +++ b/lib/mnesia/src/mnesia.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2017. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -177,8 +177,8 @@  %% Local function in order to avoid external function call  val(Var) -> -    case ?catch_val(Var) of -	{'EXIT', _} -> mnesia_lib:other_val(Var); +    case ?catch_val_and_stack(Var) of +	{'EXIT', Stacktrace} -> mnesia_lib:other_val(Var, Stacktrace);  	Value -> Value      end. @@ -2682,7 +2682,7 @@ del_table_index(Tab, Ix) ->  -spec transform_table(Tab::table(), Fun, [Attr]) -> t_result(ok) when        Attr :: atom(), -      Fun:: fun((Record::tuple()) -> Transformed::tuple()). +      Fun:: fun((Record::tuple()) -> Transformed::tuple()) | ignore.  transform_table(Tab, Fun, NewA) ->      try val({Tab, record_name}) of  	OldRN -> mnesia_schema:transform_table(Tab, Fun, NewA, OldRN) @@ -2693,7 +2693,7 @@ transform_table(Tab, Fun, NewA) ->  -spec transform_table(Tab::table(), Fun, [Attr], RecName) -> t_result(ok) when        RecName :: atom(),        Attr :: atom(), -      Fun:: fun((Record::tuple()) -> Transformed::tuple()). +      Fun:: fun((Record::tuple()) -> Transformed::tuple()) | ignore.  transform_table(Tab, Fun, NewA, NewRN) ->      mnesia_schema:transform_table(Tab, Fun, NewA, NewRN). diff --git a/lib/mnesia/src/mnesia.hrl b/lib/mnesia/src/mnesia.hrl index da7e662288..fe48a6fe3d 100644 --- a/lib/mnesia/src/mnesia.hrl +++ b/lib/mnesia/src/mnesia.hrl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%   %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -47,6 +47,10 @@  -define(catch_val(Var), (try ?ets_lookup_element(mnesia_gvar, Var, 2)  			 catch error:_ -> {'EXIT', {badarg, []}} end)). +-define(catch_val_and_stack(Var), +        (try ?ets_lookup_element(mnesia_gvar, Var, 2) +         catch error:_:_Stacktrace -> {'EXIT', _Stacktrace} end)). +  %% It's important that counter is first, since we compare tid's  -record(tid, diff --git a/lib/mnesia/src/mnesia_bup.erl b/lib/mnesia/src/mnesia_bup.erl index 34f16f178b..e57fc5199d 100644 --- a/lib/mnesia/src/mnesia_bup.erl +++ b/lib/mnesia/src/mnesia_bup.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -90,9 +90,9 @@ iterate(Mod, Fun, Opaque, Acc) ->  	    catch throw:Err ->  		    close_read(R2),  		    Err; -		  _:Reason -> +		  _:Reason:Stacktrace ->  		    close_read(R2), -		    {error, {Reason, erlang:get_stacktrace()}} +		    {error, {Reason, Stacktrace}}  	    end      catch throw:{error,_} = Err ->  	    Err @@ -198,9 +198,9 @@ do_read_schema_section(R) ->      try  	{R3, RawSchema} = safe_apply(R2, read, [R2#restore.bup_data]),  	do_read_schema_section(R3, verify_header(RawSchema), []) -    catch T:E -> +    catch T:E:S ->  	    close_read(R2), -	    erlang:raise(T,E,erlang:get_stacktrace()) +	    erlang:raise(T,E,S)      end.  do_read_schema_section(R, {ok, B, C, []}, Acc) -> diff --git a/lib/mnesia/src/mnesia_checkpoint.erl b/lib/mnesia/src/mnesia_checkpoint.erl index 8112378ffd..3273d3d27e 100644 --- a/lib/mnesia/src/mnesia_checkpoint.erl +++ b/lib/mnesia/src/mnesia_checkpoint.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1996-2017 +%% Copyright Ericsson AB 1996-2018  %%   %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -1269,9 +1269,9 @@ system_code_change(Cp, _Module, _OldVsn, _Extra) ->  %%%%%%%%%%%%%%%%%%%%%%%%%% +%% Local function in order to avoid external function call  val(Var) -> -    case ?catch_val(Var) of -	{'EXIT', _} -> mnesia_lib:other_val(Var); -	_VaLuE_ -> _VaLuE_ +    case ?catch_val_and_stack(Var) of +	{'EXIT', Stacktrace} -> mnesia_lib:other_val(Var, Stacktrace); +	Value -> Value      end. - diff --git a/lib/mnesia/src/mnesia_controller.erl b/lib/mnesia/src/mnesia_controller.erl index 77013489b3..f81ba783f2 100644 --- a/lib/mnesia/src/mnesia_controller.erl +++ b/lib/mnesia/src/mnesia_controller.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2017. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -185,9 +185,10 @@ max_loaders() ->  		      worker_res  		     }). +%% Local function in order to avoid external function call  val(Var) -> -    case ?catch_val(Var) of -	{'EXIT', _} -> mnesia_lib:other_val(Var); +    case ?catch_val_and_stack(Var) of +	{'EXIT', Stacktrace} -> mnesia_lib:other_val(Var, Stacktrace);  	Value -> Value      end. diff --git a/lib/mnesia/src/mnesia_dumper.erl b/lib/mnesia/src/mnesia_dumper.erl index f0ed7aef4a..a2880d6cf4 100644 --- a/lib/mnesia/src/mnesia_dumper.erl +++ b/lib/mnesia/src/mnesia_dumper.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -191,8 +191,7 @@ do_perform_dump(Cont, InPlace, InitBy, Regulator, OldVersion) ->  	    try insert_recs(Recs, InPlace, InitBy, Regulator, OldVersion) of  		Version ->  		    do_perform_dump(C2, InPlace, InitBy, Regulator, Version) -	    catch _:R when R =/= fatal -> -		    ST = erlang:get_stacktrace(), +	    catch _:R:ST when R =/= fatal ->  		    Reason = {"Transaction log dump error: ~tp~n", [{R, ST}]},  		    close_files(InPlace, {error, Reason}, InitBy),  		    exit(Reason) @@ -325,8 +324,7 @@ perform_update(Tid, SchemaOps, _DumperMode, _UseDir) ->  	 ?eval_debug_fun({?MODULE, post_dump}, [InitBy]),  	 close_files(InPlace, ok, InitBy),  	 ok -    catch _:Reason when Reason =/= fatal -> -	    ST = erlang:get_stacktrace(), +    catch _:Reason:ST when Reason =/= fatal ->  	    Error = {error, {"Schema update error", {Reason, ST}}},  	    close_files(InPlace, Error, InitBy),              fatal("Schema update error ~tp ~tp", [{Reason,ST}, SchemaOps]) @@ -1471,8 +1469,9 @@ regulate(RegulatorPid) ->  	{regulated, RegulatorPid} -> ok      end. +%% Local function in order to avoid external function call  val(Var) -> -    case ?catch_val(Var) of -	{'EXIT', _} -> mnesia_lib:other_val(Var); +    case ?catch_val_and_stack(Var) of +	{'EXIT', Stacktrace} -> mnesia_lib:other_val(Var, Stacktrace);  	Value -> Value      end. diff --git a/lib/mnesia/src/mnesia_frag.erl b/lib/mnesia/src/mnesia_frag.erl index c39f30e140..8f7dd321b0 100644 --- a/lib/mnesia/src/mnesia_frag.erl +++ b/lib/mnesia/src/mnesia_frag.erl @@ -1,7 +1,7 @@  %%%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1998-2016. All Rights Reserved. +%% Copyright Ericsson AB 1998-2018. All Rights Reserved.  %%   %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -1157,9 +1157,10 @@ remove_node(Node, Cs) ->  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% Helpers +%% Local function in order to avoid external function call  val(Var) -> -    case ?catch_val(Var) of -	{'EXIT', _} -> mnesia_lib:other_val(Var); +    case ?catch_val_and_stack(Var) of +	{'EXIT', Stacktrace} -> mnesia_lib:other_val(Var, Stacktrace);  	Value -> Value      end. diff --git a/lib/mnesia/src/mnesia_index.erl b/lib/mnesia/src/mnesia_index.erl index d121bd01e9..917ada65df 100644 --- a/lib/mnesia/src/mnesia_index.erl +++ b/lib/mnesia/src/mnesia_index.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%   %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/src/mnesia_late_loader.erl b/lib/mnesia/src/mnesia_late_loader.erl index e4f8dcf2b9..45afda6e4b 100644 --- a/lib/mnesia/src/mnesia_late_loader.erl +++ b/lib/mnesia/src/mnesia_late_loader.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1998-2016. All Rights Reserved. +%% Copyright Ericsson AB 1998-2018. All Rights Reserved.  %%   %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/src/mnesia_lib.erl b/lib/mnesia/src/mnesia_lib.erl index 53fdd76de8..a884b8e086 100644 --- a/lib/mnesia/src/mnesia_lib.erl +++ b/lib/mnesia/src/mnesia_lib.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -116,7 +116,7 @@  	 lock_table/1,  	 mkcore/1,  	 not_active_here/1, -         other_val/1, +         other_val/2,           overload_read/0,           overload_read/1,           overload_set/2, @@ -435,8 +435,8 @@ validate_record(Tab, Obj) ->  %%  val(Var) -> -    case ?catch_val(Var) of -	{'EXIT', _} -> other_val(Var); +    case ?catch_val_and_stack(Var) of +	{'EXIT', Stacktrace} -> other_val(Var, Stacktrace);  	_VaLuE_ -> _VaLuE_      end. @@ -446,9 +446,9 @@ set(Var, Val) ->  unset(Var) ->      ?ets_delete(mnesia_gvar, Var). -other_val(Var) -> +other_val(Var, Stacktrace) ->      case other_val_1(Var) of -        error -> pr_other(Var); +        error -> pr_other(Var, Stacktrace);          Val -> Val      end. @@ -460,8 +460,8 @@ other_val_1(Var) ->  	_ -> error      end. --spec pr_other(_) -> no_return(). -pr_other(Var) -> +-spec pr_other(_, _) -> no_return(). +pr_other(Var, Stacktrace) ->      Why =  	case is_running() of  	    no -> {node_not_running, node()}; @@ -469,7 +469,7 @@ pr_other(Var) ->  	end,      verbose("~p (~tp) val(mnesia_gvar, ~tw) -> ~p ~tp ~n",  	    [self(), process_info(self(), registered_name), -	     Var, Why, erlang:get_stacktrace()]), +	     Var, Why, Stacktrace]),      mnesia:abort(Why).  %% Some functions for list valued variables diff --git a/lib/mnesia/src/mnesia_loader.erl b/lib/mnesia/src/mnesia_loader.erl index 4c6336cb73..ebe924a86e 100644 --- a/lib/mnesia/src/mnesia_loader.erl +++ b/lib/mnesia/src/mnesia_loader.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1998-2016. All Rights Reserved. +%% Copyright Ericsson AB 1998-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -34,9 +34,10 @@  -include("mnesia.hrl"). +%% Local function in order to avoid external function call  val(Var) -> -    case ?catch_val(Var) of -	{'EXIT', _} -> mnesia_lib:other_val(Var); +    case ?catch_val_and_stack(Var) of +	{'EXIT', Stacktrace} -> mnesia_lib:other_val(Var, Stacktrace);  	Value -> Value      end. @@ -535,7 +536,7 @@ init_table(Tab, _, Fun, _DetsInfo,_) ->      try  	true = ets:init_table(Tab, Fun),  	ok -    catch _:Else -> {Else, erlang:get_stacktrace()} +    catch _:Else:Stacktrace -> {Else, Stacktrace}      end. @@ -777,9 +778,9 @@ do_send_table(Pid, Tab, Storage, RemoteS) ->          throw:receiver_died ->              cleanup_tab_copier(Pid, Storage, Tab),              ok; -        error:Reason -> %% Prepare failed +        error:Reason:Stacktrace -> %% Prepare failed              cleanup_tab_copier(Pid, Storage, Tab), -            {error, {tab_copier, Tab, {Reason, erlang:get_stacktrace()}}} +            {error, {tab_copier, Tab, {Reason, Stacktrace}}}      after          unlink(whereis(mnesia_tm))      end. diff --git a/lib/mnesia/src/mnesia_locker.erl b/lib/mnesia/src/mnesia_locker.erl index 073b48abc0..f68626413e 100644 --- a/lib/mnesia/src/mnesia_locker.erl +++ b/lib/mnesia/src/mnesia_locker.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -97,10 +97,11 @@ init(Parent) ->      end,      loop(#state{supervisor = Parent}). +%% Local function in order to avoid external function call  val(Var) -> -    case ?catch_val(Var) of -	{'EXIT', _} -> mnesia_lib:other_val(Var); -	_VaLuE_ -> _VaLuE_ +    case ?catch_val_and_stack(Var) of +	{'EXIT', Stacktrace} -> mnesia_lib:other_val(Var, Stacktrace); +	Value -> Value      end.  reply(From, R) -> diff --git a/lib/mnesia/src/mnesia_log.erl b/lib/mnesia/src/mnesia_log.erl index a2de23a2a3..03411ace41 100644 --- a/lib/mnesia/src/mnesia_log.erl +++ b/lib/mnesia/src/mnesia_log.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/src/mnesia_recover.erl b/lib/mnesia/src/mnesia_recover.erl index d792070332..2ccea1ea6d 100644 --- a/lib/mnesia/src/mnesia_recover.erl +++ b/lib/mnesia/src/mnesia_recover.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1997-2016. All Rights Reserved. +%% Copyright Ericsson AB 1997-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -177,10 +177,10 @@ disconnect(Node) ->  log_decision(D) ->      cast({log_decision, D}). +%% Local function in order to avoid external function call  val(Var) -> -    case ?catch_val(Var) of -	{'EXIT', _Reason} -> -	    mnesia_lib:other_val(Var); +    case ?catch_val_and_stack(Var) of +	{'EXIT', Stacktrace} -> mnesia_lib:other_val(Var, Stacktrace);  	Value -> Value      end. diff --git a/lib/mnesia/src/mnesia_schema.erl b/lib/mnesia/src/mnesia_schema.erl index 71952af31c..ef38adca1e 100644 --- a/lib/mnesia/src/mnesia_schema.erl +++ b/lib/mnesia/src/mnesia_schema.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2017. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -181,9 +181,10 @@ exit_on_error({error, Reason}) ->  exit_on_error(GoodRes) ->      GoodRes. +%% Local function in order to avoid external function call  val(Var) -> -    case ?catch_val(Var) of -	{'EXIT', _} -> mnesia_lib:other_val(Var); +    case ?catch_val_and_stack(Var) of +	{'EXIT', Stacktrace} -> mnesia_lib:other_val(Var, Stacktrace);  	Value -> Value      end. @@ -2695,10 +2696,10 @@ prepare_op(_Tid, {op, transform, Fun, TabDef}, _WaitFor) ->                  Objs ->  		    mnesia_lib:db_fixtable(Storage, Tab, false),                      {true, Objs, mandatory} -	    catch _:Reason -> +	    catch _:Reason:Stacktrace ->  		    mnesia_lib:db_fixtable(Storage, Tab, false),  		    mnesia_lib:important("Transform function failed: '~tp' in '~tp'", -					 [Reason, erlang:get_stacktrace()]), +					 [Reason, Stacktrace]),                      exit({"Bad transform function", Tab, Fun, node(), Reason})              end      end; diff --git a/lib/mnesia/src/mnesia_subscr.erl b/lib/mnesia/src/mnesia_subscr.erl index dfaa20d2d3..21a308cfb6 100644 --- a/lib/mnesia/src/mnesia_subscr.erl +++ b/lib/mnesia/src/mnesia_subscr.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1997-2016. All Rights Reserved. +%% Copyright Ericsson AB 1997-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/src/mnesia_text.erl b/lib/mnesia/src/mnesia_text.erl index 7d24d09472..cc21621ff4 100644 --- a/lib/mnesia/src/mnesia_text.erl +++ b/lib/mnesia/src/mnesia_text.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%   %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/src/mnesia_tm.erl b/lib/mnesia/src/mnesia_tm.erl index ebf580d09e..4b3fffc735 100644 --- a/lib/mnesia/src/mnesia_tm.erl +++ b/lib/mnesia/src/mnesia_tm.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -121,10 +121,11 @@ init(Parent) ->      proc_lib:init_ack(Parent, {ok, self()}),      doit_loop(#state{supervisor = Parent}). +%% Local function in order to avoid external function call  val(Var) -> -    case ?catch_val(Var) of -	{'EXIT', _} -> mnesia_lib:other_val(Var); -	_VaLuE_ -> _VaLuE_ +    case ?catch_val_and_stack(Var) of +	{'EXIT', Stacktrace} -> mnesia_lib:other_val(Var, Stacktrace); +	Value -> Value      end.  reply({From,Ref}, R) -> @@ -597,9 +598,9 @@ recover_coordinator(Tid, Etabs) ->  		false ->  %% When killed before store havn't been copied to  		    ok    %% to the new nested trans store.  	    end -    catch _:Reason -> +    catch _:Reason:Stacktrace ->  	    dbg_out("Recovery of coordinator ~p failed: ~tp~n", -		    [Tid, {Reason, erlang:get_stacktrace()}]), +		    [Tid, {Reason, Stacktrace}]),  	    Protocol = asym_trans,  	    tell_outcome(Tid, Protocol, node(), CheckNodes, TellNodes)      end, @@ -825,8 +826,7 @@ execute_transaction(Fun, Args, Factor, Retries, Type) ->      catch throw:Value ->  %% User called throw  	    Reason = {aborted, {throw, Value}},  	    return_abort(Fun, Args, Reason); -	  error:Reason -> -	    ST = erlang:get_stacktrace(), +	  error:Reason:ST ->  	    check_exit(Fun, Args, Factor, Retries, {Reason,ST}, Type);  	  _:Reason ->  	    check_exit(Fun, Args, Factor, Retries, Reason, Type) @@ -1796,14 +1796,13 @@ do_update(Tid, Storage, [Op | Ops], OldRes) ->      try do_update_op(Tid, Storage, Op) of  	ok ->     do_update(Tid, Storage, Ops, OldRes);  	NewRes -> do_update(Tid, Storage, Ops, NewRes) -    catch _:Reason -> +    catch _:Reason:ST ->  	    %% This may only happen when we recently have  	    %% deleted our local replica, changed storage_type  	    %% or transformed table  	    %% BUGBUG: Updates may be lost if storage_type is changed.  	    %%         Determine actual storage type and try again.  	    %% BUGBUG: Updates may be lost if table is transformed. -	    ST = erlang:get_stacktrace(),  	    verbose("do_update in ~w failed: ~tp -> {'EXIT', ~tp}~n",  		    [Tid, Op, {Reason, ST}]),  	    do_update(Tid, Storage, Ops, OldRes) @@ -1914,11 +1913,10 @@ commit_clear([H|R], Tid, Storage, Tab, K, Obj)  do_snmp(_, []) ->   ok;  do_snmp(Tid, [Head|Tail]) ->      try mnesia_snmp_hook:update(Head) -    catch _:Reason -> +    catch _:Reason:ST ->  	    %% This should only happen when we recently have  	    %% deleted our local replica or recently deattached  	    %% the snmp table -	    ST = erlang:get_stacktrace(),  	    verbose("do_snmp in ~w failed: ~tp -> {'EXIT', ~tp}~n",  		    [Tid, Head, {Reason, ST}])      end, @@ -2212,7 +2210,7 @@ display_pid_info(Pid) ->  			   Other  		   end,  	    Reds  = fetch(reductions, Info), -	    LM = length(fetch(messages, Info)), +	    LM = fetch(message_queue_len, Info),  	    pformat(io_lib:format("~p", [Pid]),  		    io_lib:format("~tp", [Call]),  		    io_lib:format("~tp", [Curr]), Reds, LM) diff --git a/lib/mnesia/test/mnesia_SUITE.erl b/lib/mnesia/test/mnesia_SUITE.erl index 279744dbb0..24c1def6da 100644 --- a/lib/mnesia/test/mnesia_SUITE.erl +++ b/lib/mnesia/test/mnesia_SUITE.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1997-2016. All Rights Reserved. +%% Copyright Ericsson AB 1997-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_atomicity_test.erl b/lib/mnesia/test/mnesia_atomicity_test.erl index 58a5dc1d40..4764f9e7c0 100644 --- a/lib/mnesia/test/mnesia_atomicity_test.erl +++ b/lib/mnesia/test/mnesia_atomicity_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1997-2016. All Rights Reserved. +%% Copyright Ericsson AB 1997-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_bench_SUITE.erl b/lib/mnesia/test/mnesia_bench_SUITE.erl index 5cc01867c4..8a225629e6 100644 --- a/lib/mnesia/test/mnesia_bench_SUITE.erl +++ b/lib/mnesia/test/mnesia_bench_SUITE.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 2012-2016. All Rights Reserved. +%% Copyright Ericsson AB 2012-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_consistency_test.erl b/lib/mnesia/test/mnesia_consistency_test.erl index 7a2678cee3..46bafaf65c 100644 --- a/lib/mnesia/test/mnesia_consistency_test.erl +++ b/lib/mnesia/test/mnesia_consistency_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1997-2016. All Rights Reserved. +%% Copyright Ericsson AB 1997-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_cost.erl b/lib/mnesia/test/mnesia_cost.erl index 4d0dd7b0ee..b5d5253147 100644 --- a/lib/mnesia/test/mnesia_cost.erl +++ b/lib/mnesia/test/mnesia_cost.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%   %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_dirty_access_test.erl b/lib/mnesia/test/mnesia_dirty_access_test.erl index 92124ebc65..67ef1fe901 100644 --- a/lib/mnesia/test/mnesia_dirty_access_test.erl +++ b/lib/mnesia/test/mnesia_dirty_access_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_durability_test.erl b/lib/mnesia/test/mnesia_durability_test.erl index 2fac5cac82..62199d8b9a 100644 --- a/lib/mnesia/test/mnesia_durability_test.erl +++ b/lib/mnesia/test/mnesia_durability_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1997-2016. All Rights Reserved. +%% Copyright Ericsson AB 1997-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_evil_coverage_test.erl b/lib/mnesia/test/mnesia_evil_coverage_test.erl index 074967469b..eb1f987cf0 100644 --- a/lib/mnesia/test/mnesia_evil_coverage_test.erl +++ b/lib/mnesia/test/mnesia_evil_coverage_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_examples_test.erl b/lib/mnesia/test/mnesia_examples_test.erl index f1259abf90..3bbb6e4d77 100644 --- a/lib/mnesia/test/mnesia_examples_test.erl +++ b/lib/mnesia/test/mnesia_examples_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1997-2016. All Rights Reserved. +%% Copyright Ericsson AB 1997-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_frag_test.erl b/lib/mnesia/test/mnesia_frag_test.erl index 7371792fda..7b37fcb684 100644 --- a/lib/mnesia/test/mnesia_frag_test.erl +++ b/lib/mnesia/test/mnesia_frag_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1999-2016. All Rights Reserved. +%% Copyright Ericsson AB 1999-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_install_test.erl b/lib/mnesia/test/mnesia_install_test.erl index 3f67396eb0..2aee5137c3 100644 --- a/lib/mnesia/test/mnesia_install_test.erl +++ b/lib/mnesia/test/mnesia_install_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_isolation_test.erl b/lib/mnesia/test/mnesia_isolation_test.erl index 1c3ea5ec92..b2eea2390b 100644 --- a/lib/mnesia/test/mnesia_isolation_test.erl +++ b/lib/mnesia/test/mnesia_isolation_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1997-2016. All Rights Reserved. +%% Copyright Ericsson AB 1997-2018. All Rights Reserved.  %%   %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_majority_test.erl b/lib/mnesia/test/mnesia_majority_test.erl index eb82617b60..aae27e069e 100644 --- a/lib/mnesia/test/mnesia_majority_test.erl +++ b/lib/mnesia/test/mnesia_majority_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 2010-2016. All Rights Reserved. +%% Copyright Ericsson AB 2010-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_measure_test.erl b/lib/mnesia/test/mnesia_measure_test.erl index 4e63eaee22..8eb3590168 100644 --- a/lib/mnesia/test/mnesia_measure_test.erl +++ b/lib/mnesia/test/mnesia_measure_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%   %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_nice_coverage_test.erl b/lib/mnesia/test/mnesia_nice_coverage_test.erl index 7c96d6e6a0..f8c6b2ce20 100644 --- a/lib/mnesia/test/mnesia_nice_coverage_test.erl +++ b/lib/mnesia/test/mnesia_nice_coverage_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_qlc_test.erl b/lib/mnesia/test/mnesia_qlc_test.erl index 262a6b4abc..e66fd84995 100644 --- a/lib/mnesia/test/mnesia_qlc_test.erl +++ b/lib/mnesia/test/mnesia_qlc_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 2004-2016. All Rights Reserved. +%% Copyright Ericsson AB 2004-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_recovery_test.erl b/lib/mnesia/test/mnesia_recovery_test.erl index 82d6e6ac6a..b5749408f8 100644 --- a/lib/mnesia/test/mnesia_recovery_test.erl +++ b/lib/mnesia/test/mnesia_recovery_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -730,6 +730,7 @@ do_trans_loop2(Tab, Father) ->  	    do_trans_loop2(Tab, Father);  	Else ->  	    ?error("Transaction failed: ~p ~n", [Else]), +            io:format("INFO: ~p~n",[erlang:process_info(self())]),  	    Father ! test_done,  	    exit(shutdown)      end. diff --git a/lib/mnesia/test/mnesia_registry_test.erl b/lib/mnesia/test/mnesia_registry_test.erl index 08157f1be3..c15b8e97af 100644 --- a/lib/mnesia/test/mnesia_registry_test.erl +++ b/lib/mnesia/test/mnesia_registry_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1998-2016. All Rights Reserved. +%% Copyright Ericsson AB 1998-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_schema_recovery_test.erl b/lib/mnesia/test/mnesia_schema_recovery_test.erl index 5e7627ca47..e4199758c1 100644 --- a/lib/mnesia/test/mnesia_schema_recovery_test.erl +++ b/lib/mnesia/test/mnesia_schema_recovery_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1998-2016. All Rights Reserved. +%% Copyright Ericsson AB 1998-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/test/mnesia_test_lib.erl b/lib/mnesia/test/mnesia_test_lib.erl index 0fabdc7929..1cdac3cde6 100644 --- a/lib/mnesia/test/mnesia_test_lib.erl +++ b/lib/mnesia/test/mnesia_test_lib.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -470,9 +470,9 @@ get_suite(Mod, {group, Suite}) ->  	{_, _, TCList} = lists:keyfind(Suite, 1, Groups),  	TCList      catch -	_:Reason -> +	_:Reason:Stacktrace ->  	    io:format("Not implemented ~p ~p (~p ~p)~n", -		      [Mod,Suite,Reason, erlang:get_stacktrace()]), +		      [Mod,Suite,Reason,Stacktrace]),  	    'NYI'      end;  get_suite(Mod, all) -> @@ -774,7 +774,7 @@ init_nodes([], _File, _Line) ->  %% Returns [Name, Host]  node_to_name_and_host(Node) -> -    string:tokens(atom_to_list(Node), [$@]). +    string:lexemes(atom_to_list(Node), [$@]).  lookup_config(Key,Config) ->      case lists:keysearch(Key,1,Config) of diff --git a/lib/mnesia/test/mnesia_test_lib.hrl b/lib/mnesia/test/mnesia_test_lib.hrl index ba7eb10ea2..b8eeb5783f 100644 --- a/lib/mnesia/test/mnesia_test_lib.hrl +++ b/lib/mnesia/test/mnesia_test_lib.hrl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -55,25 +55,25 @@  			?error("Not Matching Actual result was:~n ~p~n",[_AR_0]),  			{fail,_AR_0}  		catch -		    exit:{aborted, _ER_1} when +		    exit:{aborted, _ER_1}:Stacktrace when  			  element(1, _ER_1) =:= node_not_running;  			  element(1, _ER_1) =:= bad_commit;  			  element(1, _ER_1) =:= cyclic ->  			%% Need to re-raise these to restart transaction -			erlang:raise(exit, {aborted, _ER_1}, erlang:get_stacktrace()); -		    exit:_AR_1 -> +			erlang:raise(exit, {aborted, _ER_1}, Stacktrace); +		    exit:_AR_1:Stacktrace ->  			case fun(_AR_EXIT_) -> {'EXIT', _AR_EXIT_} end(_AR_1) of  			    _AR_2 = ExpectedRes ->  				?verbose("ok, ~n Result as expected:~p~n",[_AR_2]),  				{success,_AR_2};  			    _AR_2 ->  				?error("Not Matching Actual result was:~n ~p~n ~p~n", -				       [_AR_2, erlang:get_stacktrace()]), +				       [_AR_2, Stacktrace]),  				{fail,_AR_2}  			end; -		    _T1_:_AR_1 -> +		    _T1_:_AR_1:Stacktrace ->  			?error("Not Matching Actual result was:~n ~p~n  ~p~n", -			       [{_T1_,_AR_1}, erlang:get_stacktrace()]), +			       [{_T1_,_AR_1}, Stacktrace]),  			{fail,{_T1_,_AR_1}}  		end  	end()). diff --git a/lib/mnesia/test/mnesia_trans_access_test.erl b/lib/mnesia/test/mnesia_trans_access_test.erl index c00a1ed51f..723a85fd2c 100644 --- a/lib/mnesia/test/mnesia_trans_access_test.erl +++ b/lib/mnesia/test/mnesia_trans_access_test.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/mnesia/vsn.mk b/lib/mnesia/vsn.mk index 45f811846d..aaa1c3006f 100644 --- a/lib/mnesia/vsn.mk +++ b/lib/mnesia/vsn.mk @@ -1 +1 @@ -MNESIA_VSN = 4.15.3 +MNESIA_VSN = 4.15.4 | 
