@@ -47,7 +47,7 @@ val(Var) ->
4747disc_load_table (Tab , Reason , Cs ) ->
4848 Storage = mnesia_lib :cs_to_storage_type (node (), Cs ),
4949 Type = val ({Tab , setorbag }),
50- dbg_out (" Getting table ~tp (~p ) from disc: ~tp ~n " ,
50+ dbg_out (" Getting table ~0tp (~0p ) from disc: ~0tp ~n " ,
5151 [Tab , Storage , Reason ]),
5252 ? eval_debug_fun ({? MODULE , do_get_disc_copy },
5353 [{tab , Tab },
@@ -56,9 +56,9 @@ disc_load_table(Tab, Reason, Cs) ->
5656 {type , Type }]),
5757 do_get_disc_copy2 (Tab , Reason , Storage , Type ).
5858
59- do_get_disc_copy2 (Tab , _Reason , Storage , _Type ) when Storage == unknown ->
60- verbose (" Local table copy of ~tp has recently been deleted, ignored.~n " ,
61- [Tab ]),
59+ do_get_disc_copy2 (Tab , Reason , Storage , _Type ) when Storage == unknown ->
60+ verbose (" Local table copy of ~0tp ~0p has recently been deleted, ignored.~n " ,
61+ [Tab , Reason ]),
6262 {not_loaded , storage_unknown };
6363do_get_disc_copy2 (Tab , Reason , Storage , Type ) when Storage == disc_copies ->
6464 % % NOW we create the actual table
@@ -206,14 +206,14 @@ try_net_load_table(Tab, Reason, Ns, Cs) ->
206206 end ,
207207 do_get_network_copy (Tab , Reason , Ns , Storage , Cs ).
208208
209- do_get_network_copy (Tab , _Reason , _Ns , unknown , _Cs ) ->
210- verbose (" Local table copy of ~tp has recently been deleted, ignored.~n " , [Tab ]),
209+ do_get_network_copy (Tab , Reason , _Ns , unknown , _Cs ) ->
210+ verbose (" Local table copy of ~0tp ( ~0p ) has recently been deleted, ignored.~n " , [Tab , Reason ]),
211211 {not_loaded , storage_unknown };
212212do_get_network_copy (Tab , Reason , Ns , Storage , Cs ) ->
213213 [Node | Tail ] = Ns ,
214214 case lists :member (Node ,val ({current , db_nodes })) of
215215 true ->
216- dbg_out (" Getting table ~tp (~p ) from node ~p : ~tp ~n " ,
216+ dbg_out (" Getting table ~0tp (~0p ) from node ~0p : ~0tp ~n " ,
217217 [Tab , Storage , Node , Reason ]),
218218 ? eval_debug_fun ({? MODULE , do_get_network_copy },
219219 [{tab , Tab }, {reason , Reason },
@@ -289,6 +289,14 @@ init_receiver(Node, Tab,Storage,Cs,Reason) ->
289289 {atomic , {error ,Result }} when
290290 element (1 ,Reason ) == dumper ->
291291 {error ,Result };
292+ {atomic , {error ,{mktab , _ } = Reason }} ->
293+ case val ({Tab ,where_to_read }) == node () of
294+ true -> % % Already loaded
295+ ok ;
296+ false ->
297+ fatal (" Cannot create table ~tp : ~tp~n " ,
298+ [[Tab , Storage ], Reason ])
299+ end ;
292300 {atomic , {error ,Result }} ->
293301 fatal (" Cannot create table ~tp : ~tp~n " ,
294302 [[Tab , Storage ], Result ]);
@@ -415,26 +423,28 @@ create_table(Tab, TabSize, Storage, Cs) ->
415423 {ok , _ } ->
416424 mnesia_lib :unlock_table (Tab ),
417425 {Storage , Tab };
418- Else ->
426+ { error , Reason } ->
419427 mnesia_lib :unlock_table (Tab ),
420- Else
428+ { error , { mktab , Reason }}
421429 end ;
422430 (Storage == ram_copies ) or (Storage == disc_copies ) ->
423431 EtsOpts = proplists :get_value (ets , StorageProps , []),
424432 Args = [{keypos , 2 }, public , named_table , Cs # cstruct .type | EtsOpts ],
425433 case mnesia_monitor :unsafe_mktab (Tab , Args ) of
426434 Tab ->
427435 {Storage , Tab };
428- Else ->
429- Else
436+ { error , Reason } ->
437+ { error , { mktab , Reason }}
430438 end ;
431439 element (1 , Storage ) == ext ->
432440 {_ , Alias , Mod } = Storage ,
433441 case mnesia_monitor :unsafe_create_external (Tab , Alias , Mod , Cs ) of
434442 ok ->
435443 {Storage , Tab };
436- Else ->
437- Else
444+ {error , Reason } ->
445+ {error , {mktab , Reason }};
446+ Reason ->
447+ {error , {mktab , Reason }}
438448 end
439449 end .
440450
0 commit comments