问题是关于标量数据库(https://github.com/scalar-labs/scalardb)。在以下代码中,我检查用户是否存在。如果可以,我抛出异常。如果没有,我将其添加到表中。我在一开始创建了一个DistributedTransaction实例,并在所有事务中使用它。
val transaction: DistributedTransaction = transactionService.start
logger.trace("transaction started: " + transaction);
//Perform the operations you want to group in the transaction
val userExists:Boolean = userShouldNotExist(transaction,userKey)
if(!userExists) {
userTransactionRepository.addUser(transaction, user)
userProfileAndPortfolioTransactionRepository.addUserProfileAndPortfolio(transaction, user)
userTokenTransactionRepository.addToken(transaction, emailToken, user)
commitTransaction(transaction)
(user: User, profileAndPortfolio: ExternalUserProfile, emailToken: UserToken)
} else {
throw DuplicateUserException(user)
}
如果else块阻塞,我是否需要对DistributedTransaction进行一些清理/最终化处理?还是可以直接保留它?
答案 0 :(得分:0)
您基本上可以保持原样。
请注意,即使!userExists
返回true,也可以在另一笔交易检查后创建用户。
在这种情况下,提交将引发异常。