Alexander Kolbasov created SENTRY-1501:
------------------------------------------

             Summary: SentryStore shouldn't synchronize openTransaction() and 
commitUpdateTransaction()
                 Key: SENTRY-1501
                 URL: https://issues.apache.org/jira/browse/SENTRY-1501
             Project: Sentry
          Issue Type: Improvement
          Components: Sentry
    Affects Versions: 1.7.0, sentry-ha-redesign
            Reporter: Alexander Kolbasov


SentryStore.openTransaction() is synchronized for no reason - the peristence 
manager factory is thread-safe. 

The synchronization here doesn't make any sense at all:

{code}
  /**
   * Synchronized due to sequence id generation
   */
  public synchronized CommitContext commitUpdateTransaction(PersistenceManager 
pm) {
    commitTransaction(pm);
    return new CommitContext(SERVER_UUID, incrementGetSequenceId());
  }

  /**
   * Increments commitSequenceId which should not be modified outside
   * this method.
   *
   * @return sequence id
   */
  private synchronized long incrementGetSequenceId() {
    return ++commitSequenceId;
  }
{code}

Note that incrementGetSequenceId() is synchronized so there is no need to 
synchronize commitUpdateTransaction(). More over, there is no need to 
synchronize incrementGetSequenceId(), it can just use atomic for the index. And 
I think that handling of this atomic should be moved to the CommitContext 
instead.



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

Reply via email to