ignite-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yakov Zhdanov <yzhda...@apache.org>
Subject Re: Messaging Reliability
Date Mon, 04 Apr 2016 15:15:11 GMT
I think javadocs are not 100% correct. I am pretty sure exception will be
thrown if connection to some node cannot be established, but if node A
already have active connections to all nodes you want to send message to
then message will be put to per-connection queues and will be sent in async
manner.

I think you can introduce new method that waits until message is acked from
all nodes or throws exception if any of the target nodes leave.

See:
org.apache.ignite.internal.managers.communication.GridIoManager#send(org.apache.ignite.cluster.ClusterNode,
java.lang.Object, int,
org.apache.ignite.plugin.extensions.communication.Message, byte, boolean,
long, boolean,
org.apache.ignite.lang.IgniteInClosure<org.apache.ignite.IgniteException>)
org.apache.ignite.internal.IgniteMessagingImpl


--Yakov

2016-04-04 13:59 GMT+03:00 Hausmann Philipp <philipp.hausmann@fhnw.ch>:

> Thank you, that already helps me a lot!
>
> One further question though. Given your answer and the javadoc
> documentation, I assume that the unordered send method in IgniteMessaging
> is blocking until
> all recipients in the topic have received the message, right? And if any
> of the recipients fails to receive the message, an IgniteException is
> thrown?
> And what happens if a new node is joining the cluster while a message is
> being sent?
>
> If it makes sense, I could create a pull request to add this information
> to the javadoc?
>
> Philipp
>
> ------------------------------
> *From:* Yakov Zhdanov [yzhdanov@apache.org]
> *Sent:* Monday, April 04, 2016 11:49
> *To:* user@ignite.apache.org
> *Subject:* Re: Messaging Reliability
>
> Philipp,
>
> Messaging works on top of Ignite internal communication sub-system.
> Message delivery is guaranteed, unless recipient node has not left the
> grid. If it leaves (i.e. topology gets EVT_NODE_LEFT or EVT_NODE_FAILED),
>  then sender clears internal queue associated with left node. When node
> receives the messages it sends internal acks to let sender now that
> messages can be removed from queue.
>
> Message correctness is not checked additionally - we rely on TCP here.
>
> Let me know if you have more questions.
>
> Thanks!
>
> --Yakov
>
> 2016-04-04 12:13 GMT+03:00 Hausmann Philipp <philipp.hausmann@fhnw.ch>:
>
>> Hi all
>>
>> I am considering using Ignite messages to manage some jobs in my cluster.
>> I've seen that one can send messages either in an ordered or unordered
>> fashion,
>> but the documentation does not specify any further guarantees. So far I
>> have come up with the following questions:
>>
>> - Is delivery of point-to-point messages guaranteed?
>>
>> - Is delivery of topic messages to all/to some listeners guaranteed?
>>
>> - Is correctness of delivered messages guaranteed (e.g. bitflips)?
>>
>> My current impression is, that Ignite does not guarantee anything beyond
>> ordering. Does anybody know anything more about this?
>>
>> All the best,
>> Philipp
>>
>
>

Mime
View raw message