Namdak Tonpa 9 years ago
parent
commit
8f4d4d2aff
2 changed files with 10 additions and 4 deletions
  1. 7 2
      src/kvs.erl
  2. 3 2
      src/store/store_mnesia.erl

+ 7 - 2
src/kvs.erl

@@ -48,7 +48,7 @@ limit(_Table,_Key)     -> 250000.
 
 
 forbid(user)           -> 3;
 forbid(user)           -> 3;
 forbid(comment)        -> 3;
 forbid(comment)        -> 3;
-forbid(____)           -> 100.
+forbid(____)           -> 100000.
 
 
 % Implementation
 % Implementation
 
 
@@ -330,7 +330,8 @@ rotate(Table)      -> Intervals = kvs:config(Table),
                       {M,F} = application:get_env(kvs,forbidding,{?MODULE,forbid}),
                       {M,F} = application:get_env(kvs,forbidding,{?MODULE,forbid}),
                       New = lists:sublist(Intervals,M:F(Table)),
                       New = lists:sublist(Intervals,M:F(Table)),
                       Delete = Intervals -- New,
                       Delete = Intervals -- New,
-                      [ mnesia:delete_table(Name) || #interval{name=Name} <- Delete ],
+                      [ mnesia:change_table_copy_type(Name, node(), disc_only_copies)
+                                    || #interval{name=Name} <- Delete ],
                       kvs:put(#config{key=Table,value=New}),
                       kvs:put(#config{key=Table,value=New}),
                       rotate(kvs:table(Table)),
                       rotate(kvs:table(Table)),
                       ok.
                       ok.
@@ -338,6 +339,10 @@ load_partitions()  -> [ case kvs:get(config,Table) of
                              {ok,{config,_,List}} -> application:set_env(kvs,Table,List);
                              {ok,{config,_,List}} -> application:set_env(kvs,Table,List);
                              Else -> ok end || {table,Table} <- kvs:dir() ].
                              Else -> ok end || {table,Table} <- kvs:dir() ].
 
 
+wait()         -> timer:tc(fun() -> mnesia:wait_for_tables([ T#table.name || T <- kvs:tables()],infinity) end).
+stl([])        -> [];
+stl(S)         -> tl(S).
+dat(T)         -> [ mnesia:change_table_copy_type(Name, node(), disc_only_copies) || #interval{name=Name} <- stl((element(2,kvs:get(config,T)))#config.value) ].
 omitone(1)     -> [];
 omitone(1)     -> [];
 omitone(X)     -> X.
 omitone(X)     -> X.
 limit()        -> infinity.
 limit()        -> infinity.

+ 3 - 2
src/store/store_mnesia.erl

@@ -24,8 +24,9 @@ change_storage(Table,Type) -> mnesia:change_table_copy_type(Table, node(), Type)
 initialize() ->
 initialize() ->
     kvs:info(?MODULE,"mnesia init.~n",[]),
     kvs:info(?MODULE,"mnesia init.~n",[]),
     mnesia:create_schema([node()]),
     mnesia:create_schema([node()]),
-    [ kvs:init(store_mnesia,Module) || Module <- kvs:modules() ],
-    mnesia:wait_for_tables([ T#table.name || T <- kvs:tables()],infinity).
+    Res = [ kvs:init(store_mnesia,Module) || Module <- kvs:modules() ],
+    mnesia:wait_for_tables([ T#table.name || T <- kvs:tables()],infinity),
+    Res.
 
 
 index(Tab,Key,Value) ->
 index(Tab,Key,Value) ->
     Table = kvs:table(Tab),
     Table = kvs:table(Tab),