<?xml version="1.0" encoding="UTF-8"?>
<commits type="array">
  <commit>
    <parents type="array">
      <parent>
        <id>d49576b209df6d862670e2f8ca978fd706a5d1d3</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/84c7965524f053badee8cb17577c2e3d22af701d</url>
    <id>84c7965524f053badee8cb17577c2e3d22af701d</id>
    <committed-date>2009-12-17T10:17:52-08:00</committed-date>
    <authored-date>2009-12-17T10:17:52-08:00</authored-date>
    <message>custom/lua, removed ref to non-existent dir</message>
    <tree>209d1b086a7b2b7ee9770167a38b914ecc16edd9</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>e2b7e01a4aa279f30e72e8cb9469acf7b81ce8e5</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/d49576b209df6d862670e2f8ca978fd706a5d1d3</url>
    <id>d49576b209df6d862670e2f8ca978fd706a5d1d3</id>
    <committed-date>2009-12-17T07:53:17-08:00</committed-date>
    <authored-date>2009-12-17T07:53:17-08:00</authored-date>
    <message>Bump libNet to 0.4.0

Changes in file transfer interface</message>
    <tree>bc6f0f31fd7143a072bc1dab71dc4485d577b789</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>7f05a87642d5a501830dd99a89e3fa5ed3808462</id>
      </parent>
    </parents>
    <author>
      <name>Dmitry Osmakov</name>
      <email>osmakov@yandex-team.ru</email>
    </author>
    <url>http://github.com/ptr/complement/commit/e2b7e01a4aa279f30e72e8cb9469acf7b81ce8e5</url>
    <id>e2b7e01a4aa279f30e72e8cb9469acf7b81ce8e5</id>
    <committed-date>2009-12-17T07:48:36-08:00</committed-date>
    <authored-date>2009-12-17T05:55:31-08:00</authored-date>
    <message>Make watcher on single file send session

Delete global watcher on &quot;file copied&quot; events,
make watcher on single session instead.
Watch application of the feature in net/ut &quot;file transfer core&quot; test.</message>
    <tree>84a1ac3b9102531e76d504a1d96ba7b13eb9aa59</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>10ecae3015f13b0c1d20b382cf7404b2ba3b68fb</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/7f05a87642d5a501830dd99a89e3fa5ed3808462</url>
    <id>7f05a87642d5a501830dd99a89e3fa5ed3808462</id>
    <committed-date>2009-12-17T05:50:58-08:00</committed-date>
    <authored-date>2009-12-17T05:50:58-08:00</authored-date>
    <message>Build lua as customized external

Separate build for liblua (without readline),
lua (with readline) and luac (without readline,
static link with liblua).

I'm fail to build luac with dynamic linkage
with liblua.</message>
    <tree>175efec3485d04befce6370becad473b4e76426a</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>40f27564a265a1d3e17b4a6d7e927a9c12d786d5</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/10ecae3015f13b0c1d20b382cf7404b2ba3b68fb</url>
    <id>10ecae3015f13b0c1d20b382cf7404b2ba3b68fb</id>
    <committed-date>2009-12-16T06:29:20-08:00</committed-date>
    <authored-date>2009-12-16T06:29:20-08:00</authored-date>
    <message>sockstream: fix factor for timeouts for open and write

Timeout in poll in milliseconds, our timeouts expressed
in nanoseconds, i.e. factor should be 1/1000000, not
1/1000.

libsockios release 2.6.8.</message>
    <tree>828192de0cf7faa61c309b4263d1d2e67eed3782</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>8fc1a607be8a4fe78240f5fa7134984299d8976e</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/40f27564a265a1d3e17b4a6d7e927a9c12d786d5</url>
    <id>40f27564a265a1d3e17b4a6d7e927a9c12d786d5</id>
    <committed-date>2009-12-15T06:28:21-08:00</committed-date>
    <authored-date>2009-12-15T06:06:58-08:00</authored-date>
    <message>Janus: fix delayed events processing

