[ 
https://issues.apache.org/jira/browse/RATIS-613?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16883331#comment-16883331
 ] 

Tsz Wo Nicholas Sze commented on RATIS-613:
-------------------------------------------

> ... all these transactions would be pending in the state machine and can take 
> a lot of heap space. ...

Hey [~ljain], sorry for checking this late.  If the state machine does not want 
to take the transactions, it should not return when applyTransactionSerial(..) 
is called.  Then, the StateMachineUpdater thread will be blocked.

It seems that ContainerStateMachine in Ozone should limit the number of pending 
transactions.  When the limit is hit, it blocks the applyTransactionSerial(..). 
 It may use DataBlockingQueue for the pending transactions.

> StateMachineUpdater should limit the number of apply transaction calls
> ----------------------------------------------------------------------
>
>                 Key: RATIS-613
>                 URL: https://issues.apache.org/jira/browse/RATIS-613
>             Project: Ratis
>          Issue Type: Bug
>            Reporter: Lokesh Jain
>            Assignee: Lokesh Jain
>            Priority: Major
>         Attachments: RATIS-613.001.patch, RATIS-613.002.patch
>
>
> Currently StateMachineUpdater applies all the transactions until the 
> committed index. In cases where there is a huge difference between applied 
> and committed index, all these transactions would be pending in the state 
> machine and can take a lot of heap space. Such a scenario was seen in the 
> Ozone cluster where a large amount of heap was taken by unapplied 
> transactions leading to frequent GC pauses.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to