You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2019/07/22 11:20:23 UTC
[servicecomb-pack] 03/05: SCB-1385 Polish the code with suggestion
from PR review
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git
commit 72b93093f72d1db117a568c7231fed0488e53ec4
Author: Willem Jiang <wi...@gmail.com>
AuthorDate: Sat Jul 20 23:00:39 2019 +0800
SCB-1385 Polish the code with suggestion from PR review
---
.../pack/omega/transaction/TransactionAspect.java | 13 +++++++++++--
.../pack/omega/transaction/TransactionAspectTest.java | 12 ++++++++++--
2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspect.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspect.java
index fa7bbf4..e7b3425 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspect.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspect.java
@@ -51,8 +51,13 @@ public class TransactionAspect {
// just check if we need to setup the transaction context information first
TransactionContext transactionContext = getTransactionContextFromArgs(joinPoint.getArgs());
if (transactionContext != null) {
- LOG.debug("Updated context {} for globalTxId:{} and localTxId:{}", context,
- transactionContext.globalTxId(), transactionContext.localTxId());
+ if (context.globalTxId() != null) {
+ LOG.warn("The context {}'s globalTxId is not empty. Update it for globalTxId:{} and localTxId:{}", context,
+ transactionContext.globalTxId(), transactionContext.localTxId());
+ } else {
+ LOG.debug("Updated context {} for globalTxId:{} and localTxId:{}", context,
+ transactionContext.globalTxId(), transactionContext.localTxId());
+ }
context.setGlobalTxId(transactionContext.globalTxId());
context.setLocalTxId(transactionContext.localTxId());
}
@@ -74,6 +79,10 @@ public class TransactionAspect {
TransactionContext getTransactionContextFromArgs(Object[] args) {
if (args != null) {
for (Object arg : args) {
+ // check the TransactionContext first
+ if (arg instanceof TransactionContext) {
+ return (TransactionContext) arg;
+ }
if (arg instanceof TransactionContextWrapper) {
return ((TransactionContextWrapper) arg).getTransactionContext();
}
diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspectTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspectTest.java
index 17a5aa3..c39caf2 100644
--- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspectTest.java
+++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspectTest.java
@@ -46,6 +46,7 @@ import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.reflect.MethodSignature;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
@@ -117,14 +118,21 @@ public class TransactionAspectTest {
@Test
public void testGetTransactionContextFromArgs() throws Throwable {
- TransactionContext result = aspect.getTransactionContextFromArgs(new Object[]{tx,wrapper});
+ TransactionContext result = aspect.getTransactionContextFromArgs(new Object[]{wrapper});
assertThat(result, is(tx));
result = aspect.getTransactionContextFromArgs(new Object[]{});
assertNull(result);
- result = aspect.getTransactionContextFromArgs(new Object[]{tx});
+ result = aspect.getTransactionContextFromArgs(null);
assertNull(result);
+
+ result = aspect.getTransactionContextFromArgs(new Object[]{tx});
+ assertThat(result, is(tx));
+
+ TransactionContext otherTx = Mockito.mock(TransactionContext.class);
+ result = aspect.getTransactionContextFromArgs(new Object[]{otherTx, wrapper});
+ assertThat(result, is(otherTx));
}
@Test