Fun with Erlang (was Re: Stand Alone Erlang for Windows. yet again)

Ulf Wiger <>
Fri Mar 16 15:30:32 CET 2001


On Fri, 16 Mar 2001, Alexander Williams wrote:

>I think it can be done.  One thing I wonder about, however, is whether
>a running process can be marshalled out to disk and reloaded.  If so,
>we're golden.

This can be done, as long as one doesn't make any assumptions about
Pid (it will change), and there's a stable state in which to do this.

Take a look at the dispatcher contrib. It packs processes into ETS,
re-activating them if something happens. This is done on top of 
the existing Erlang, and is similar to a mechanism used in 
AXD301 for handling connection setups (the problem there is that we
can't have one process per connection, as there are too many
connections.)

One could make it more general still by extracting the process
dictionary before killing the process instance.

You still need to define some programming rules for such a process.
If you create an ETS table, you'll be surprised to find it gone 
when you need it.

I once toyed with the idea that you could mirror a process to 
another erlang node in real-time, e.g. using something like Encore's
Reflective Memory technology (http://www.encore.com). Then, you'd
have to introduce some 'passive' state for the process replica.
I couldn't get a clear mental picture of the repercussions, so I
dropped the idea. I imagine really dumping processes to disk would
have some similar repercussions.

/Uffe
-- 
Ulf Wiger                                    tfn: +46  8 719 81 95
Senior System Architect                      mob: +46 70 519 81 95
Strategic Product & System Management    ATM Multiservice Networks
Data Backbone & Optical Services Division      Ericsson Telecom AB




More information about the erlang-questions mailing list