[
https://issues.apache.org/jira/browse/SENTRY-1824?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16068684#comment-16068684
]
Hadoop QA commented on SENTRY-1824:
-----------------------------------
Here are the results of testing the latest attachment
https://issues.apache.org/jira/secure/attachment/12875070/SENTRY-1824.002-sentry-ha-redesign.patch
against sentry-ha-redesign.
{color:green}Overall:{color} +1 all checks pass
{color:green}SUCCESS:{color} all tests passed
Console output:
https://builds.apache.org/job/PreCommit-SENTRY-Build/2938/console
This message is automatically generated.
> SentryStore may serialize transactions that rely on unique key
> --------------------------------------------------------------
>
> Key: SENTRY-1824
> URL: https://issues.apache.org/jira/browse/SENTRY-1824
> Project: Sentry
> Issue Type: Sub-task
> Components: Sentry
> Affects Versions: sentry-ha-redesign
> Reporter: Alexander Kolbasov
> Assignee: Na Li
> Labels: sentry-ha
> Fix For: sentry-ha-redesign
>
> Attachments: SENTRY-1824.001-sentry-ha-redesign.patch,
> SENTRY-1824.002-sentry-ha-redesign.patch
>
> Original Estimate: 72h
> Remaining Estimate: 72h
>
> The suggestion came from [~lina.li] during the review for SENTRY-1821.
> We have several places where we rely on transactions to support
> read/modify/write semantics for incrementing IDs. This works but using DB
> support is rather expensive and we can user in-core serializations to help
> with this at least within a single node and rely on DB for multi-node
> synchronization.
> 1) The DeltaTransactionBlock gets latest changeID and then increases it for
> this update.
> Since changeID is the primary key of persisted update, when two or more
> transactions are
> updating changeID at the same time, only one transaction succeeds, and the
> other transactions
> will fail, and go through retry. It is quite expensive, and cause
> performance issue.
> When more clients are making updates, transaction may fail to commit after
> retries.
> 2)Permission updates are the main issue, getting worse with more clients.
> Path update is from one thread in HMSFollower, independent on the number of
> clients, so it is not a big issue.
> 3) Adding synchronization to serilize the updates can minimize the chance a
> transaction fails
> 4) Therefore, synchronizing all permission updates. In this way, when more
> than one threads are updating the
> permission, only one thread will update changeID. When it finishes, the next
> thread on the same Sentry server
> will make update. As a result, no transaction will fail if there is only one
> Sentry server. When there are more
> Sentry servers, the collision will happen among the Sentry servers, not
> depending on how many clients are
> updating Sentry, so it is more scalable.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)