diff --git a/apps/efka/src/efka_agent.erl b/apps/efka/src/efka_agent.erl index 2e1a7f6..410ae77 100644 --- a/apps/efka/src/efka_agent.erl +++ b/apps/efka/src/efka_agent.erl @@ -169,7 +169,7 @@ handle_info({connect_reply, Reply}, State = #state{status = ?STATE_CONNECTING, t case Reply of ok -> AuthBin = auth_request(), - efka_transport:auth_request(TransportPid, AuthBin, 5000), + efka_transport:auth_request(TransportPid, AuthBin, 50000), {noreply, State#state{status = ?STATE_AUTH}}; {error, Reason} -> lager:debug("[efka_agent] connect failed, error: ~p, pid: ~p", [Reason, TransportPid]), @@ -293,7 +293,7 @@ handle_info({server_command, ?COMMAND_AUTH, <>}, State = #state{transpor {1, ?STATE_DENIED} -> %% 重新激活, 需要重新校验 AuthRequestBin = auth_request(), - efka_transport:auth_request(TransportPid, AuthRequestBin, 5000), + efka_transport:auth_request(TransportPid, AuthRequestBin, 50000), {noreply, State#state{status = ?STATE_AUTH}}; {0, _} -> %% 这个时候的主机应该是受限制的状态,不允许发送消息;但是能够接受服务器推送的消息 diff --git a/apps/efka/src/efka_app.erl b/apps/efka/src/efka_app.erl index 7d1f95e..0e1dd43 100644 --- a/apps/efka/src/efka_app.erl +++ b/apps/efka/src/efka_app.erl @@ -29,6 +29,7 @@ stop(_State) -> %% 启动内存数据库 start_mnesia() -> %% 启动数据库 + ensure_mnesia_schema(), ok = mnesia:start(), Tables = mnesia:system_info(tables), lager:debug("[efka_app] tables: ~p", [Tables]), @@ -37,4 +38,21 @@ start_mnesia() -> not lists:member(service, Tables) andalso service_model:create_table(), not lists:member(cache, Tables) andalso cache_model:create_table(), not lists:member(task_log, Tables) andalso task_log_model:create_table(), - ok. \ No newline at end of file + ok. + +-spec ensure_mnesia_schema() -> any(). +ensure_mnesia_schema() -> + case mnesia:system_info(use_dir) of + true -> + lager:debug("[efka_app] mnesia schema exists"), + ok; + false -> + mnesia:stop(), + case mnesia:create_schema([node()]) of + ok -> ok; + {error, {_, {already_exists, _}}} -> ok; + Error -> + lager:debug("[iot_app] create mnesia schema failed with error: ~p", [Error]), + throw({init_schema, Error}) + end + end. \ No newline at end of file diff --git a/apps/efka/src/mnesia/cache_model.erl b/apps/efka/src/mnesia/cache_model.erl index d855a5e..0718b2e 100644 --- a/apps/efka/src/mnesia/cache_model.erl +++ b/apps/efka/src/mnesia/cache_model.erl @@ -19,7 +19,7 @@ create_table() -> %% id生成器 - mnesia:create_table(cache, [ + {atomic, ok} = mnesia:create_table(cache, [ {attributes, record_info(fields, cache)}, {record_name, cache}, {disc_copies, [node()]}, diff --git a/apps/efka/src/mnesia/id_generator_model.erl b/apps/efka/src/mnesia/id_generator_model.erl index ccfd729..8bc2b80 100644 --- a/apps/efka/src/mnesia/id_generator_model.erl +++ b/apps/efka/src/mnesia/id_generator_model.erl @@ -15,7 +15,7 @@ create_table() -> %% id生成器 - mnesia:create_table(id_generator, [ + {atomic, ok} = mnesia:create_table(id_generator, [ {attributes, record_info(fields, id_generator)}, {record_name, id_generator}, {disc_copies, [node()]}, diff --git a/apps/efka/src/mnesia/service_model.erl b/apps/efka/src/mnesia/service_model.erl index 35d5d50..f90a7e0 100644 --- a/apps/efka/src/mnesia/service_model.erl +++ b/apps/efka/src/mnesia/service_model.erl @@ -20,7 +20,7 @@ create_table() -> %% id生成器 - mnesia:create_table(service, [ + {atomic, ok} = mnesia:create_table(service, [ {attributes, record_info(fields, service)}, {record_name, service}, {disc_copies, [node()]}, diff --git a/apps/efka/src/mnesia/task_log_model.erl b/apps/efka/src/mnesia/task_log_model.erl index 6871e1c..617f332 100644 --- a/apps/efka/src/mnesia/task_log_model.erl +++ b/apps/efka/src/mnesia/task_log_model.erl @@ -19,7 +19,7 @@ create_table() -> %% id生成器 - mnesia:create_table(task_log, [ + {atomic, ok} = mnesia:create_table(task_log, [ {attributes, record_info(fields, task_log)}, {record_name, task_log}, {disc_copies, [node()]}, diff --git a/config/sys.config b/config/sys.config index 4c8b6fd..f2a2668 100644 --- a/config/sys.config +++ b/config/sys.config @@ -3,7 +3,7 @@ {root_dir, "/tmp/efka/"}, {tcp_server, [ - {port, 18080} + {port, 18088} ]}, {tls_server, [ diff --git a/config/vm.args b/config/vm.args index de4d43f..7fe8e1c 100644 --- a/config/vm.args +++ b/config/vm.args @@ -1,4 +1,4 @@ --sname efka +-name efka -setcookie efka_cookie