[zeromq-dev] Java API is not notifed of C++ assert failures.

Martin Sustrik sustrik at fastmq.com
Thu Mar 12 18:12:17 CET 2009


I'm not a Win32 expert, but the assert should crash the whole process 
rather then allowing Java to continue. We'll investigate the issue.

As for your algorithm for determining the primary server, it's pretty 
dangerous. Consider the case where your enterprise grows rapidly and 
you'll have to manage large set of services all over the world. In such 
case using simple zmq_server to keep track of locations of global 
objects won't do. You would need something more enterprisey, possibly 
the Active Directory or LDAP. If so, your database will be distributed 
over different geographical locations and possibly temporarily 
dissynchronised. That would in turn allow 2 instances to become primary 
incidentally and thus introduce the split-brain syndrome.

In short, automatic selection of primary is a complex problem studied 
extensively by distributed algorithm scientists and as far as I am aware 
it has no generic solution. My advice would be to select primary by hand 
if at all possible.


Vladimir & Mihaela wrote:
> Hi,
> In the Java API I am trying to implement a schema where the first process
> that comes up becomes primary and all the rest become secondary.
> Every process that comes up will try to create a global object with a global
> name. If that process receives an error (name collision) then it will
> conclude that it is secondary and will create it's local counterpart object
> instead.
> When I start the second instance of my process and it tries to create a
> global object that already exists, I get a Windows 'assertion failed' popup.
> However, Java still thinks that the operation succeeded.
> Is there a way to transfer these exceptions to Java?
> Thanks,
> Vladimir
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev

More information about the zeromq-dev mailing list