[erlang-questions] Looking for advice on simultaneous data modification

Sergej Jurecko sergej.jurecko@REDACTED
Wed Jun 17 16:00:59 CEST 2015


Spawn a process to execute delete, use register/2 as a kind of mutex, anyone waiting for delete to finish should attach to it with monitor/2. 

case catch register(lock,self()) of
true ->
 Havelock;
{‘EXIT’,_} ->
 erlang:monitor(process,lock),
 ….wait for finish
end,

Or use a proper database… Can you share with us why you’re not using one?


Sergej

From:  <erlang-questions-bounces@REDACTED> on behalf of Daniil Churikov
Date:  Wednesday 17 June 2015 15:53
To:  <erlang-questions@REDACTED>
Subject:  [erlang-questions] Looking for advice on simultaneous data modification

Hello dear list. I am looking for advice to, perhaps, very common problem.

I have database which does not support transactions, only CAS operations for single record.
I have one-to-many relationship between 2 tables, and I need to implement cascade deletion of dependent records from table_2 when main record from table_1 was deleted. All the operations may happen in different processes simultaneously.
So my intention is to do some kind of a mutex, which incorporate following properties:
* when main record is in deletion-state, every other action on main and/or dependent record should wait until it will be deleted;
* if main record is in normal-state, all dependencies may be modified without any strict order.

Is there any library in the wild which allow me to do this kind of mutex?
Maybe I have chosen wrong approach? Any suggestions?

Thanks!
_______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150617/744de7e9/attachment.htm>


More information about the erlang-questions mailing list