[
https://issues.apache.org/jira/browse/SCB-741?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16550245#comment-16550245
]
ASF GitHub Bot commented on SCB-741:
------------------------------------
WillemJiang closed pull request #226: SCB-741 change payloads database type
from varbinary(10240) to blob
URL: https://github.com/apache/incubator-servicecomb-saga/pull/226
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/alpha/alpha-server/src/main/resources/schema-mysql.sql
b/alpha/alpha-server/src/main/resources/schema-mysql.sql
index ecb934e3..b1598573 100644
--- a/alpha/alpha-server/src/main/resources/schema-mysql.sql
+++ b/alpha/alpha-server/src/main/resources/schema-mysql.sql
@@ -26,7 +26,7 @@ CREATE TABLE IF NOT EXISTS TxEvent (
type varchar(50) NOT NULL,
compensationMethod varchar(256) NOT NULL,
expiryTime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
- payloads varbinary(10240),
+ payloads blob,
retries int(11) NOT NULL DEFAULT '0',
retryMethod varchar(256) DEFAULT NULL,
PRIMARY KEY (surrogateId),
@@ -42,7 +42,7 @@ CREATE TABLE IF NOT EXISTS Command (
localTxId varchar(36) NOT NULL,
parentTxId varchar(36) DEFAULT NULL,
compensationMethod varchar(256) NOT NULL,
- payloads varbinary(10240),
+ payloads blob,
status varchar(12),
lastModified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
version bigint NOT NULL,
diff --git a/alpha/alpha-server/src/test/resources/schema.sql
b/alpha/alpha-server/src/test/resources/schema.sql
index 8d708990..0da26860 100644
--- a/alpha/alpha-server/src/test/resources/schema.sql
+++ b/alpha/alpha-server/src/test/resources/schema.sql
@@ -28,7 +28,7 @@ CREATE TABLE IF NOT EXISTS TxEvent (
expiryTime TIMESTAMP NOT NULL,
retryMethod varchar(256) NOT NULL,
retries int DEFAULT 0 NOT NULL,
- payloads varbinary(10240)
+ payloads blob
);
CREATE TABLE IF NOT EXISTS Command (
@@ -40,7 +40,7 @@ CREATE TABLE IF NOT EXISTS Command (
localTxId varchar(36) NOT NULL,
parentTxId varchar(36) DEFAULT NULL,
compensationMethod varchar(256) NOT NULL,
- payloads varbinary(10240),
+ payloads blob,
status varchar(12),
lastModified TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
version bigint NOT NULL
diff --git
a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxAbortedEvent.java
b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxAbortedEvent.java
index f0bac541..0a4146af 100644
---
a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxAbortedEvent.java
+++
b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxAbortedEvent.java
@@ -23,6 +23,9 @@
import org.apache.servicecomb.saga.common.EventType;
public class TxAbortedEvent extends TxEvent {
+
+ private static final int PAYLOADS_MAX_LENGTH = 10240;
+
public TxAbortedEvent(String globalTxId, String localTxId, String
parentTxId, String compensationMethod, Throwable throwable) {
super(EventType.TxAbortedEvent, globalTxId, localTxId, parentTxId,
compensationMethod, 0, "", 0,
stackTrace(throwable));
@@ -31,6 +34,10 @@ public TxAbortedEvent(String globalTxId, String localTxId,
String parentTxId, St
private static String stackTrace(Throwable e) {
StringWriter writer = new StringWriter();
e.printStackTrace(new PrintWriter(writer));
- return writer.toString();
+ String stackTrace = writer.toString();
+ if (stackTrace.length() > PAYLOADS_MAX_LENGTH) {
+ stackTrace = stackTrace.substring(0, PAYLOADS_MAX_LENGTH);
+ }
+ return stackTrace;
}
}
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long
> for column 'payloads' at row 1
> ------------------------------------------------------------------------------------------------------------
>
> Key: SCB-741
> URL: https://issues.apache.org/jira/browse/SCB-741
> Project: Apache ServiceComb
> Issue Type: Bug
> Components: Saga
> Affects Versions: saga-0.3.0
> Environment: Mac,Intellij Idea
> Reporter: justdebugit
> Assignee: Gao Xin
> Priority: Major
>
> I encounter an Exception at Alpha Server
> {code:java}
> Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long
> for column 'payloads' at row 1
> at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3974)
> ~[mysql-connector-java-5.1.46.jar:5.1.46]
> at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912)
> ~[mysql-connector-java-5.1.46.jar:5.1.46]
> at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
> ~[mysql-connector-java-5.1.46.jar:5.1.46]
> at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
> ~[mysql-connector-java-5.1.46.jar:5.1.46]
> at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)
> ~[mysql-connector-java-5.1.46.jar:5.1.46]
> at
> com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
> ~[mysql-connector-java-5.1.46.jar:5.1.46]
> at
> com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2079)
> ~[mysql-connector-java-5.1.46.jar:5.1.46]
> at
> com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2013)
> ~[mysql-connector-java-5.1.46.jar:5.1.46]
> at
> com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5104)
> ~[mysql-connector-java-5.1.46.jar:5.1.46]
> at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1998)
> ~[mysql-connector-java-5.1.46.jar:5.1.46]
> at sun.reflect.GeneratedMethodAccessor68.invoke(Unknown Source) ~[na:na]
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[na:1.8.0_102]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102]
> at
> org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
> ~[tomcat-jdbc-8.5.31.jar:na]
> at com.sun.proxy.$Proxy106.executeUpdate(Unknown Source) ~[na:na]
> at
> org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:895)
> ~[org.eclipse.persistence.core-2.7.1.jar:na]
> ... 60 common frames omitted
> {code}
> I find it's because payload bytes is more than 10240
> {code:java}
> public class TxAbortedEvent extends TxEvent {
> public TxAbortedEvent(String globalTxId, String localTxId, String
> parentTxId, String compensationMethod, Throwable throwable) {
> super(EventType.TxAbortedEvent, globalTxId, localTxId, parentTxId,
> compensationMethod, 0, "", 0,
> stackTrace(throwable));
> }
> private static String stackTrace(Throwable e) {
> StringWriter writer = new StringWriter();
> e.printStackTrace(new PrintWriter(writer));
> return writer.toString();
> }
> }
> {code}
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)