Including Mnesia in a supervision tree?

Vance Shipley <>
Sat Feb 7 07:02:31 CET 2004


Shawn,

You should create a release.  Create a release resource file
like in this example file named myrelease.rel:

   {release, {"releasename", "0.1"}, {erts, "5.3.1"},
        [{kernel, "2.9.2"},
        {stdlib, "1.12.3"},
        {sasl, "1.10"},
        {mnesia, "4.1.6"},
        {eva, "2.0.4"},
        {myapp, "0.1"}]}.

Generate a boot script:

1> systools:make_script("myrelease").

This creates a boot script and a binary:

   myrelease.script
   myrelease.boot

If you now start the emulator with:

$ erl -boot myrelease.boot

It causes the applications to be started in the order given in
the myrelease.rel file. 

To use this you should create a release package to be installed
on the target system:

2> systools:make_tar("myrelease").

Then follow the release handling instructions to build an 
embedded system which will start everything up as it should 
be automatically. (*)

	-Vance

(*) http://www.erlang.org/ml-archive/erlang-questions/200010/msg00052.html


On Fri, Feb 06, 2004 at 10:26:54PM -0500, Shawn Pearce wrote:

}  I've been beating my head against this for a little bit, and dug
}  around in the docs, searched the mailing list archives (as I'm sure
}  this has been covered):
}  
}  How should I include mnesia in my application supervision tree?
}  
}  I tried putting mnesia into the included_applications list in my
}  application spec record.  This caused my application to startup, but
}  mnesia was not started automatically by the application module.
}  
}  So currently my supervisor process spawns mnesia_sup as a supervisor
}  child, along with my other child processes, with a one_for_all restart
}  policy.  This seems to work just fine, but I wonder if its really
}  the best strategy.
}  
}  -- 
}  Shawn.



More information about the erlang-questions mailing list