vs() method can't push into delayed queue events,
based on zero of virtual group size: vs() used
for join process too. It can't check
lock_addr != stem::badaddr because there are
cases when node is locked but lock address not set
(during local recovery, for example). So, check
isState(VS_ST_LOCKED).

Delayed events should be processed after lock
removed, in the same order as ones arrived.

libjanus 0.11.6.</message>
    <tree>6ee2b8347fbaa0f151b799dfc2be3afb8d5c9c2e</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>1e68955dda24ea356a47980ba8809db3857b2ee8</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/8fc1a607be8a4fe78240f5fa7134984299d8976e</url>
    <id>8fc1a607be8a4fe78240f5fa7134984299d8976e</id>
    <committed-date>2009-12-14T10:08:52-08:00</committed-date>
    <authored-date>2009-12-14T09:53:32-08:00</authored-date>
    <message>Janus: vs() should check VS_ST_LOCKED state

Method vs() should check VS_ST_LOCKED state, because
otherwise we can accept and process event _before_
join to virtual synchrony group. Check
lock_addr != stem::badaddr not enough, because
during local recovery process lock_addr remains
stem::badaddr.

Another variant is check vs_group_size() != 0
(i.e. 'object not join to any group').

vs() method return zero on sucecss, or non-zero
if event is delayed.</message>
    <tree>a8862b07f33a5e82777b20ea628d6eb9f5f56cc6</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>ceebef4af458152c3b9408ee023b5ed817521387</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/1e68955dda24ea356a47980ba8809db3857b2ee8</url>
    <id>1e68955dda24ea356a47980ba8809db3857b2ee8</id>
    <committed-date>2009-12-14T08:32:14-08:00</committed-date>
    <authored-date>2009-12-14T08:32:14-08:00</authored-date>
    <message>janus: set vs flag for event after vs_event_origin

In the vs() method set stem::__Event_Base::vs flag
for event after vs_event_origin call---give chance
to distinguish original event from derivated one
during recovery from history.

libjanus revision 0.11.5.</message>
    <tree>79280d8efcefb9a127a5205cdda0c5432a2dc8ce</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>b04ec7c0649a5203cf5cf06d5a57a472f6cea974</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/ceebef4af458152c3b9408ee023b5ed817521387</url>
    <id>ceebef4af458152c3b9408ee023b5ed817521387</id>
    <committed-date>2009-12-02T09:30:59-08:00</committed-date>
    <authored-date>2009-12-02T09:30:59-08:00</authored-date>
    <message>sockios: eliminate few warnings for -Wall for gcc

Unused function parameter, unused var, signed/unsigned
conversion. Cosmetic, no functionality was changed.</message>
    <tree>fae23d32324c76fd47eb437602581e7d71926e22</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>051d623c3c056c5e12f5e433ea2efd23d27a0302</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/b04ec7c0649a5203cf5cf06d5a57a472f6cea974</url>
    <id>b04ec7c0649a5203cf5cf06d5a57a472f6cea974</id>
    <committed-date>2009-11-23T12:27:22-08:00</committed-date>
    <authored-date>2009-11-23T12:27:22-08:00</authored-date>
    <message>Janus: comments and sample related to recovery

During forwarding (for sibling node recovery) it's useful
to set stem::__Event_Base::vs | stem::__Event_Base::vs_join.

stem::__Event_Base::vs is set to avoid forwarding 'recovery' event
to other group members;

stem::__Event_Base::vs_join is set to distinguish event
as come during recovery and record it (may be via vs_event_derivative).</message>
    <tree>acfc65c1a8408c380551e8e267bf481837b50bb3</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>11554e9a7d9185cbdf8d6c2afcf8ee89d975b3f9</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/051d623c3c056c5e12f5e433ea2efd23d27a0302</url>
    <id>051d623c3c056c5e12f5e433ea2efd23d27a0302</id>
    <committed-date>2009-11-20T05:51:12-08:00</committed-date>
    <authored-date>2009-11-20T05:51:12-08:00</authored-date>
    <message>workaround for &lt;cstdint&gt; for gcc &lt; 4.3 &amp;&amp; no STLport

