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

Ohad Shacham commented on PHOENIX-3860:
---------------------------------------

[~jamestaylor], another issue, in addition to the one above. Omid has an 
internal low water mark that is used to bound the size of the transaction 
manager's data structure (for conflict detection) and also to mark the point 
where the garbage collector can delete entries below (while keeping below this 
point only one version per key, if exists).

When a transaction tries to commit with a begin id smaller than this low water 
mark the transaction manager returns abort from two reasons: First, information 
in the conflict detection data structure that might conflict with this 
transaction might be missing. And second, the garbage collector might deleted 
information that was supposed to be read by the transaction (This hurts Omid's 
Opacity).

 

If during the index creation the low water exceeds the fence id then there 
might be a case that the scan of the data table will miss some of the 
information that needs to be written to the index.

My question is how the index creation works. Do you create an index using a 
transaction and commit when you finish populate all the data table info to the 
index? What happened if the commit fails? You drop the index table, take a new 
fence and start the process again? 

If this is the case and the index is not valid until the transaction 
successfully commit (which it should be invalid) then we can do it the same 
with Omid and this will overcome this issue.

The only difference from regular transaction is that we will directly write the 
fence id to the shadow cell in order to remove the need of saving all the 
mutations in the client (for future shadow cells update). This update is OK 
only assuming that the index is not valid until all the data table info is 
populated and that if the commit fails then the table drops and a new one is 
created.

 

> Implement TAL functionality for Omid
> ------------------------------------
>
>                 Key: PHOENIX-3860
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3860
>             Project: Phoenix
>          Issue Type: Sub-task
>            Reporter: Ohad Shacham
>            Assignee: Ohad Shacham
>            Priority: Major
>
> Implement TAL functionality for Omid in order to be able to use Omid as 
> Phoenix's transaction processing engine. 
> To support the integration jira [OMID-82] was opened that encapsulates all 
> Omid related development for Phoenix.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to