[erlang-bugs] ets:new/2 and ets:all/0 concurrency issue

Florian Schintke <>
Thu Feb 6 12:57:14 CET 2014

> Just to clearify on the subject of ets:all() and concurrency.
> ets:all() does not give any guarantee of consistency. Each table
> created or deleted by other processes "during" the ets:all() call
> may or may not be included in the result.
> However, as pointed out, tables known to have been created/deleted
> *before* the call to ets:all() should of course be included/excluded
> in the result (or so they will in 17.0).

To 'know' may be a bit vague, so please could you clarify further
which guarantee ets:all() should provide (and may be include it in the
documentation then:

(1) When process A creates/deletes a table T and sends a message to
    process B with the table id, process B will always see the change in
    the result of ets:all()?


(2) Inside a single process ets:all() represents locally known changes
    to table-existence (create/delete)?


More information about the erlang-bugs mailing list