You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by wu...@apache.org on 2022/01/13 04:34:14 UTC
[shardingsphere] branch master updated: Fix too many connections of MySQL. (#14716)
This is an automated email from the ASF dual-hosted git repository.
wuweijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 64be0bc Fix too many connections of MySQL. (#14716)
64be0bc is described below
commit 64be0bc96f542f11cb5534ee386a735867768f9f
Author: gin <ja...@163.com>
AuthorDate: Thu Jan 13 12:23:44 2022 +0800
Fix too many connections of MySQL. (#14716)
* Fix too many connections of MySQL.
* Fix to simple.
* Fix code style.
---
.../db/protocol/mysql/constant/MySQLServerErrorCode.java | 2 ++
.../db/protocol/mysql/packet/generic/MySQLErrPacket.java | 6 ++++--
.../text/admin/executor/AbstractDatabaseMetadataExecutor.java | 1 +
.../proxy/frontend/mysql/err/MySQLErrPacketFactory.java | 2 +-
4 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/constant/MySQLServerErrorCode.java b/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/constant/MySQLServerErrorCode.java
index 548c130..f373e76 100644
--- a/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/constant/MySQLServerErrorCode.java
+++ b/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/constant/MySQLServerErrorCode.java
@@ -54,6 +54,8 @@ public enum MySQLServerErrorCode implements SQLErrorCode {
ER_SP_DOES_NOT_EXIST(1305, "42000", "Message: Datasource or ShardingSphere rule does not exist"),
+ ER_CON_COUNT_ERROR(1040, "HY000", "Too many connections"),
+
ER_ERROR_ON_MODIFYING_GTID_EXECUTED_TABLE(3176, "HY000",
"Please do not modify the %s table with an XA transaction. This is an internal system table used to store GTIDs for committed transactions. "
+ "Although modifying it can lead to an inconsistent GTID state, if necessary you can modify it with a non-XA transaction.");
diff --git a/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLErrPacket.java b/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLErrPacket.java
index ddc0f05..00e7e99 100644
--- a/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLErrPacket.java
+++ b/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLErrPacket.java
@@ -65,8 +65,10 @@ public final class MySQLErrPacket implements MySQLPacket {
public void write(final MySQLPacketPayload payload) {
payload.writeInt1(HEADER);
payload.writeInt2(errorCode);
- payload.writeStringFix(SQL_STATE_MARKER);
- payload.writeStringFix(sqlState);
+ if (0 != sequenceId) {
+ payload.writeStringFix(SQL_STATE_MARKER);
+ payload.writeStringFix(sqlState);
+ }
payload.writeStringEOF(errorMessage);
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/executor/AbstractDatabaseMetadataExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/executor/AbstractDatabaseMetadataExecutor.java
index 109edbd..c42ee40 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/executor/AbstractDatabaseMetadataExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/executor/AbstractDatabaseMetadataExecutor.java
@@ -105,6 +105,7 @@ public abstract class AbstractDatabaseMetadataExecutor implements DatabaseAdminQ
/**
* Get the schema names as a condition for SQL execution.
*
+ * @param connectionSession connection session
* @return schema names
*/
protected abstract List<String> getSchemaNames(ConnectionSession connectionSession);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactory.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactory.java
index 3ce7c60..2c8ec2d 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactory.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactory.java
@@ -124,7 +124,7 @@ public final class MySQLErrPacketFactory {
return new MySQLErrPacket(1, CommonErrorCode.SCALING_JOB_NOT_EXIST, ((PipelineJobNotFoundException) cause).getJobId());
}
if (cause instanceof FrontendTooManyConnectionsException) {
- return new MySQLErrPacket(1, CommonErrorCode.TOO_MANY_CONNECTIONS_EXCEPTION, CommonErrorCode.TOO_MANY_CONNECTIONS_EXCEPTION.getErrorMessage());
+ return new MySQLErrPacket(0, MySQLServerErrorCode.ER_CON_COUNT_ERROR, MySQLServerErrorCode.ER_CON_COUNT_ERROR.getErrorMessage());
}
if (cause instanceof RuntimeException) {
return new MySQLErrPacket(1, CommonErrorCode.RUNTIME_EXCEPTION, cause.getMessage());