<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/mnesia/src, branch maint-17</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Merge branch 'dgud/testcasecuddle' into maint</title>
<updated>2015-03-11T14:55:35+00:00</updated>
<author>
<name>Dan Gudmundsson</name>
<email>dgud@erlang.org</email>
</author>
<published>2015-03-11T14:55:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=47c44f3de3d5bf4251c35cf49474c3e29ad2933b'/>
<id>47c44f3de3d5bf4251c35cf49474c3e29ad2933b</id>
<content type='text'>
* dgud/testcasecuddle:
  mnesia: Flush late messages
  Add Debug info
  mnesia: better debug info when tests fail
  mnesia: Ensure tables are loaded before testing them
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* dgud/testcasecuddle:
  mnesia: Flush late messages
  Add Debug info
  mnesia: better debug info when tests fail
  mnesia: Ensure tables are loaded before testing them
</pre>
</div>
</content>
</entry>
<entry>
<title>mnesia: Flush late messages</title>
<updated>2015-02-23T12:24:05+00:00</updated>
<author>
<name>Dan Gudmundsson</name>
<email>dgud@erlang.org</email>
</author>
<published>2015-02-23T12:24:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=1f4075e70f7511b8dedbb75344478fa27cbe6495'/>
<id>1f4075e70f7511b8dedbb75344478fa27cbe6495</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>mnesia: Check nodes after protocol negotiation</title>
<updated>2015-02-10T13:42:24+00:00</updated>
<author>
<name>Jean-Sébastien Pédron</name>
<email>jean-sebastien.pedron@dumbbell.fr</email>
</author>
<published>2014-12-11T17:24:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=70c4db1d0b57363e33a04c935b653092f68cb91a'/>
<id>70c4db1d0b57363e33a04c935b653092f68cb91a</id>
<content type='text'>
During Mnesia startup, after protocol negotiation, the list of connected
nodes is written to "recover_nodes". This list is later used to merge
the schema.

If Mnesia was stopped on a remote node between the protocol negotiation
and the moment the list is stored in "recover_nodes", the remote node
is still considered running: the value of "recover_nodes" stored during
mnesia_down/1 is overwritten. Therefore, this node may be used to
acquire a write lock on the schema in order to perform the merge. In
this case, the remote node never answers to the lock request and Mnesia
hang forever (application:start(mnesia) never returns).

To fix the problem, we check the list one last time and remove from it
all nodes where Mnesia is stopped. And because there is still a chance
for missing mnesia_down event, handle_cast({mnesia_down, ...}, ...)
writes to recover_nodes again, in addition to mnesia_down/1.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
During Mnesia startup, after protocol negotiation, the list of connected
nodes is written to "recover_nodes". This list is later used to merge
the schema.

If Mnesia was stopped on a remote node between the protocol negotiation
and the moment the list is stored in "recover_nodes", the remote node
is still considered running: the value of "recover_nodes" stored during
mnesia_down/1 is overwritten. Therefore, this node may be used to
acquire a write lock on the schema in order to perform the merge. In
this case, the remote node never answers to the lock request and Mnesia
hang forever (application:start(mnesia) never returns).

To fix the problem, we check the list one last time and remove from it
all nodes where Mnesia is stopped. And because there is still a chance
for missing mnesia_down event, handle_cast({mnesia_down, ...}, ...)
writes to recover_nodes again, in addition to mnesia_down/1.
</pre>
</div>
</content>
</entry>
<entry>
<title>mnesia: Fix match_object bug</title>
<updated>2014-11-12T13:51:21+00:00</updated>
<author>
<name>Dan Gudmundsson</name>
<email>dgud@erlang.org</email>
</author>
<published>2014-11-12T13:44:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=dff52d0b26869caab886c82f71f0b11cbcdd33b1'/>
<id>dff52d0b26869caab886c82f71f0b11cbcdd33b1</id>
<content type='text'>
match_object returned wrong objects when matching on non key fields
and updates in the same transaction had been performed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
match_object returned wrong objects when matching on non key fields
and updates in the same transaction had been performed.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'maint-17' into maint</title>
<updated>2014-09-01T08:27:16+00:00</updated>
<author>
<name>Marcus Arendt</name>
<email>marcus@erlang.org</email>
</author>
<published>2014-09-01T08:27:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=48f7c246fa044a5a995e3b8efcb10face0b2b201'/>
<id>48f7c246fa044a5a995e3b8efcb10face0b2b201</id>
<content type='text'>
Conflicts:
	OTP_VERSION
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	OTP_VERSION
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid timing issue in schema transaction when node is stopping</title>
<updated>2014-08-28T07:18:45+00:00</updated>
<author>
<name>Dan Gudmundsson</name>
<email>dgud@erlang.org</email>
</author>
<published>2014-08-27T07:00:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=6ba2b5402c3dea5b765034436ae9e6b3ca4e2ce5'/>
<id>6ba2b5402c3dea5b765034436ae9e6b3ca4e2ce5</id>
<content type='text'>
By doing an abort, the create_table can be restarted
if a node go down during the transaction.

