Mnesia transform_table with multiple disc_copies nodes

Fredrik Thulin ft@REDACTED
Thu Dec 22 08:23:42 CET 2005


On Wednesday 21 December 2005 16.36, Fredrik Thulin wrote:
> On Wednesday 21 December 2005 16.29, Dan Gudmundsson wrote:
> > Hmm
> >
> > The fun have to be known on every node, load the module
> > on every node (exact the same version on all nodes).
>
> Thanks for your fsat response, as always.
>
> How do I load the (changed) code then without using hot code swap of
> running code in all my servers?
>
> At the first node I upgrade to say a new version of my software,
> which requires a transform_table, I get this error :
>
> {aborted,{not_active,"All replicas on diskfull nodes are not active
> yet",
>                      regexproute,
>                      ['incomingproxy@REDACTED']}}
>
> ... or am I missing something else?

This issue might need a bit more explaining from my side.

I thought it obvious that I would want to do the transform_table in the 
startup process of my application running on the nodes with the 
disc_copies, but later realised that perhaps it wasn't so obvious.

I then figure that my two options to introduce a change in the table 
layout is either to 

  1) (hot) load a new version of my table_update module into all servers
     and then invoke the transformation function in some way. I guess 
     this is what I would get if I used proper OTP release handling.
  2) stop all my nodes (during a service window), upgrading them and 
     then starting them again.

The second alternative is much more within reach for me at the moment, 
but does lead to one of two show-stoppers. Either the new code is not 
available on all the nodes, or the update can't be performed because 
not all nodes are running. My question is therefor if there is a way 
around these show-stoppers?

/Fredrik



More information about the erlang-questions mailing list