SCB-1811 Configure PAYLOADS_MAX_LENGTH parameter from setting environment variable
diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/SagaActor.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/SagaActor.java
index 5e8aee8..017ee0e 100644
--- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/SagaActor.java
+++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/SagaActor.java
@@ -53,13 +53,13 @@
import org.apache.servicecomb.pack.alpha.fsm.model.TxEntity;
import org.apache.servicecomb.pack.alpha.fsm.spring.integration.akka.SagaDataExtension;
import org.apache.servicecomb.pack.alpha.fsm.spring.integration.akka.SpringAkkaExtension;
+import org.apache.servicecomb.pack.common.Environment;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import scala.concurrent.duration.Duration;
public class SagaActor extends
AbstractPersistentFSM<SagaActorState, SagaData, DomainEvent> {
- protected static final int PAYLOADS_MAX_LENGTH = 10240;
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private String persistenceId;
private long sagaBeginTime;
@@ -578,8 +578,8 @@
StringWriter writer = new StringWriter();
ex.printStackTrace(new PrintWriter(writer));
String stackTrace = writer.toString();
- if (stackTrace.length() > PAYLOADS_MAX_LENGTH) {
- stackTrace = stackTrace.substring(0, PAYLOADS_MAX_LENGTH);
+ if (stackTrace.length() > Environment.getInstance().getPayloadsMaxLength()) {
+ stackTrace = stackTrace.substring(0, Environment.getInstance().getPayloadsMaxLength());
}
CompensateAckTimeoutEvent event = CompensateAckTimeoutEvent.builder()
.createTime(new Date(System.currentTimeMillis()))
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TxEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TxEvent.java
index 4cab583..4c749b8 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TxEvent.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TxEvent.java
@@ -21,10 +21,10 @@
import java.io.StringWriter;
import java.util.Arrays;
+import org.apache.servicecomb.pack.common.Environment;
import org.apache.servicecomb.pack.common.EventType;
public class TxEvent {
- protected static final int PAYLOADS_MAX_LENGTH = 10240;
private final long timestamp;
private final EventType type;
private final String globalTxId;
@@ -138,8 +138,8 @@
StringWriter writer = new StringWriter();
e.printStackTrace(new PrintWriter(writer));
String stackTrace = writer.toString();
- if (stackTrace.length() > PAYLOADS_MAX_LENGTH) {
- stackTrace = stackTrace.substring(0, PAYLOADS_MAX_LENGTH);
+ if (stackTrace.length() > Environment.getInstance().getPayloadsMaxLength()) {
+ stackTrace = stackTrace.substring(0, Environment.getInstance().getPayloadsMaxLength());
}
return stackTrace;
}
diff --git a/pack-common/src/main/java/org/apache/servicecomb/pack/common/Environment.java b/pack-common/src/main/java/org/apache/servicecomb/pack/common/Environment.java
new file mode 100644
index 0000000..e1d949a
--- /dev/null
+++ b/pack-common/src/main/java/org/apache/servicecomb/pack/common/Environment.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.pack.common;
+
+public class Environment {
+ private static Environment instance;
+ private static final int PAYLOADS_MAX_LENGTH = 10240;
+ private int payloadsMaxLength = 0;
+
+ public Environment() {
+ if (payloadsMaxLength == 0) {
+ String val = System.getenv("PAYLOADS_MAX_LENGTH");
+ if (val == null || val.trim().length() == 0) {
+ payloadsMaxLength = PAYLOADS_MAX_LENGTH;
+ } else {
+ try {
+ payloadsMaxLength = Integer.parseInt(val);
+ } catch (NumberFormatException ex) {
+ payloadsMaxLength = PAYLOADS_MAX_LENGTH;
+ }
+ }
+ }
+ }
+
+ public static Environment getInstance(){
+ if (instance == null) {
+ synchronized (Environment.class) {
+ if (instance == null) {
+ instance = new Environment();
+ }
+ }
+ }
+ return instance;
+ }
+
+ public int getPayloadsMaxLength() {
+ return this.payloadsMaxLength;
+ }
+}
\ No newline at end of file