{badarg,
   [{erlang,link,[undefined],[]},
    {mnesia_controller,
        wait_for_schema_commit_lock,0,
	       [{file,"mnesia_controller.erl"},
         {line,303}]},
    {mnesia_schema,prepare_commit,3,
        [{file,"mnesia_schema.erl"},
         {line,1838}]},
    {mnesia_tm,commit_participant,6,
        [{file,"mnesia_tm.erl"},
         {line,1669}]}]}}},
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
By doing an abort, the create_table can be restarted
if a node go down during the transaction.

{badarg,
   [{erlang,link,[undefined],[]},
    {mnesia_controller,
        wait_for_schema_commit_lock,0,
	       [{file,"mnesia_controller.erl"},
         {line,303}]},
    {mnesia_schema,prepare_commit,3,
        [{file,"mnesia_schema.erl"},
         {line,1838}]},
    {mnesia_tm,commit_participant,6,
        [{file,"mnesia_tm.erl"},
         {line,1669}]}]}}},
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix misspellings of 'another'</title>
<updated>2014-08-25T11:18:52+00:00</updated>
<author>
<name>Tuncer Ayaz</name>
<email>tuncer.ayaz@gmail.com</email>
</author>
<published>2014-08-24T17:05:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=63d7fbe5cdf2b714500467b771a237e9ec11aaa8'/>
<id>63d7fbe5cdf2b714500467b771a237e9ec11aaa8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'nox/reedr-logging/OTP-12115' into maint</title>
<updated>2014-08-21T14:29:15+00:00</updated>
<author>
<name>Lukas Larsson</name>
<email>lukas@erlang-solutions.com</email>
</author>
<published>2014-08-21T14:29:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=cffe162d9ddce58b2aaf71a102f3b6c6738a2029'/>
<id>cffe162d9ddce58b2aaf71a102f3b6c6738a2029</id>
<content type='text'>
* nox/reedr-logging/OTP-12115:
  Add number of entries to mnesia copy debug message
  Add thread index to allocator enomem dump slogan
  Add run queue index to process dump info
  Add missing error string to syslog logging in epmd
  Demote rare debug slogan of message discarding to debug build
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* nox/reedr-logging/OTP-12115:
  Add number of entries to mnesia copy debug message
  Add thread index to allocator enomem dump slogan
  Add run queue index to process dump info
  Add missing error string to syslog logging in epmd
  Demote rare debug slogan of message discarding to debug build
</pre>
</div>
</content>
</entry>
<entry>
<title>Add number of entries to mnesia copy debug message</title>
<updated>2014-08-14T15:07:59+00:00</updated>
<author>
<name>Rick Reed</name>
<email>rr@whatsapp.com</email>
</author>
<published>2013-07-24T23:51:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=baad9722c84ecb41d2278ac9912d30e42c3b4409'/>
<id>baad9722c84ecb41d2278ac9912d30e42c3b4409</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'gorillainduction/improve_mnesia_locker_complexity' into maint</title>
<updated>2014-06-16T07:26:22+00:00</updated>
<author>
<name>Henrik Nord</name>
<email>henrik@erlang.org</email>
</author>
<published>2014-06-16T07:26:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=6c504f08ae5c35d2b86b31a5878d40d7957a3db8'/>
<id>6c504f08ae5c35d2b86b31a5878d40d7957a3db8</id>
<content type='text'>
* gorillainduction/improve_mnesia_locker_complexity:
  Optimize tid lock table

OTP-11981
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gorillainduction/improve_mnesia_locker_complexity:
  Optimize tid lock table

OTP-11981
</pre>
</div>
</content>
</entry>
</feed>
