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

Samarth Jain commented on PHOENIX-3326:
---------------------------------------

Another option would be to delete the row corresponding to mutex when 
openRegion() is called on the SYSTEM.CATALOG. This way we can be sure that 
whenever SYSTEM.CATALOG is being restored from snapshot, the mutex won't be 
present. Because this is a server side change, we can only do it this way on 
our 4.x branch. For 4.8, we can probably do it the way [~jamestaylor] suggested 
i.e. detecting whether a table with reserved name SYSTEM.MUTEX already exists 
or not.



> Restoring SYSTEM.CATALOG from snapshot causes clients to run into 
> UpgradeInProgressException
> --------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-3326
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3326
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Samarth Jain
>            Assignee: Samarth Jain
>         Attachments: PHOENIX-3326_4.8-HBase-0.98.patch, 
> PHOENIX-3326_4.8-HBase-0.98_v2.patch, PHOENIX-3326_wip.patch
>
>
> We create a snapshot of the SYSTEM.CATALOG table only after the client is 
> able to successfully acquire a distributed mutex of sorts. This means the 
> snapshot also ends up containing the row that serves as the mutex. Now when 
> restoring the table from snapshot, this rows is still present which causes 
> clients to throw UpgradeInProgress exception. 
> I can think of a couple of ways to fix this:
> 1) Do the checkAndPut for the UPGRADE_MUTEX after creating the snapshot. I am 
> not too sure though how about HBase handles concurrent snapshot requests. Do 
> clients get an exception? Also we potentially could end up creating more 
> snapshots than we really need to. 
> 2) Do the checkAndPut for the UPGRADE_MUTEX in a different table (possibly 
> SYSTEM.SEQUENCE). This way the restored snapshot won't have the row. We would 
> need to delete the row from SYSTEM.SEQUENCE after the upgrade is done 
> (successfully or unsuccessfully).
> [~jamestaylor] - WDYT? 
> FYI, [~lhofhansl] - this is probably a blocker for 4.8.1



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

Reply via email to