libstdc++ in gcc before 4.3 hasn't &lt;cstdint&gt;</message>
    <tree>f71975f2505b9cbdbf399b58250964919d528945</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>a64b7ea0106b99faa29a5197c76136348142d28f</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/11554e9a7d9185cbdf8d6c2afcf8ee89d975b3f9</url>
    <id>11554e9a7d9185cbdf8d6c2afcf8ee89d975b3f9</id>
    <committed-date>2009-11-18T05:46:07-08:00</committed-date>
    <authored-date>2009-11-18T05:46:07-08:00</authored-date>
    <message>Janus: special case for unlock for group of size 2

Return back: if group of size 2, then absent of
conformation from single node may block process.

So, in case of 2-nodes group and timeout occure,
remove lock (and node that not conform lock).

This may lead to group splitting.</message>
    <tree>33097096022dbf147ba084cd92329b80261143a3</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>2a003edc100390ec680a9eb8cc86f3adb638a88b</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/a64b7ea0106b99faa29a5197c76136348142d28f</url>
    <id>a64b7ea0106b99faa29a5197c76136348142d28f</id>
    <committed-date>2009-11-16T01:53:40-08:00</committed-date>
    <authored-date>2009-11-16T01:53:40-08:00</authored-date>
    <message>Janus: 'last will' event; queue for delayed events

basic_vs object make attempt to notify some group member about
own end-of-life. On such notification basic_vs [that remain in group]
initiate 'view update'. This view update faster then fail detection,
because not try to wait responce from exited object and don't wait
before other 'view update' or flush message occur.

I.e. this help to keep vs group in actual state, if it possible
(in normal workflow).

'Delayed queue' was renamed to 'order violated events queue'.

Was added 'delayed queue'---events that wait something like
'view update' to departure.

libjanus revision 0.11.4.</message>
    <tree>362c8669f9e081ac0c8e67832b4d7e3bbe72c069</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>a73cc35d3daacca14741c8f6c5058d60f3e06697</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/2a003edc100390ec680a9eb8cc86f3adb638a88b</url>
    <id>2a003edc100390ec680a9eb8cc86f3adb638a88b</id>
    <committed-date>2009-11-13T09:40:57-08:00</committed-date>
    <authored-date>2009-11-13T09:40:57-08:00</authored-date>
    <message>Janus: lock view/update view fixes

Fix error in conditions during process
view lock and view update.

i. Note, that comparison of group members and lock
responces should take into account scenario:

  1. node exit (died), other nodes wasn't informed
  2. new node join

During view lock virtual time table has entries for
both 1 and 2.

ii. basic_vs's ctors with explicit address removed,
due to possible problem:

  1. node died
  2. node recovered with same address

Virtual synchrony group members may have trouble
with detection in case of i)---remove and add
same address within single operation.
[looks other case may be processed, thanks vs_join].

Special case for virtual synchrony group of size 2
in basic_vs::vs_lock_safety removed---it process
in common case.</message>
    <tree>292fa3ec05ad7ca096388942e6d32258a2c567bb</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>091bb70591dfbe1cf08a2810d85d976d8048e500</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/a73cc35d3daacca14741c8f6c5058d60f3e06697</url>
    <id>a73cc35d3daacca14741c8f6c5058d60f3e06697</id>
    <committed-date>2009-11-11T12:58:40-08:00</committed-date>
    <authored-date>2009-11-11T12:58:40-08:00</authored-date>
    <message>Janus: special case for vs lock recovery

When vs view lock timeout occur, and
only two members in group (one not respond to lock request),
treat it as fail detection (trust to view change originator).

