You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Maddineni Sukumar (JIRA)" <ji...@apache.org> on 2017/05/17 17:02:04 UTC
[jira] [Commented] (PHOENIX-3209) Ensure scans run at specific
server timestamp for UPSERT SELECT to same table
[ https://issues.apache.org/jira/browse/PHOENIX-3209?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16014399#comment-16014399 ]
Maddineni Sukumar commented on PHOENIX-3209:
--------------------------------------------
Hi [~jamestaylor] / [~samarthjain],
I am able to reproduce scenario where if we use update_cache_frequency and upsert select on same table then we are running scan with time range 0 to Long.MAX_VALUE, so we are able to see future data or data created during query execution. Reason for this is we are getting table from cache with resolved timestamp as -1(UNSET_TIMESTAMP). So we are not setting end time for time range and it is using default value which is Long.MAX_VALUE.
I added logic to do force cache update in case of upsert select on same table.
Added patch in PHOENIX-3823 patch as it was easy adding unit test there.
I think we need to do this logic for all upsert select scenarios irrespective of same table or not. I will run some more tests today. Please confirm.
> Ensure scans run at specific server timestamp for UPSERT SELECT to same table
> -----------------------------------------------------------------------------
>
> Key: PHOENIX-3209
> URL: https://issues.apache.org/jira/browse/PHOENIX-3209
> Project: Phoenix
> Issue Type: Sub-task
> Reporter: James Taylor
> Assignee: Maddineni Sukumar
> Fix For: 4.11.0
>
>
> This is a corner case of specifying an UPDATE_CACHE_FREQUENCY on a table and executing an UPSERT SELECT. Without an UPDATE_CACHE_FREQUENCY, we ping the server to ensure we have the latest version of the schema. We'll then run the query based on the server timestamp returned as a result of checking that the schema is up-to-date. If an UPDATE_CACHE_FREQUENCY is set, we skip this RPC which is a potential problem in this case. This becomes more likely when we introduce a default UPATE_CACHE_FREQUENCY with PHOENIX-2885. The fix is to ignore the UPDATE_CACHE_FREQUENCY when an UPSERT SELECT is performed where the source and target table are the same.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)