[erlang-bugs] dets:from_ets EXIT error caused by large ets table and binary filename used in dets:open_file

David Cartt <>
Thu Dec 8 23:40:34 CET 2011


I'm getting an 'EXIT' error response from a call to dets:from_ets.  The
error response is shown below.

Steps to reproduce: Do dets:open_file/2 with a binary() type filename, then
a dets:from_ets/2 where the ets table is large (small ets tables don't
cause the error).  My guess is that the ets table needs to be large enough
that the dets:from_ets needs to use a temporary file.  Don't know if this
matters, but in my case the dets:open_file always creates a new file and
the ets table is type ordered_set..

The documentation for dets:open_file/2 states that the filename for the
file option can be a binary: {file, file:name()}.  file:name() includes the
binary() type.

dets:from_ets return result:
        {'EXIT',{function_clause,[{lists,thing_to_list,
                                 [<<"d:/misc/workspaces/Erlang
workspace/test1/scratch/">>]},
                          {lists,flatmap,2},
                          {file_sorter,next_temp,1},
                          {file_sorter,write_run,2},
                          {file_sorter,fun_run,5},
                          {file_sorter,do_sort,5},
                          {dets,do_sort,6},
                          {dets,do_finit,4}]}}


Code fragment:
DetsName = <<"db.dets">>,
Filename = filename:join(<<"d:/misc/workspaces/Erlang
workspace/test1/scratch">>, DetsName),
{error, enoent} = file:read_link_info(Filename),  %make sure the name is
unique
{ok, DetsName} = dets:open_file(DetsName, [{file, Filename} , {type, set},
{ram_file, true}]),
ok = dets:from_ets(DetsName, EtsName),

A "exception error: no match of right hand side value" exception occurs on
the "ok = dets:from_ets(DetsName, EtsName)" statement, obviously because ok
/= {'EXIT', ...}.

Changing the {file, Filename} option to {file, binary_to_list(Filename)} makes
the error go away.  The resultant dets table is about 2MB in size.

OS: Windows 7 64 bit
Erlang version (installed from the R14B04 release Windows Binary File
download) (erl +V): Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 5.8.5
Node name (node()): 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-bugs/attachments/20111208/447fe738/attachment.html>


More information about the erlang-bugs mailing list