Note: this may lead to a problem in case of network split.</message>
    <tree>163362ecdac7fed1791bce90ca410dc72e5019f7</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>972b86cb5210832ac9ea87f5686e3825ad9e4aef</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/091bb70591dfbe1cf08a2810d85d976d8048e500</url>
    <id>091bb70591dfbe1cf08a2810d85d976d8048e500</id>
    <committed-date>2009-11-10T06:18:10-08:00</committed-date>
    <authored-date>2009-11-10T06:18:10-08:00</authored-date>
    <message>Janus: send/forward event to virtual synchrony group members

send_to_vsg and forward_to_vsg functions, that send/forward
event to all current virtual synchrony group members, except
self.

This functions use info about virtual synchronity group members,
but not influence virtual time.

libjanus revision 0.11.3.</message>
    <tree>256f9cdb4d16434c9bd1a3b960bb664040a680b8</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>d811f7e285047566a9b1e2dd586729402d52fb01</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/972b86cb5210832ac9ea87f5686e3825ad9e4aef</url>
    <id>972b86cb5210832ac9ea87f5686e3825ad9e4aef</id>
    <committed-date>2009-11-09T23:48:40-08:00</committed-date>
    <authored-date>2009-11-09T23:48:40-08:00</authored-date>
    <message>Janus: vs_join(stem_addr) return zero in special case

int basic_vs::vs_join( const stem::addr_type&amp; a )
return zero (success) in special case of a stem::badaddr,
i.e. in case of VS group founder.</message>
    <tree>77e01e999478762dacee10330324fc7c6017e9ab</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>eb965f8e1f280ce244417f05eec562a7a521a2b4</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/d811f7e285047566a9b1e2dd586729402d52fb01</url>
    <id>d811f7e285047566a9b1e2dd586729402d52fb01</id>
    <committed-date>2009-11-09T23:18:54-08:00</committed-date>
    <authored-date>2009-11-09T23:18:54-08:00</authored-date>
    <message>Janus: vs_join return status

vs_join return zero if target address accessible, and non-zero
code otherwise (should be completed with error_code and error category,
see system_error)

libjanus revision 0.11.2.</message>
    <tree>ce17e9bf6f86924d1710ce8fb7d99f18b64fda69</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>5034f085837b8622987268f2e09f86f5703392ce</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/eb965f8e1f280ce244417f05eec562a7a521a2b4</url>
    <id>eb965f8e1f280ce244417f05eec562a7a521a2b4</id>
    <committed-date>2009-11-09T02:01:40-08:00</committed-date>
    <authored-date>2009-11-09T02:01:40-08:00</authored-date>
    <message>ftransfer: special address is stem::badaddr

libNet release 0.3.2.</message>
    <tree>6f21a9e0a638292bc3fe3f803e12c9aa3558fe2c</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>01492a1508601c082bdd6514e944520047712035</id>
      </parent>
    </parents>
    <author>
      <name>Dmitry Osmakov</name>
      <email>d.osmakov@gmail.com</email>
    </author>
    <url>http://github.com/ptr/complement/commit/5034f085837b8622987268f2e09f86f5703392ce</url>
    <id>5034f085837b8622987268f2e09f86f5703392ce</id>
    <committed-date>2009-11-09T01:55:40-08:00</committed-date>
    <authored-date>2009-11-06T09:10:49-08:00</authored-date>
    <message>ftransfer, notification on finish

Added possibility to subscribe to events like: file copied(file transfer
over)</message>
    <tree>aded359112ecd400a6fb837482232d926f9b2672</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>cba636b420f0c37a042b97f54c2dbce1b57ad3f8</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/01492a1508601c082bdd6514e944520047712035</url>
    <id>01492a1508601c082bdd6514e944520047712035</id>
    <committed-date>2009-10-29T04:58:42-07:00</committed-date>
    <authored-date>2009-10-29T04:53:23-07:00</authored-date>
    <message>Janus: added vs_join( ... , const sockaddr_in&amp; )

