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)