Database / Mnesia intermediate to advanced Interview questions
How do you react to table events using Mnesia's subscription mechanism?
After subscribing, the subscribing process simply receives ordinary messages in its mailbox whenever a
matching event occurs, and handles them with a normal receive clause — there's no separate
callback registration mechanism the way gen_event handlers work; it's just messages.
mnesia:subscribe({table, session, simple}), loop() -> receive {mnesia_table_event, {write, Session, _}} -> notify_cache_invalidation(Session), loop(); {mnesia_table_event, {delete, {session, Key}, _}} -> evict_from_cache(Key), loop() end.
Because these arrive as plain messages, a gen_server can subscribe during its init/1 and handle
the events in its normal handle_info/2 callback, integrating cleanly with the usual OTP message
loop rather than needing a separate event-handling framework layered on top.
More Related questions...