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

Lars Hofhansl commented on PHOENIX-5233:
----------------------------------------

Nice! Looks like this fixes issue #2. (Now I can do the change in PHOENIX-5090, 
which significantly improves things for larger transactions.)

What do you think about issue #1? What appears to be happening is this:
* Omid has committed a transaction.
* If HBase now does a split, some of the scanners are restarted. The newly 
restart scanner now see data that was inserted before they started.
* The upshot is that the SELECT part of UPSERT/SELECT might see more data than 
the previous snapshot. This is only an issue insight a transaction.

I guess that commit should always imply a checkpoint...?
I think this should be repeatable with just HBase (no Phoenix needed). HBase 
splitting should not lead to different data visibility when we have 
transactions.


> Read-your-own writes causes incorrect visibility with transactional tables 
> (with Omid).
> ---------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-5233
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5233
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.14.1
>            Reporter: Lars Hofhansl
>            Assignee: Yonatan Gottesman
>            Priority: Major
>         Attachments: 5233-tests.txt, 5233-v4.txt, 5233-v5.txt, 5233-v6.txt
>
>
> (copied from my last comment on PHOENIX-5090)
> Steps to reproduce (with Omid):
>  # {{!autocommit off}}
>  # {{create table test (pk1 integer not null, pk2 integer not null, pk3 
> integer not null, v1 float, v2 float, v3 integer CONSTRAINT pk PRIMARY KEY 
> (pk1, pk2, pk3)) DISABLE_WAL=true, TRANSACTIONAL=true;}}
>  # {{upsert into test values(rand()*10000000, rand()*10000000, 
> rand()*10000000, rand(), rand(), rand()*1000000);}}
>  # {{upsert into test select rand()*10000000, rand()*10000000, 
> rand()*10000000, rand(), rand(), rand()*1000000 from test;}}
>  # {{select count\(*) from test; – this will cause uncommitted data to sent 
> to the server.}}
>  # Goto #4 a few time (until you inserted 131072 rows)
>  # {{!commit}}
> In a separate sqlline session just repeat after the commit was issued in the 
> other session.
> * {{select count\(*) from test;}}
> You'll see that number will change until it finally settles.



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

Reply via email to