ERLang OTP gen_server:call() fails

raich

I have written a gen_server module (data_cahe.erl) that will save the data in ETS.

My code is as follows:

-export([start_link/0]).

%% gen_server callbacks
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
 terminate/2, code_change/3]).

-define(SERVER, ?MODULE).
-define(TABLE_ID, ?MODULE).
-record(state, {user_id, my_reading, my_status}).

start_link() ->
gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).

init([]) ->
{ok, ?TABLE_ID} = new_cache(?TABLE_ID),
{ok, #state{user_id=undefined, my_reading=undefined, my_status=undefined}}.

The handle_call:

handle_call({save, UserId, Readings}, _From, _Status) ->
io:format("Inside handle_call_save: ~n~p~n",[]);
%Check if email is present
case my_reading(UserId) of
{error, not_found} -> %%Email not present
    io:format("Inside handle_call_save Just before save: ~n~p~n",[]),
    Result = save_my_readings(UserId, Readings),
    {reply, ok, #state{user_id=UserId, my_reading=Readings, my_status=Result}};
{ok, Reading} ->
    io:format("Inside handle_call_save Just before delete and save: ~n~p~n",[]),
    delete_my_reading(UserId), %%delete last reading
    Result = save_my_readings(UserId, Readings), %%Save this new Reading
    {reply, ok, #state{user_id=UserId, my_reading=Readings, my_status=Result}}
end;

I'm trying using this handel_call (that has access to Email and AccessToken) to save the data in ETS from the worker module:

case my_app_interface:get_data_summary(binary_to_list(AccessToken)) of
    {error, _Reason1} ->
    %%Start a new Timer Cycle
    ..
    ..
    Readings1 ->
        gen_server:call(data_cahe, {save, Email, Readings1}), %%HERE IT CRASHES
        io:format("Get Data Summary : ~n~p~n",[Readings1]) %%This is printed when the line above is commented
 end,

However the gen_server:call(...) crashes. When I comment out this line the Readings are printed in usual sequence.

I've even commeneted out all the lines except the print statement in handle_call method - but nothing is printed. It seems the gen_server:call(...) is not at all going through. Would be extremely grateful if someone throws some light what is going wrong.

GabiMe

maybe you spelled it wrong ? data_cahe instead of ddata_cache..

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ERLang OTP gen_server:call()失败

来自分类Dev

当handle_call返回noreply时,erlang otp gen_server断开连接

来自分类Dev

在Erlang / OTP中gen_server调用的开销是多少?

来自分类Dev

Erlang:无法生成gen_server:call()

来自分类Dev

与gen_server:call()有关的Erlang可扩展性问题

来自分类Dev

gen_server套接字广播使用什么OTP模式?

来自分类Dev

OTP gen_server是否拦截收到的消息

来自分类Dev

Erlang OTP管理员gen_tcp-{error,eaddrinuse}

来自分类Dev

Erlang:OTP与生成

来自分类Dev

在Erlang / OTP中监控

来自分类Dev

Erlang init_per_group终止gen_server

来自分类Dev

Erlang,尝试使gen_server:调用有很多响应

来自分类Dev

Erlang init_per_group终止gen_server

来自分类Dev

Erlang R19中的gen_server实现

来自分类Dev

在Erlang中,gen_server:start()和gen_server:start_link()有什么区别?

来自分类Dev

在Erlang中,gen_server:start()和gen_server:start_link()有什么区别?

来自分类Dev

如何卸载或升级Erlang / OTP?

来自分类Dev

Erlang / OTP持续部署简介

来自分类Dev

如何卸载或升级Erlang / OTP?

来自分类Dev

gen_server:call-如何发送消息

来自分类Dev

如何停止在erlang中实现为gen_server的tcp_listener

来自分类Dev

如何从Erlang / OTP模块包含文件

来自分类Dev

如何删除Erlang / OTP 19并安装18?

来自分类Dev

Erlang Gen_call和Gen_cast

来自分类Dev

gen_server:call导致服务器崩溃,并导致noproc

来自分类Dev

透析器错误调用丢失或未导出的函数 gen_server:call/4

来自分类Dev

分布式Go的框架(例如Erlang OTP)?

来自分类Dev

运行守护的Erlang / OTP应用程序的行业标准?

来自分类Dev

如何为Erlang / OTP构建和组织测试?

Related 相关文章

热门标签

归档