Similar to vs_join( host, port ) or vs_join( addr, host, port ):
take default StEM object (specified object in second variant)
at ip/port sockaddr_in and try to join to group via this object.</message>
    <tree>2433290e50449c571bfc8987a18f9766e3946cd9</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>c933fcaf2b8a808ac4701b67549f488cc1f04845</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/cba636b420f0c37a042b97f54c2dbce1b57ad3f8</url>
    <id>cba636b420f0c37a042b97f54c2dbce1b57ad3f8</id>
    <committed-date>2009-10-29T01:08:48-07:00</committed-date>
    <authored-date>2009-10-29T01:08:48-07:00</authored-date>
    <message>Janus: vs_group_size method

vs_group_size return group size (0, if not in group at all).
1, if single in group. It may be used to check, whether
object in group or not.</message>
    <tree>d00c995c2bca48b7f37a50e1f213f3ac70fe8e93</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>7f32fc5e9cf7ebb6bf7cb330820088ae34338480</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/c933fcaf2b8a808ac4701b67549f488cc1f04845</url>
    <id>c933fcaf2b8a808ac4701b67549f488cc1f04845</id>
    <committed-date>2009-10-27T01:12:31-07:00</committed-date>
    <authored-date>2009-10-27T01:12:31-07:00</authored-date>
    <message>Custom build Berkeley DB 4.8.24

Ref: http://download-east.oracle.com/berkeley-db/db-4.8.24.tar.gz</message>
    <tree>488f9f1ce504c1f56f8232ae0c8b64ba08204388</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>06b4f603881733c13de7b587a5dec13483739f4b</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/7f32fc5e9cf7ebb6bf7cb330820088ae34338480</url>
    <id>7f32fc5e9cf7ebb6bf7cb330820088ae34338480</id>
    <committed-date>2009-10-22T08:34:19-07:00</committed-date>
    <authored-date>2009-10-22T08:34:19-07:00</authored-date>
    <message>Janus: detect node fail when process lock ack

Node treated as failed when lock ack not received within specified
timeout. Now this happens when accept new member
into group or during flush message processing.

VS_LEAVE removed at all: vs group modification
will be	done when node fail will be detected.
In other cases we has no interest for special
processing.

libjanus revision 0.11.0.</message>
    <tree>a8085e2e15ce5f70becfd2ba75fa56bc6ceb3c27</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>a0306e9e28a5cccedd6638c8d3444d8c4709d08d</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/06b4f603881733c13de7b587a5dec13483739f4b</url>
    <id>06b4f603881733c13de7b587a5dec13483739f4b</id>
    <committed-date>2009-10-22T07:24:35-07:00</committed-date>
    <authored-date>2009-10-22T07:24:35-07:00</authored-date>
    <message>StEM: object may hasn't any StEM address

StEM's object may hasn't any StEM address but
still processed by EvManager (for example
in process of Unsubscribe).

Problem may be illustrated by following crash:

  6 process 30575  0xb7f2f424 in __kernel_vsyscall ()
  5 process 30572  0xb7f2f424 in __kernel_vsyscall ()
  4 process 30574  0xb7f2f424 in __kernel_vsyscall ()
  3 process 30576  0xb7f2f424 in __kernel_vsyscall ()
  2 process 30502  0xb7f2f424 in __kernel_vsyscall ()
* 1 process 30573  0xb7e7534f in stem::EvManager::Send (this=0x9cc8d98,
    e=@0xb729b31c) at EvManager.cc:490

