You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by Hausmann Philipp <ph...@fhnw.ch> on 2016/04/04 11:13:44 UTC

Messaging Reliability

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

Re: Messaging Reliability

Posted by Yakov Zhdanov <yz...@apache.org>.
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 <ph...@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 <ph...@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
>>
>
>

RE: Messaging Reliability

Posted by Hausmann Philipp <ph...@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 <ph...@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


Re: Messaging Reliability

Posted by Yakov Zhdanov <yz...@apache.org>.
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 <ph...@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
>