[ 
https://issues.apache.org/jira/browse/TRAFODION-34?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Suresh Subbiah reassigned TRAFODION-34:
---------------------------------------

    Assignee: Oliver Bucaojit

> Support region re-balancing with transactions active
> ----------------------------------------------------
>
>                 Key: TRAFODION-34
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-34
>             Project: Apache Trafodion
>          Issue Type: New Feature
>            Reporter: Oliver Bucaojit
>            Assignee: Oliver Bucaojit
>   Original Estimate: 504h
>  Remaining Estimate: 504h
>
> Transactional state is not persisted over a region rebalance or split.  This 
> JIRA will cover the rebalance aspect separate from the split handling.  The 
> implementation of the two features would be similar, split handling being 
> more complex.
> The transactional state on the server-side is held in-memory for a region in 
> an endpoint coprocessor.  When a region is rebalanced, this state is lost 
> when the region comes back online.  Some of the information needed to 
> continue the transaction is the list of transaction states by ID, committed 
> transactions by ID, pending transactions, etc.  
> One idea that I have been testing out is persisting this transactional 
> information by serializing it as a Google protobuf and then writing this out 
> to disk on region preClose().  On postOpen() of the region, this 
> transactional state will be read and the information replayed to rebuild the 
> lists and states.
> Another detail that I would like to add is to have the operation delay while 
> transactions are pending and when there are transactional scanners being 
> used.  This would allow pending transactions to complete before the region is 
> taken down.  For the scanner, I think this would make things less complicated 
> as opposed to having to rebuild the scanner state or know which was the last 
> row that the user received from the scanner.  
> In an earlier version, I tested having a simple delay loop that checked for a 
> period of all active transactions to be complete before continuing.  This was 
> causing problems for long-running tests as there would be no quiet periods 
> and the region would not continue with the operation and eventually run out 
> of memory. So having it only delay on pending transactions vs active 
> transactions will allow the delay loop to find a time to continue the 
> split/balance operation.
> More design details are in the included blueprint link.  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to