(gdb) bt
 #0  0xb7e7534f in stem::EvManager::Send (this=0x9cc8d98, e=@0xb729b31c)
     at EvManager.cc:490
 #1  0xb7e77356 in stem::EvManager::_Dispatch_sub (p=
       {mgr = 0x9cc8d98, q = 0x9cc9048}) at EvManager.cc:240
 #2  0xb7e84507 in stlp_std::tr2::basic_thread&lt;0u, 0u&gt;::_call&lt;void (*)(stem::EvManager::nest_ref), stem::EvManager::nest_ref&gt; (p=0x9cc90a0)
     at ../../include/mt/thread:479
 #3  0xb7cb74b1 in start_thread () from /lib/libpthread.so.0
 #4  0xb7c3ab1e in clone () from /lib/libc.so.6

    for ( ; ; ) {
      {
        lock_guard&lt;mutex&gt; lk(_lock_heap);
        // any object can't be removed from heap within lk scope
        local_heap_type::iterator i = heap.find( e.dest() );
        if ( i == heap.end() ) { // destination not found
          throw invalid_argument( string(&quot;address unknown&quot;) );
        }
490:    object = i-&gt;second.top().second; // target object
        obj_locked = !object-&gt;_theHistory_lock.try_lock();
        // if lock object here failed, then something already lock it,
        // possible during attempt to unsubscribe and destroy;
        // don't lock it, unlock heap and repeate search object:
        // may be it already removed
      }
    ...

You see that _lock_heap within loop, so _lock_heap within
Unsubscribe not guarantee that addresses queue (i-&gt;second) not empty
already.

[Switching to thread 2 (process 30502)]#0  0xb7f2f424 in __kernel_vsyscall ()
(gdb) bt
 #0  0xb7f2f424 in __kernel_vsyscall ()
 #1  0xb7cbe202 in __lll_lock_wait () from /lib/libpthread.so.0
 #2  0xb7cb9a0f in _L_lock_56 () from /lib/libpthread.so.0
 #3  0xb7cb93fa in pthread_mutex_lock () from /lib/libpthread.so.0
 #4  0x08090a4c in stlp_std::tr2::__mutex&lt;false, false&gt;::lock (this=0x9cc8e40)
     at ../../../include/mt/mutex:226
 #5  0x08090add in lock_guard (this=0xbf84c930, point=@0x9cc8e40)
     at ../../../include/mt/mutex:678
 #6  0xb7e76867 in stem::EvManager::Unsubscribe (this=0x9cc8d98,
     id=@0xb4900ce8, obj=0xb49012d8) at EvManager.cc:339
 #7  0xb7e65f30 in stem::EventHandler::solitary (this=0xb49012d8)
     at _EventHandler.cc:290
 #8  0xb7e66a5e in ~EventHandler (this=0xb49012d8) at _EventHandler.cc:256
 #9  0xb7e8d0ee in ~Cron (this=0xb49012d8) at Cron.cc:79
 #10 0xb7dcdfd0 in janus::basic_vs::Init::_guard (direction=0) at vtime.cc:378
 #11 0xb7dce02e in ~Init (this=0xb7e047c0) at vtime.cc:388
 #12 0xb7dcebbd in ~basic_vs (this=0xbf84d230) at vtime.cc:426
 #13 0x080916c2 in ~VTM_one_group_advanced_handler (this=0xbf84d230)
     at OneGroup-State.cc:123
 #14 0x080958d7 in janus::vtime_operations::VT_one_group_late_replay (
     this=0xbf84d99f, __exam_ts=0xbf84d8b8, __exam_counter=0)
     at OneGroup-State.cc:452
 #15 0x08079748 in exam::detail::method_invoker&lt;janus::vtime_operations&gt;::operator() (this=0x9cc8b5c, ts=0xbf84d8b8, count=0)
     at ../../../include/exam/suite.h:96
 #16 0x0807976c in exam::detail::call_impl_t&lt;exam::detail::method_invoker&lt;janus::vtime_operations&gt; &gt;::invoke (this=0x9cc8b58, s=0xbf84d8b8, count=0)
     at ../../../include/exam/suite.h:55
 #17 0xb7e1b752 in exam::detail::call::operator() (this=0x9cc8b58,
     ts=0xbf84d8b8, count=0) at ../../include/exam/suite.h:120
 #18 0xb7e1b7e9 in exam::detail::test_case::operator() (this=0x9cc8b58,
     ts=0xbf84d8b8, count=0) at ../../include/exam/suite.h:139
 #19 0xb7e19b84 in exam::test_suite::run_test_case (this=0xbf84d8b8, v=10, n=0)
     at suite.cc:255
 #20 0xb7e1a670 in exam::test_suite::girdle (this=0xbf84d8b8, start=0)
     at suite.cc:103
 #21 0x08080ff1 in exam::test_suite::girdle (this=0xbf84d8b8)
     at ../../../include/exam/suite.h:198
 #22 0x0807717a in main (argc=1, argv=0xbf84dc34) at unit_test.cc:91

