Yes, i have a component that has 2 passive replicas. The component process 
data, update the state and at certain intervals commit the new state, when the 
active replica fails a leader election mechanism elect one of the passive that 
start to process data. The problem is when the active replica commit the state 
and then fail and the elected replica start processing data without having 
applied the last transaction that has been committed, when this last 
transaction will be applied i will lose the data processes in between. 
I saw that there is in BaseStateMachine a method  getLastAppliedTermIndex() 
that should return the last applied term, that is half of the work, the other 
half would be to know the last commit term index,

Thanks

> On 20 Jan 2021, at 19:58, Rui Wang <[email protected]> wrote:
> 
> I think Right now in Ratis you cannot know that on a node: applying 
> transactions are asynchronous on each node. It's hard to estimate and it is 
> also very costly to sync such information among nodes.
> 
> BTW, is there a use case in your mind that you need to know this information?
> 
> -Rui
> 
> On Wed, Jan 20, 2021 at 10:51 AM Pietro Tollot <[email protected] 
> <mailto:[email protected]>> wrote:
> Thanks for answering, what i meant was all the transactions of a commit on 
> Ratis nodes, that is if on a node i can know if all the transaction committed 
> has been applied,
> 
> thanks
> 
>> On 20 Jan 2021, at 19:36, Rui Wang <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> > all the transactions has been applied
>> 
>> Can you clarify what you mean by "all" the transaction? Is it mean all 
>> transactions of a commit on Ratis nodes or all transactions in the raft log 
>> in a single Ratis node?
>> 
>> 
>> -Rui
>> 
>> On Wed, Jan 20, 2021 at 9:51 AM Pietro Tollot <[email protected] 
>> <mailto:[email protected]>> wrote:
>> Thanks very much for the answer, is there a method to know if all the 
>> transactions has been applied?
>> 
>> Thanks
>> 
>>> On 20 Jan 2021, at 17:47, Tsz Wo Sze <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>> Hi Pietro,
>>> 
>>> The applyTransaction method is called once the transaction has been 
>>> committed.
>>> A transaction is committed once it has been replicated (not applied) to a 
>>> majority of nodes.
>>> 
>>> Hope it helps.
>>> Tsz-Wo
>>> 
>>> 
>>> On Thu, Jan 21, 2021 at 12:04 AM Pietro Tollot <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> Hi all, i have a doubt about the use of the applyTransaction method of a 
>>> BaseStateMachine, my doubt regards when the methods is called, it is done 
>>> once the cluster has committed a message or before to commit a message? 
>>> That is a message is committed once applyTransaction has been performed in 
>>> the majority of nodes?
>>> 
>>> Thanks,
>>> Pietro
>> 
> 

Reply via email to