Browse Source

update is_seq.tables on rotate tables with new format

Namdak Tonpa 9 years ago
parent
commit
c4798f258d
3 changed files with 6 additions and 3 deletions
  1. 4 1
      src/kvs.erl
  2. 1 1
      src/kvs_subscription.erl
  3. 1 1
      src/store/store_mnesia.erl

+ 4 - 1
src/kvs.erl

@@ -289,15 +289,18 @@ dump() ->
 
 nonexistent()      -> [ T || #table{name=T} <- kvs:tables(), kvs:info(T) == [] ].
 rotate_new(Tables) -> kvs:info(?MODULE,"New Tables: ~p~n",[Tables]), [ kvs:rotate1(kvs:table(T)) || T<- Tables].
-rotate1(Table)     -> update_config(rname(Table),rname(Table),Table#table.name).
+rotate1(Table)     -> update_config(rname(Table),rname(Table),Table#table.name),
+                      kvs:put(#id_seq{thing=lists:concat([rname(Table),".tables"]),id=wf:to_integer(nname(Table))}).
 load_partitions()  -> [ case kvs:get(config,Table) of
                              {ok,{config,_,List}} -> application:set_env(kvs,Table,List);
                              Else -> ok end || {table,Table} <- kvs:dir() ].
 
 limit()        -> 10000000000000000000.
 store(Table,X) -> application:set_env(kvs,Table,X), X.
+last_table(Table)  -> list_to_atom(lists:concat([Table,(element(2,kvs:get(id_seq,lists:concat([Table,".tables"]))))#id_seq.id])).
 cname(Table)   -> list_to_atom(lists:concat([Table,(element(2,kvs:get(id_seq,lists:concat([Table,".tables"]))))#id_seq.id-1])).
 rname(Table)   -> list_to_atom(lists:filter(fun(X) -> not lists:member(X,"1234567890") end, atom_to_list(Table#table.name))).
+nname(Table)   -> list_to_atom(lists:filter(fun(X) -> lists:member(X,"1234567890") end, atom_to_list(Table#table.name))).
 fold(N)        -> kvs:fold(fun(X,A)->[X|A]end,[],process,N,-1,#iterator.next,#kvs{mod=store_mnesia}).
 top(Table)     -> (element(2,kvs:get(id_seq,atom_to_list(Table))))#id_seq.id.
 name(T)        -> list_to_atom(lists:concat([T,kvs:next_id(lists:concat([T,".tables"]),1)])).

+ 1 - 1
src/kvs_subscription.erl

@@ -7,7 +7,7 @@
 
 metainfo() ->
     #schema{name=kvs,tables=[
-        #table{name=subscription,fields=record_info(fields,subscription),keys=[whom,who]},
+        #table{name=subscription,fields=record_info(fields,subscription),keys=[id,whom,who]},
         #table{name=id_seq,fields=record_info(fields,id_seq),keys=[thing]}
     ]}.
 

+ 1 - 1
src/store/store_mnesia.erl

@@ -42,7 +42,7 @@ delete(Tab, Key) ->
 count(RecordName) -> mnesia:table_info(RecordName, size).
 all(R) -> lists:flatten(many(fun() -> L= mnesia:all_keys(R), [ mnesia:read({R, G}) || G <- L ] end)).
 next_id(RecordName, Incr) -> mnesia:dirty_update_counter({id_seq, RecordName}, Incr).
-many(Fun) -> case mnesia:activity(context(),Fun) of {atomic, R} -> R; X -> X end.
+many(Fun) -> case mnesia:activity(context(),Fun) of {atomic, R} -> R; {aborted, Error} -> {error, Error}; X -> X end.
 void(Fun) -> case mnesia:activity(context(),Fun) of {atomic, ok} -> ok; {aborted, Error} -> {error, Error}; X -> X end.
 info(T) -> try mnesia:table_info(T,all) catch _:_ -> [] end.
 create_table(Name,Options) ->