libstem revision 5.3.5.</message>
    <tree>4b450e21f13ec3bd78830b1f520ba18ec140c671</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>66a327d7b6eadb8cf9a22d2ba9805527da81ccee</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/a0306e9e28a5cccedd6638c8d3444d8c4709d08d</url>
    <id>a0306e9e28a5cccedd6638c8d3444d8c4709d08d</id>
    <committed-date>2009-10-19T07:24:13-07:00</committed-date>
    <authored-date>2009-10-19T07:24:13-07:00</authored-date>
    <message>Janus: before delete NetTransportMgr, do close and join</message>
    <tree>c96a980654c23cf97a9c3871d51b4bb3cf653af6</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>810d9e8b7c2958fb1cc64af19fd4e1b6b94a3ae7</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/66a327d7b6eadb8cf9a22d2ba9805527da81ccee</url>
    <id>66a327d7b6eadb8cf9a22d2ba9805527da81ccee</id>
    <committed-date>2009-10-19T07:20:21-07:00</committed-date>
    <authored-date>2009-10-19T07:20:21-07:00</authored-date>
    <message>stem: remove Net* object from manager's table before close channel

Do 'solitary()' [remove object from event manager's tables]
before close associated sockstream.</message>
    <tree>565d16212c337fc49a17d137b3b87163ce970228</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>1ad7595650fa1d27833adc6cee46d71a8609491b</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/810d9e8b7c2958fb1cc64af19fd4e1b6b94a3ae7</url>
    <id>810d9e8b7c2958fb1cc64af19fd4e1b6b94a3ae7</id>
    <committed-date>2009-10-19T07:19:26-07:00</committed-date>
    <authored-date>2009-10-19T07:19:26-07:00</authored-date>
    <message>Add 'janus' in common build</message>
    <tree>67720cacd8e2d37c6d4b2a7f9d2357487349ac5d</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>7739b552be3f6b4d788c6b03061b12b8462d431f</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/1ad7595650fa1d27833adc6cee46d71a8609491b</url>
    <id>1ad7595650fa1d27833adc6cee46d71a8609491b</id>
    <committed-date>2009-10-16T04:42:05-07:00</committed-date>
    <authored-date>2009-10-16T04:42:05-07:00</authored-date>
    <message>Janus: interface to join to default remote object

Connect to remote server and try to join to group
via 'default' object address. This useful, if
address unknown, but known that VS node is a default
StEM object in process.

libjanus release 0.10.1.</message>
    <tree>d8aeaa03ff471bcc990ad7da7d72fd041f503632</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>4c496b2e155feb1abb830668217f899dcc7b360f</id>
      </parent>
    </parents>
    <author>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </author>
    <url>http://github.com/ptr/complement/commit/7739b552be3f6b4d788c6b03061b12b8462d431f</url>
    <id>7739b552be3f6b4d788c6b03061b12b8462d431f</id>
    <committed-date>2009-10-16T04:40:46-07:00</committed-date>
    <authored-date>2009-10-16T04:40:46-07:00</authored-date>
    <message>Sample: replay whole gistory, if reference 'unknown'</message>
    <tree>8439307b99cd5c0bc45a8279c715472af18a5ef0</tree>
    <committer>
      <name>Petr Ovtchenkov</name>
      <email>ptr@void-ptr.info</email>
    </committer>
  </commit>
</commits>
