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/12/10 02:33:43 UTC
[servicecomb-pack] 10/13: SCB-1627 Package Alpha's metadata with
AlphaMetas
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 bda9b4d627f537725091049ea794bd29393cc3f6
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Wed Dec 4 11:06:42 2019 +0800
SCB-1627 Package Alpha's metadata with AlphaMetas
---
.../servicecomb/pack/omega/context/AlphaMetas.java | 38 ++++++++++++++++++++--
.../pack/omega/context/OmegaContext.java | 14 ++++----
.../pack/omega/spring/OmegaSpringConfig.java | 3 +-
.../transaction/SagaStartAnnotationProcessor.java | 2 +-
.../pack/omega/transaction/SagaStartAspect.java | 2 +-
.../omega/transaction/SagaStartAspectTest.java | 3 +-
.../servicecomb/pack/common/AlphaMetaKeys.java | 2 +-
7 files changed, 49 insertions(+), 15 deletions(-)
diff --git a/pack-common/src/main/java/org/apache/servicecomb/pack/common/AlphaMetaKeys.java b/omega/omega-context/src/main/java/org/apache/servicecomb/pack/omega/context/AlphaMetas.java
similarity index 50%
copy from pack-common/src/main/java/org/apache/servicecomb/pack/common/AlphaMetaKeys.java
copy to omega/omega-context/src/main/java/org/apache/servicecomb/pack/omega/context/AlphaMetas.java
index 352dd70..a1a043f 100644
--- a/pack-common/src/main/java/org/apache/servicecomb/pack/common/AlphaMetaKeys.java
+++ b/omega/omega-context/src/main/java/org/apache/servicecomb/pack/omega/context/AlphaMetas.java
@@ -15,8 +15,40 @@
* limitations under the License.
*/
-package org.apache.servicecomb.pack.common;
+package org.apache.servicecomb.pack.omega.context;
-public enum AlphaMetaKeys {
- AkkaEnabled
+public class AlphaMetas {
+
+ private boolean akkaEnabled = false;
+
+ public boolean isAkkaEnabled() {
+ return akkaEnabled;
+ }
+
+ @Override
+ public String toString() {
+ return "AlphaMetas{" +
+ "akkaEnabled=" + akkaEnabled +
+ '}';
+ }
+
+ public static AlphaMetasBuilder builder() {
+ return new AlphaMetasBuilder();
+ }
+
+ public static final class AlphaMetasBuilder {
+
+ private boolean akkaEnabled = false;
+
+ public AlphaMetasBuilder akkaEnabled(boolean akkaEnabled) {
+ this.akkaEnabled = akkaEnabled;
+ return this;
+ }
+
+ public AlphaMetas build() {
+ AlphaMetas alphaMetas = new AlphaMetas();
+ alphaMetas.akkaEnabled = this.akkaEnabled;
+ return alphaMetas;
+ }
+ }
}
\ No newline at end of file
diff --git a/omega/omega-context/src/main/java/org/apache/servicecomb/pack/omega/context/OmegaContext.java b/omega/omega-context/src/main/java/org/apache/servicecomb/pack/omega/context/OmegaContext.java
index 660b923..fd0487a 100644
--- a/omega/omega-context/src/main/java/org/apache/servicecomb/pack/omega/context/OmegaContext.java
+++ b/omega/omega-context/src/main/java/org/apache/servicecomb/pack/omega/context/OmegaContext.java
@@ -28,15 +28,15 @@ public class OmegaContext {
private final ThreadLocal<String> localTxId = new InheritableThreadLocal<>();
private final IdGenerator<String> idGenerator;
- private final boolean alphaFeatureAkkaEnabled;
+ private final AlphaMetas alphaMetas;
public OmegaContext(IdGenerator<String> idGenerator) {
- this(idGenerator,false);
+ this(idGenerator, AlphaMetas.builder().akkaEnabled(false).build());
}
- public OmegaContext(IdGenerator<String> idGenerator, boolean alphaFeatureAkkaEnabled) {
+ public OmegaContext(IdGenerator<String> idGenerator, AlphaMetas alphaMetas) {
this.idGenerator = idGenerator;
- this.alphaFeatureAkkaEnabled = alphaFeatureAkkaEnabled;
+ this.alphaMetas = alphaMetas;
}
public String newGlobalTxId() {
@@ -67,8 +67,8 @@ public class OmegaContext {
return localTxId.get();
}
- public boolean isAlphaFeatureAkkaEnabled() {
- return alphaFeatureAkkaEnabled;
+ public AlphaMetas getAlphaMetas() {
+ return alphaMetas;
}
public TransactionContext getTransactionContext() {
@@ -85,7 +85,7 @@ public class OmegaContext {
return "OmegaContext{" +
"globalTxId=" + globalTxId.get() +
", localTxId=" + localTxId.get() +
- ", alphaFeatureAkkaEnabled=" + alphaFeatureAkkaEnabled +
+ ", " + alphaMetas +
'}';
}
diff --git a/omega/omega-spring-starter/src/main/java/org/apache/servicecomb/pack/omega/spring/OmegaSpringConfig.java b/omega/omega-spring-starter/src/main/java/org/apache/servicecomb/pack/omega/spring/OmegaSpringConfig.java
index 1fd3648..5f54972 100644
--- a/omega/omega-spring-starter/src/main/java/org/apache/servicecomb/pack/omega/spring/OmegaSpringConfig.java
+++ b/omega/omega-spring-starter/src/main/java/org/apache/servicecomb/pack/omega/spring/OmegaSpringConfig.java
@@ -28,6 +28,7 @@ import org.apache.servicecomb.pack.omega.connector.grpc.core.LoadBalanceContextB
import org.apache.servicecomb.pack.omega.connector.grpc.core.TransactionType;
import org.apache.servicecomb.pack.omega.connector.grpc.saga.SagaLoadBalanceSender;
import org.apache.servicecomb.pack.omega.connector.grpc.tcc.TccLoadBalanceSender;
+import org.apache.servicecomb.pack.omega.context.AlphaMetas;
import org.apache.servicecomb.pack.omega.transaction.CallbackContext;
import org.apache.servicecomb.pack.omega.context.IdGenerator;
import org.apache.servicecomb.pack.omega.context.OmegaContext;
@@ -68,7 +69,7 @@ class OmegaSpringConfig {
OmegaContext omegaContext(@Qualifier("omegaUniqueIdGenerator") IdGenerator<String> idGenerator, SagaMessageSender messageSender) {
ServerMeta serverMeta = messageSender.onGetServerMeta();
boolean akkaEnabeld = Boolean.parseBoolean(serverMeta.getMetaMap().get(AlphaMetaKeys.AkkaEnabled.name()));
- return new OmegaContext(idGenerator,akkaEnabeld);
+ return new OmegaContext(idGenerator, AlphaMetas.builder().akkaEnabled(akkaEnabeld).build());
}
@Bean(name = {"compensationContext"})
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/SagaStartAnnotationProcessor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/SagaStartAnnotationProcessor.java
index de9aa3f..9f5f268 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/SagaStartAnnotationProcessor.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/SagaStartAnnotationProcessor.java
@@ -50,7 +50,7 @@ public class SagaStartAnnotationProcessor {
public void onError(String compensationMethod, Throwable throwable) {
String globalTxId = omegaContext.globalTxId();
- if(omegaContext.isAlphaFeatureAkkaEnabled()){
+ if(omegaContext.getAlphaMetas().isAkkaEnabled()){
sender.send(
new SagaAbortedEvent(globalTxId, omegaContext.localTxId(), null, compensationMethod,
throwable));
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/SagaStartAspect.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/SagaStartAspect.java
index 650448d..d9a2320 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/SagaStartAspect.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/SagaStartAspect.java
@@ -42,7 +42,7 @@ public class SagaStartAspect {
@Around("execution(@org.apache.servicecomb.pack.omega.context.annotations.SagaStart * *(..)) && @annotation(sagaStart)")
Object advise(ProceedingJoinPoint joinPoint, SagaStart sagaStart) throws Throwable {
initializeOmegaContext();
- if(context.isAlphaFeatureAkkaEnabled() && sagaStart.timeout()>0){
+ if(context.getAlphaMetas().isAkkaEnabled() && sagaStart.timeout()>0){
SagaStartAnnotationProcessorTimeoutWrapper wrapper = new SagaStartAnnotationProcessorTimeoutWrapper(this.sagaStartAnnotationProcessor);
return wrapper.apply(joinPoint,sagaStart,context);
}else{
diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/SagaStartAspectTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/SagaStartAspectTest.java
index ba4539c..2226181 100644
--- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/SagaStartAspectTest.java
+++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/SagaStartAspectTest.java
@@ -29,6 +29,7 @@ import java.util.UUID;
import org.apache.servicecomb.pack.common.EventType;
import org.apache.servicecomb.pack.contract.grpc.ServerMeta;
+import org.apache.servicecomb.pack.omega.context.AlphaMetas;
import org.apache.servicecomb.pack.omega.context.IdGenerator;
import org.apache.servicecomb.pack.omega.context.OmegaContext;
import org.apache.servicecomb.pack.omega.context.annotations.SagaStart;
@@ -169,7 +170,7 @@ public class SagaStartAspectTest {
@Test
public void clearContextOnSagaStartErrorWithAkka() throws Throwable {
- omegaContext = new OmegaContext(idGenerator,true);
+ omegaContext = new OmegaContext(idGenerator, AlphaMetas.builder().akkaEnabled(true).build());
aspect = new SagaStartAspect(sender, omegaContext);
RuntimeException oops = new RuntimeException("oops");
diff --git a/pack-common/src/main/java/org/apache/servicecomb/pack/common/AlphaMetaKeys.java b/pack-common/src/main/java/org/apache/servicecomb/pack/common/AlphaMetaKeys.java
index 352dd70..ce27b80 100644
--- a/pack-common/src/main/java/org/apache/servicecomb/pack/common/AlphaMetaKeys.java
+++ b/pack-common/src/main/java/org/apache/servicecomb/pack/common/AlphaMetaKeys.java
@@ -18,5 +18,5 @@
package org.apache.servicecomb.pack.common;
public enum AlphaMetaKeys {
- AkkaEnabled
+ AkkaEnabled // TODO Future expansion to SupportSaga, SupportTcc
}
\ No newline at end of file