Types of crash recovery (Qpid: Proton / Messaging API)

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Types of crash recovery (Qpid: Proton / Messaging API)

warm-sun
From what I've read, gathered and pieced together (this never seems to be made explicit):
There are 2 types of crashes and recoveries:

1)
Connection loss (but both client and broker running as normal -- links states still in memory)
In this case the broker and client still maintain their links states. (In memory delivery state of each inflight message). Upon network reconnection: these links are restored and both broker and client can recover/resume message send/receive where it was left off.

2)
Client or broker crashes or both
In this case the crashed party will need to resend all un-ACKed messages from scratch (which may result in duplicates). Clients (consumers / producers) need to be idempotent (intelligent enough to detect and deal with duplicates).

Is this correct?
Reply | Threaded
Open this post in threaded view
|

Re: Types of crash recovery (Qpid: Proton / Messaging API)

Gordon Sim
On 02/07/2019 2:39 pm, [hidden email] wrote:
>  From what I've read, gathered and pieced together (this never seems to be made explicit):
> There are 2 types of crashes and recoveries:
>
> 1)
> Connection loss (but both client and broker running as normal -- links states still in memory)
> In this case the broker and client still maintain their links states. (In memory delivery state of each inflight message). Upon network reconnection: these links are restored and both broker and client can recover/resume message send/receive where it was left off.

I don't think any of the clients, brokers or router do link resume for
exactly once yet. (proton-c based clients, the c++ broker and the router
certainly do not).

> 2)
> Client or broker crashes or both
> In this case the crashed party will need to resend all un-ACKed messages from scratch (which may result in duplicates). Clients (consumers / producers) need to be idempotent (intelligent enough to detect and deal with duplicates).

Correct (and this is true even for the first case).



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]