Skip to content

Commit

Permalink
dao: select the right DBI to use (ro vs rw)
Browse files Browse the repository at this point in the history
Signed-off-by: Pierre-Alexandre Meyer <pierre@mouraf.org>
  • Loading branch information
pierre committed Mar 9, 2018
1 parent 7a0a7e0 commit c0adf05
Show file tree
Hide file tree
Showing 28 changed files with 263 additions and 227 deletions.
Expand Up @@ -94,7 +94,7 @@ public ImmutableAccountData loadAccount(final Long recordId, final InternalTenan
} }


private Account getAccountByRecordIdInternal(final Long recordId, final InternalTenantContext context) { private Account getAccountByRecordIdInternal(final Long recordId, final InternalTenantContext context) {
final AccountModelDao accountModelDao = transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<AccountModelDao>() { final AccountModelDao accountModelDao = transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<AccountModelDao>() {


@Override @Override
public AccountModelDao inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public AccountModelDao inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
Expand Down
Expand Up @@ -93,7 +93,7 @@ public void create(final AccountModelDao entity, final InternalCallContext conte
entity.setReferenceTime(context.getCreatedDate()); entity.setReferenceTime(context.getCreatedDate());
} }


final AccountModelDao refreshedEntity = transactionalSqlDao.execute(getCreateEntitySqlDaoTransactionWrapper(entity, context)); final AccountModelDao refreshedEntity = transactionalSqlDao.execute(false, getCreateEntitySqlDaoTransactionWrapper(entity, context));
// Populate the caches only after the transaction has been committed, in case of rollbacks // Populate the caches only after the transaction has been committed, in case of rollbacks
transactionalSqlDao.populateCaches(refreshedEntity); transactionalSqlDao.populateCaches(refreshedEntity);
// Eagerly populate the account-immutable cache as well // Eagerly populate the account-immutable cache as well
Expand Down Expand Up @@ -130,7 +130,7 @@ protected void postBusEventFromTransaction(final AccountModelDao account, final


@Override @Override
public AccountModelDao getAccountByKey(final String key, final InternalTenantContext context) { public AccountModelDao getAccountByKey(final String key, final InternalTenantContext context) {
return transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<AccountModelDao>() { return transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<AccountModelDao>() {
@Override @Override
public AccountModelDao inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public AccountModelDao inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
return entitySqlDaoWrapperFactory.become(AccountSqlDao.class).getAccountByKey(key, context); return entitySqlDaoWrapperFactory.become(AccountSqlDao.class).getAccountByKey(key, context);
Expand All @@ -144,7 +144,7 @@ public Pagination<AccountModelDao> searchAccounts(final String searchKey, final
if (userIsFeelingLucky) { if (userIsFeelingLucky) {
// The use-case we can optimize is when the user is looking for an exact match (e.g. he knows the full email). In that case, we can speed up the queries // The use-case we can optimize is when the user is looking for an exact match (e.g. he knows the full email). In that case, we can speed up the queries
// by doing exact searches only. // by doing exact searches only.
final AccountModelDao accountModelDao = transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<AccountModelDao>() { final AccountModelDao accountModelDao = transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<AccountModelDao>() {
@Override @Override
public AccountModelDao inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public AccountModelDao inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
return entitySqlDaoWrapperFactory.become(AccountSqlDao.class).luckySearch(searchKey, context); return entitySqlDaoWrapperFactory.become(AccountSqlDao.class).luckySearch(searchKey, context);
Expand Down Expand Up @@ -182,7 +182,7 @@ public UUID getIdFromKey(final String externalKey, final InternalTenantContext c
throw new AccountApiException(ErrorCode.ACCOUNT_CANNOT_MAP_NULL_KEY, ""); throw new AccountApiException(ErrorCode.ACCOUNT_CANNOT_MAP_NULL_KEY, "");
} }


return transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<UUID>() { return transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<UUID>() {
@Override @Override
public UUID inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public UUID inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
return entitySqlDaoWrapperFactory.become(AccountSqlDao.class).getIdFromKey(externalKey, context); return entitySqlDaoWrapperFactory.become(AccountSqlDao.class).getIdFromKey(externalKey, context);
Expand All @@ -192,7 +192,7 @@ public UUID inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFa


@Override @Override
public void update(final AccountModelDao specifiedAccount, final InternalCallContext context) throws AccountApiException { public void update(final AccountModelDao specifiedAccount, final InternalCallContext context) throws AccountApiException {
transactionalSqlDao.execute(AccountApiException.class, new EntitySqlDaoTransactionWrapper<Void>() { transactionalSqlDao.execute(false, AccountApiException.class, new EntitySqlDaoTransactionWrapper<Void>() {
@Override @Override
public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws EventBusException, AccountApiException { public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws EventBusException, AccountApiException {
final AccountSqlDao transactional = entitySqlDaoWrapperFactory.become(AccountSqlDao.class); final AccountSqlDao transactional = entitySqlDaoWrapperFactory.become(AccountSqlDao.class);
Expand Down Expand Up @@ -225,7 +225,7 @@ public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFa


@Override @Override
public void updatePaymentMethod(final UUID accountId, final UUID paymentMethodId, final InternalCallContext context) throws AccountApiException { public void updatePaymentMethod(final UUID accountId, final UUID paymentMethodId, final InternalCallContext context) throws AccountApiException {
transactionalSqlDao.execute(AccountApiException.class, new EntitySqlDaoTransactionWrapper<Void>() { transactionalSqlDao.execute(false, AccountApiException.class, new EntitySqlDaoTransactionWrapper<Void>() {
@Override @Override
public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws EntityPersistenceException, EventBusException { public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws EntityPersistenceException, EventBusException {
final AccountSqlDao transactional = entitySqlDaoWrapperFactory.become(AccountSqlDao.class); final AccountSqlDao transactional = entitySqlDaoWrapperFactory.become(AccountSqlDao.class);
Expand Down Expand Up @@ -262,7 +262,7 @@ public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFa


@Override @Override
public void addEmail(final AccountEmailModelDao email, final InternalCallContext context) throws AccountApiException { public void addEmail(final AccountEmailModelDao email, final InternalCallContext context) throws AccountApiException {
transactionalSqlDao.execute(AccountApiException.class, new EntitySqlDaoTransactionWrapper<Void>() { transactionalSqlDao.execute(false, AccountApiException.class, new EntitySqlDaoTransactionWrapper<Void>() {
@Override @Override
public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
final AccountEmailSqlDao transactional = entitySqlDaoWrapperFactory.become(AccountEmailSqlDao.class); final AccountEmailSqlDao transactional = entitySqlDaoWrapperFactory.become(AccountEmailSqlDao.class);
Expand All @@ -279,7 +279,7 @@ public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFa


@Override @Override
public void removeEmail(final AccountEmailModelDao email, final InternalCallContext context) { public void removeEmail(final AccountEmailModelDao email, final InternalCallContext context) {
transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<Void>() { transactionalSqlDao.execute(false, new EntitySqlDaoTransactionWrapper<Void>() {
@Override @Override
public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
entitySqlDaoWrapperFactory.become(AccountEmailSqlDao.class).markEmailAsDeleted(email, context); entitySqlDaoWrapperFactory.become(AccountEmailSqlDao.class).markEmailAsDeleted(email, context);
Expand All @@ -290,7 +290,7 @@ public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFa


@Override @Override
public List<AccountEmailModelDao> getEmailsByAccountId(final UUID accountId, final InternalTenantContext context) { public List<AccountEmailModelDao> getEmailsByAccountId(final UUID accountId, final InternalTenantContext context) {
return transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<List<AccountEmailModelDao>>() { return transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<List<AccountEmailModelDao>>() {
@Override @Override
public List<AccountEmailModelDao> inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public List<AccountEmailModelDao> inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
return entitySqlDaoWrapperFactory.become(AccountEmailSqlDao.class).getEmailByAccountId(accountId, context); return entitySqlDaoWrapperFactory.become(AccountEmailSqlDao.class).getEmailByAccountId(accountId, context);
Expand All @@ -300,7 +300,7 @@ public List<AccountEmailModelDao> inTransaction(final EntitySqlDaoWrapperFactory


@Override @Override
public Integer getAccountBCD(final UUID accountId, final InternalTenantContext context) { public Integer getAccountBCD(final UUID accountId, final InternalTenantContext context) {
return transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<Integer>() { return transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<Integer>() {
@Override @Override
public Integer inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public Integer inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
return entitySqlDaoWrapperFactory.become(AccountSqlDao.class).getBCD(accountId.toString(), context); return entitySqlDaoWrapperFactory.become(AccountSqlDao.class).getBCD(accountId.toString(), context);
Expand All @@ -310,7 +310,7 @@ public Integer inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrappe


@Override @Override
public List<AccountModelDao> getAccountsByParentId(final UUID parentAccountId, final InternalTenantContext context) { public List<AccountModelDao> getAccountsByParentId(final UUID parentAccountId, final InternalTenantContext context) {
return transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<List<AccountModelDao>>() { return transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<List<AccountModelDao>>() {
@Override @Override
public List<AccountModelDao> inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public List<AccountModelDao> inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
return entitySqlDaoWrapperFactory.become(AccountSqlDao.class).getAccountsByParentId(parentAccountId, context); return entitySqlDaoWrapperFactory.become(AccountSqlDao.class).getAccountsByParentId(parentAccountId, context);
Expand Down
Expand Up @@ -132,7 +132,7 @@ protected EntitlementApiException generateAlreadyExistsException(final BlockingS


@Override @Override
public BlockingState getBlockingStateForService(final UUID blockableId, final BlockingStateType blockingStateType, final String serviceName, final InternalTenantContext context) { public BlockingState getBlockingStateForService(final UUID blockableId, final BlockingStateType blockingStateType, final String serviceName, final InternalTenantContext context) {
return transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<BlockingState>() { return transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<BlockingState>() {
@Override @Override
public BlockingState inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public BlockingState inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
// Upper bound time limit is now // Upper bound time limit is now
Expand All @@ -145,7 +145,7 @@ public BlockingState inTransaction(final EntitySqlDaoWrapperFactory entitySqlDao


@Override @Override
public List<BlockingState> getBlockingState(final UUID blockableId, final BlockingStateType blockingStateType, final DateTime upToDate, final InternalTenantContext context) { public List<BlockingState> getBlockingState(final UUID blockableId, final BlockingStateType blockingStateType, final DateTime upToDate, final InternalTenantContext context) {
return transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<List<BlockingState>>() { return transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<List<BlockingState>>() {
@Override @Override
public List<BlockingState> inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public List<BlockingState> inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
final BlockingStateSqlDao sqlDao = entitySqlDaoWrapperFactory.become(BlockingStateSqlDao.class); final BlockingStateSqlDao sqlDao = entitySqlDaoWrapperFactory.become(BlockingStateSqlDao.class);
Expand All @@ -169,7 +169,7 @@ public BlockingState apply(@Nullable final BlockingStateModelDao src) {


@Override @Override
public List<BlockingState> getBlockingAllForAccountRecordId(final InternalTenantContext context) { public List<BlockingState> getBlockingAllForAccountRecordId(final InternalTenantContext context) {
return transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<List<BlockingState>>() { return transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<List<BlockingState>>() {
@Override @Override
public List<BlockingState> inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public List<BlockingState> inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
final BlockingStateSqlDao sqlDao = entitySqlDaoWrapperFactory.become(BlockingStateSqlDao.class); final BlockingStateSqlDao sqlDao = entitySqlDaoWrapperFactory.become(BlockingStateSqlDao.class);
Expand All @@ -186,7 +186,7 @@ public BlockingState apply(@Nullable final BlockingStateModelDao src) {


@Override @Override
public void setBlockingStatesAndPostBlockingTransitionEvent(final Map<BlockingState, Optional<UUID>> states, final InternalCallContext context) { public void setBlockingStatesAndPostBlockingTransitionEvent(final Map<BlockingState, Optional<UUID>> states, final InternalCallContext context) {
transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<Void>() { transactionalSqlDao.execute(false, new EntitySqlDaoTransactionWrapper<Void>() {
@Override @Override
public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
final BlockingStateSqlDao sqlDao = entitySqlDaoWrapperFactory.become(BlockingStateSqlDao.class); final BlockingStateSqlDao sqlDao = entitySqlDaoWrapperFactory.become(BlockingStateSqlDao.class);
Expand Down Expand Up @@ -362,7 +362,7 @@ private void notifyBusFromTransaction(final EntitySqlDaoWrapperFactory entitySql


@Override @Override
public void unactiveBlockingState(final UUID id, final InternalCallContext context) { public void unactiveBlockingState(final UUID id, final InternalCallContext context) {
transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<Void>() { transactionalSqlDao.execute(false, new EntitySqlDaoTransactionWrapper<Void>() {
@Override @Override
public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception { public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
final BlockingStateSqlDao sqlDao = entitySqlDaoWrapperFactory.become(BlockingStateSqlDao.class); final BlockingStateSqlDao sqlDao = entitySqlDaoWrapperFactory.become(BlockingStateSqlDao.class);
Expand Down

0 comments on commit c0adf05

Please sign in to comment.