diff --git a/.asf.yaml b/.asf.yaml
index ff339b1a669b..e91e3f2ab5ab 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -25,7 +25,6 @@ github:
- grpc-proxy
- dubbo-proxy
- sofa-proxy
- - motan-proxy
- reactor-java
enabled_merge_buttons:
squash: true
diff --git a/.github/workflows/integrated-test-k8s-ingress.yml b/.github/workflows/integrated-test-k8s-ingress.yml
index c6aa33c88b55..cb8fdb08a8bf 100644
--- a/.github/workflows/integrated-test-k8s-ingress.yml
+++ b/.github/workflows/integrated-test-k8s-ingress.yml
@@ -28,7 +28,6 @@ jobs:
case:
- shenyu-integrated-test-k8s-ingress-http
- shenyu-integrated-test-k8s-ingress-apache-dubbo
- - shenyu-integrated-test-k8s-ingress-motan
- shenyu-integrated-test-k8s-ingress-websocket
- shenyu-integrated-test-k8s-ingress-grpc
# - shenyu-integrated-test-k8s-ingress-sofa
diff --git a/.github/workflows/integrated-test.yml b/.github/workflows/integrated-test.yml
index 9afc310f1c2f..86073803a377 100644
--- a/.github/workflows/integrated-test.yml
+++ b/.github/workflows/integrated-test.yml
@@ -30,7 +30,6 @@ jobs:
- shenyu-integrated-test-grpc
- shenyu-integrated-test-http
- shenyu-integrated-test-https
- - shenyu-integrated-test-motan
- shenyu-integrated-test-spring-cloud
- shenyu-integrated-test-sofa
- shenyu-integrated-test-websocket
diff --git a/README.md b/README.md
index 8cdbd00e80bd..bd529650a66f 100644
--- a/README.md
+++ b/README.md
@@ -78,7 +78,7 @@ He is known as one of the three greatest kings of ancient China, along with Yao
# Features
-* Proxy: Support for Apache® Dubbo™, Spring Cloud, gRPC, Motan, SOFA, TARS, WebSocket, MQTT
+* Proxy: Support for Apache® Dubbo™, Spring Cloud, gRPC, SOFA, TARS, WebSocket, MQTT
* Security: Sign, OAuth 2.0, JSON Web Tokens, WAF plugin
* API governance: Request, response, parameter mapping, Hystrix, RateLimiter plugin
* Observability: Tracing, metrics, logging plugin
diff --git a/db/init/mysql/schema.sql b/db/init/mysql/schema.sql
index c838022633b8..8891da9e819f 100644
--- a/db/init/mysql/schema.sql
+++ b/db/init/mysql/schema.sql
@@ -51,7 +51,7 @@ CREATE TABLE `api` (
`consume` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'consume content-type',
`produce` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'produce content-type',
`version` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'api version,for example V0.01',
- `rpc_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'http,dubbo,sofa,tars,websocket,motan,grpc',
+ `rpc_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'http,dubbo,sofa,tars,websocket,grpc',
`state` tinyint(4) NOT NULL COMMENT '0-unpublished,1-published,2-offline',
`ext` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'extended fields',
`api_owner` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'api_owner',
@@ -980,7 +980,6 @@ INSERT INTO `plugin` VALUES ('13', 'tars', '{\"multiSelectorHandle\":\"1\",\"mul
INSERT INTO `plugin` VALUES ('14', 'contextPath', NULL, 'HttpProcess', 80, 1, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
INSERT INTO `plugin` VALUES ('15', 'grpc', '{\"multiSelectorHandle\":\"1\",\"multiRuleHandle\":\"0\",\"threadpool\":\"shared\"}', 'Proxy', 310, 0, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
INSERT INTO `plugin` VALUES ('16', 'redirect', NULL, 'HttpProcess', 110, 0, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
-INSERT INTO `plugin` VALUES ('17', 'motan', '{\"registerProtocol\":\"direct\",\"registerAddress\":\"127.0.0.1:2181\",\"corethreads\":0,\"threads\":2147483647,\"queues\":0,\"threadpool\":\"shared\"}', 'Proxy', 310, 0, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
INSERT INTO `plugin` VALUES ('18', 'loggingConsole', NULL, 'Logging', 160, 0, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
INSERT INTO `plugin` VALUES ('19', 'jwt', '{\"secretKey\":\"key\"}', 'Authentication', 30, 0, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
INSERT INTO `plugin` VALUES ('2', 'waf', '{\"model\":\"black\"}', 'Authentication', 50, 0, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
@@ -1166,14 +1165,6 @@ INSERT INTO `plugin_handle` VALUES ('1529402613204172830', '26', 'loadBalance',
INSERT INTO `plugin_handle` VALUES ('1529402613204172831', '26', 'retry', 'retryCount', 1, 2, 1, NULL, '2022-05-25 18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1529402613204172832', '26', 'timeout', 'timeout', 1, 2, 2, '{\"defaultValue\":\"3000\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1529402613204172833', '26', 'multiSelectorHandle', 'multiSelectorHandle', 3, 3, 0, NULL, '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1529402613204172834', '17', 'registerProtocol', 'registerProtocol', 2, 3, 0, '{\"required\":\"0\",\"defaultValue\":\"zk\",\"placeholder\":\"registerProtocol\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1529402613204172835', '17', 'corethreads', 'corethreads', 1, 3, 2, '{\"required\":\"0\",\"defaultValue\":\"0\",\"placeholder\":\"corethreads\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1529402613204172836', '17', 'threads', 'threads', 1, 3, 3, '{\"required\":\"0\",\"defaultValue\":\"2147483647\",\"placeholder\":\"threads\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1529402613204172837', '17', 'queues', 'queues', 1, 3, 4, '{\"required\":\"0\",\"defaultValue\":\"0\",\"placeholder\":\"queues\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1529402613204172838', '17', 'threadpool', 'threadpool', 3, 3, 5, '{\"required\":\"0\",\"defaultValue\":\"cached\",\"placeholder\":\"threadpool\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1678997557628272641', '17', 'registerAddress', 'registerAddress', 2, 3, 1, '{\"required\":\"0\",\"defaultValue\":\"127.0.0.1:2181\",\"placeholder\":\"registerAddress\",\"rule\":\"\"}', '2023-01-10 10:08:01.158', '2023-01-10 10:08:01.158');
-INSERT INTO `plugin_handle` VALUES ('1829402613204172834', '17', 'registerProtocol', 'registerProtocol', 2, 1, 0, '{\"required\":\"0\",\"defaultValue\":\"\",\"placeholder\":\"registerProtocol\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1878997557628272641', '17', 'registerAddress', 'registerAddress', 2, 1, 1, '{\"required\":\"0\",\"defaultValue\":\"\",\"placeholder\":\"registerAddress\",\"rule\":\"\"}', '2023-01-10 10:08:01.158', '2023-01-10 10:08:01.158');
INSERT INTO `plugin_handle` VALUES ('1529402613204172839', '28', 'port', 'port', 1, 3, 1, NULL, '2022-05-25 18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1529402613204172840', '28', 'bossGroupThreadCount', 'bossGroupThreadCount', 1, 3, 1, NULL, '2022-05-25 18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1529402613204172841', '28', 'maxPayloadSize', 'maxPayloadSize', 1, 3, 1, NULL, '2022-05-25 18:02:53', '2022-05-25 18:02:53');
@@ -1584,7 +1575,6 @@ INSERT INTO `resource` VALUES ('1529402639284355075', '1346775491550474240', 'ta
INSERT INTO `resource` VALUES ('1529402639284355076', '1346775491550474240', 'contextPath', 'contextPath', '/plug/contextPath', 'contextPath', 1, 0, 'retweet', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639284355077', '1346775491550474240', 'grpc', 'grpc', '/plug/grpc', 'grpc', 1, 0, 'border-bottom', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639284355078', '1346775491550474240', 'redirect', 'redirect', '/plug/redirect', 'redirect', 1, 0, 'align-left', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639284355079', '1346775491550474240', 'motan', 'motan', '/plug/motan', 'motan', 1, 0, 'stop', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639284355080', '1346775491550474240', 'loggingConsole', 'loggingConsole', '/plug/loggingConsole', 'loggingConsole', 1, 0, 'fire', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639284355081', '1346775491550474240', 'jwt', 'jwt', '/plug/jwt', 'jwt', 1, 0, 'align-left', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639284355082', '1346775491550474240', 'waf', 'waf', '/plug/waf', 'waf', 1, 0, 'block', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
@@ -1676,15 +1666,6 @@ INSERT INTO `resource` VALUES ('1529402639372435470', '1529402639284355078', 'SH
INSERT INTO `resource` VALUES ('1529402639372435471', '1529402639284355078', 'SHENYU.BUTTON.PLUGIN.RULE.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:redirectRule:edit', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639372435472', '1529402639284355078', 'SHENYU.BUTTON.PLUGIN.RULE.DELETE', '', '', '', 2, 0, '', 1, 0, 'plugin:redirectRule:delete', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639372435473', '1529402639284355078', 'SHENYU.BUTTON.PLUGIN.SYNCHRONIZE', '', '', '', 2, 0, '', 1, 0, 'plugin:redirect:modify', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435474', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.ADD', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:add', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435475', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.QUERY', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:query', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435476', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:edit', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435477', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.DELETE', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:delete', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435478', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.RULE.ADD', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:add', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435479', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.RULE.QUERY', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:query', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435480', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.RULE.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:edit', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435481', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.RULE.DELETE', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:delete', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435482', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.SYNCHRONIZE', '', '', '', 2, 0, '', 1, 0, 'plugin:motan:modify', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639372435483', '1529402639284355080', 'SHENYU.BUTTON.PLUGIN.SELECTOR.ADD', '', '', '', 2, 0, '', 1, 0, 'plugin:loggingConsoleSelector:add', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639372435484', '1529402639284355080', 'SHENYU.BUTTON.PLUGIN.SELECTOR.QUERY', '', '', '', 2, 0, '', 1, 0, 'plugin:loggingConsoleSelector:query', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639372435485', '1529402639284355080', 'SHENYU.BUTTON.PLUGIN.SELECTOR.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:loggingConsoleSelector:edit', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
@@ -2620,7 +2601,6 @@ INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `
INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822150','649330b6-c2d7-4edc-be8e-8a54df9eb385','14', NULL, 80, 1, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822151','649330b6-c2d7-4edc-be8e-8a54df9eb385','15', '{\"multiSelectorHandle\":\"1\",\"multiRuleHandle\":\"0\",\"threadpool\":\"shared\"}', 310, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822152','649330b6-c2d7-4edc-be8e-8a54df9eb385','16', NULL, 110, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
-INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822153','649330b6-c2d7-4edc-be8e-8a54df9eb385','17', '{\"registerProtocol\":\"direct\",\"registerAddress\":\"127.0.0.1:2181\",\"corethreads\":0,\"threads\":2147483647,\"queues\":0,\"threadpool\":\"shared\"}', 310, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822154','649330b6-c2d7-4edc-be8e-8a54df9eb385','18', NULL, 160, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822155','649330b6-c2d7-4edc-be8e-8a54df9eb385','19', '{\"secretKey\":\"key\"}', 30, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822156','649330b6-c2d7-4edc-be8e-8a54df9eb385','2', '{\"model\":\"black\"}', 50, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
diff --git a/db/init/ob/schema.sql b/db/init/ob/schema.sql
index 906323b20b10..d2fdbc7cb125 100644
--- a/db/init/ob/schema.sql
+++ b/db/init/ob/schema.sql
@@ -51,7 +51,7 @@ CREATE TABLE `api` (
`consume` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'consume content-type',
`produce` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'produce content-type',
`version` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'api version,for example V0.01',
- `rpc_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'http,dubbo,sofa,tars,websocket,motan,grpc',
+ `rpc_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'http,dubbo,sofa,tars,websocket,grpc',
`state` tinyint(4) NOT NULL COMMENT '0-unpublished,1-published,2-offline',
`ext` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'extended fields',
`api_owner` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'api_owner',
@@ -951,7 +951,6 @@ INSERT INTO `plugin` VALUES ('13', 'tars', '{\"multiSelectorHandle\":\"1\",\"mul
INSERT INTO `plugin` VALUES ('14', 'contextPath', NULL, 'HttpProcess', 80, 1, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
INSERT INTO `plugin` VALUES ('15', 'grpc', '{\"multiSelectorHandle\":\"1\",\"multiRuleHandle\":\"0\",\"threadpool\":\"shared\"}', 'Proxy', 310, 0, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
INSERT INTO `plugin` VALUES ('16', 'redirect', NULL, 'HttpProcess', 110, 0, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
-INSERT INTO `plugin` VALUES ('17', 'motan', '{\"registerProtocol\":\"direct\",\"registerAddress\":\"127.0.0.1:2181\",\"corethreads\":0,\"threads\":2147483647,\"queues\":0,\"threadpool\":\"shared\"}', 'Proxy', 310, 0, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
INSERT INTO `plugin` VALUES ('18', 'loggingConsole', NULL, 'Logging', 160, 0, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
INSERT INTO `plugin` VALUES ('19', 'jwt', '{\"secretKey\":\"key\"}', 'Authentication', 30, 0, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
INSERT INTO `plugin` VALUES ('2', 'waf', '{\"model\":\"black\"}', 'Authentication', 50, 0, '2022-05-25 18:02:53', '2022-05-25 18:02:53',null);
@@ -1133,13 +1132,6 @@ INSERT INTO `plugin_handle` VALUES ('1529402613204172830', '26', 'loadBalance',
INSERT INTO `plugin_handle` VALUES ('1529402613204172831', '26', 'retry', 'retryCount', 1, 2, 1, NULL, '2022-05-25 18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1529402613204172832', '26', 'timeout', 'timeout', 1, 2, 2, '{\"defaultValue\":\"3000\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1529402613204172833', '26', 'multiSelectorHandle', 'multiSelectorHandle', 3, 3, 0, NULL, '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1529402613204172834', '17', 'registerProtocol', 'registerProtocol', 2, 3, 0, '{\"required\":\"0\",\"defaultValue\":\"zk\",\"placeholder\":\"registerProtocol\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1529402613204172835', '17', 'corethreads', 'corethreads', 1, 3, 2, '{\"required\":\"0\",\"defaultValue\":\"0\",\"placeholder\":\"corethreads\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1529402613204172836', '17', 'threads', 'threads', 1, 3, 3, '{\"required\":\"0\",\"defaultValue\":\"2147483647\",\"placeholder\":\"threads\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1529402613204172837', '17', 'queues', 'queues', 1, 3, 4, '{\"required\":\"0\",\"defaultValue\":\"0\",\"placeholder\":\"queues\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1529402613204172838', '17', 'threadpool', 'threadpool', 3, 3, 5, '{\"required\":\"0\",\"defaultValue\":\"cached\",\"placeholder\":\"threadpool\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1829402613204172834', '17', 'registerProtocol', 'registerProtocol', 2, 1, 0, '{\"required\":\"0\",\"defaultValue\":\"\",\"placeholder\":\"registerProtocol\",\"rule\":\"\"}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO `plugin_handle` VALUES ('1878997557628272641', '17', 'registerAddress', 'registerAddress', 2, 1, 1, '{\"required\":\"0\",\"defaultValue\":\"\",\"placeholder\":\"registerAddress\",\"rule\":\"\"}', '2023-01-10 10:08:01.158', '2023-01-10 10:08:01.158');
INSERT INTO `plugin_handle` VALUES ('1529402613204172839', '28', 'port', 'port', 1, 3, 1, NULL, '2022-05-25 18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1529402613204172840', '28', 'bossGroupThreadCount', 'bossGroupThreadCount', 1, 3, 1, NULL, '2022-05-25 18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1529402613204172841', '28', 'maxPayloadSize', 'maxPayloadSize', 1, 3, 1, NULL, '2022-05-25 18:02:53', '2022-05-25 18:02:53');
@@ -1328,7 +1320,6 @@ INSERT INTO `plugin_handle` VALUES ('1678997769998467072', '42', 'clientMaxLifeT
INSERT INTO `plugin_handle` VALUES ('1678997277012557824', '42', 'clientMaxConnections', 'clientMaxConnections', 2, 1, 6, '{\"required\":\"0\",\"defaultValue\":\"20\",\"rule\":\"\"}', '2023-01-10 10:08:01.158', '2023-01-10 10:08:01.158');
INSERT INTO `plugin_handle` VALUES ('1678997557628272640', '42', 'clientPendingAcquireTimeout', 'clientPendingAcquireTimeout', 2, 1, 5, '{\"required\":\"0\",\"defaultValue\":\"5\",\"rule\":\"\"}', '2023-01-10 10:08:01.158', '2023-01-10 10:08:01.158');
-INSERT INTO `plugin_handle` VALUES ('1678997557628272641', '17', 'registerAddress', 'registerAddress', 2, 3, 1, '{\"required\":\"0\",\"defaultValue\":\"127.0.0.1:2181\",\"placeholder\":\"registerAddress\",\"rule\":\"\"}', '2023-01-10 10:08:01.158', '2023-01-10 10:08:01.158');
INSERT INTO `plugin_handle` VALUES ('1678997557628272642', '15', 'loadBalance', 'loadBalance', 3, 2, 3, '{\"required\":\"0\",\"defaultValue\":\"random\",\"rule\":\"\"}', '2023-09-05 18:02:53', '2023-09-05 18:02:53');
@@ -1533,7 +1524,6 @@ INSERT INTO `resource` VALUES ('1529402639284355075', '1346775491550474240', 'ta
INSERT INTO `resource` VALUES ('1529402639284355076', '1346775491550474240', 'contextPath', 'contextPath', '/plug/contextPath', 'contextPath', 1, 0, 'retweet', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639284355077', '1346775491550474240', 'grpc', 'grpc', '/plug/grpc', 'grpc', 1, 0, 'border-bottom', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639284355078', '1346775491550474240', 'redirect', 'redirect', '/plug/redirect', 'redirect', 1, 0, 'align-left', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639284355079', '1346775491550474240', 'motan', 'motan', '/plug/motan', 'motan', 1, 0, 'stop', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639284355080', '1346775491550474240', 'loggingConsole', 'loggingConsole', '/plug/loggingConsole', 'loggingConsole', 1, 0, 'fire', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639284355081', '1346775491550474240', 'jwt', 'jwt', '/plug/jwt', 'jwt', 1, 0, 'align-left', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639284355082', '1346775491550474240', 'waf', 'waf', '/plug/waf', 'waf', 1, 0, 'block', 0, 0, '', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
@@ -1625,15 +1615,6 @@ INSERT INTO `resource` VALUES ('1529402639372435470', '1529402639284355078', 'SH
INSERT INTO `resource` VALUES ('1529402639372435471', '1529402639284355078', 'SHENYU.BUTTON.PLUGIN.RULE.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:redirectRule:edit', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639372435472', '1529402639284355078', 'SHENYU.BUTTON.PLUGIN.RULE.DELETE', '', '', '', 2, 0, '', 1, 0, 'plugin:redirectRule:delete', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639372435473', '1529402639284355078', 'SHENYU.BUTTON.PLUGIN.SYNCHRONIZE', '', '', '', 2, 0, '', 1, 0, 'plugin:redirect:modify', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435474', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.ADD', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:add', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435475', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.QUERY', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:query', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435476', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:edit', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435477', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.DELETE', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:delete', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435478', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.RULE.ADD', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:add', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435479', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.RULE.QUERY', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:query', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435480', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.RULE.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:edit', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435481', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.RULE.DELETE', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:delete', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
-INSERT INTO `resource` VALUES ('1529402639372435482', '1529402639284355079', 'SHENYU.BUTTON.PLUGIN.SYNCHRONIZE', '', '', '', 2, 0, '', 1, 0, 'plugin:motan:modify', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639372435483', '1529402639284355080', 'SHENYU.BUTTON.PLUGIN.SELECTOR.ADD', '', '', '', 2, 0, '', 1, 0, 'plugin:loggingConsoleSelector:add', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639372435484', '1529402639284355080', 'SHENYU.BUTTON.PLUGIN.SELECTOR.QUERY', '', '', '', 2, 0, '', 1, 0, 'plugin:loggingConsoleSelector:query', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
INSERT INTO `resource` VALUES ('1529402639372435485', '1529402639284355080', 'SHENYU.BUTTON.PLUGIN.SELECTOR.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:loggingConsoleSelector:edit', 1, '2022-05-25 18:02:58', '2022-05-25 18:02:58');
@@ -2547,7 +2528,6 @@ INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `
INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822150','649330b6-c2d7-4edc-be8e-8a54df9eb385','14', NULL, 80, 1, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822151','649330b6-c2d7-4edc-be8e-8a54df9eb385','15', '{\"multiSelectorHandle\":\"1\",\"multiRuleHandle\":\"0\",\"threadpool\":\"shared\"}', 310, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822152','649330b6-c2d7-4edc-be8e-8a54df9eb385','16', NULL, 110, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
-INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822153','649330b6-c2d7-4edc-be8e-8a54df9eb385','17', '{\"registerProtocol\":\"direct\",\"registerAddress\":\"127.0.0.1:2181\",\"corethreads\":0,\"threads\":2147483647,\"queues\":0,\"threadpool\":\"shared\"}', 310, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822154','649330b6-c2d7-4edc-be8e-8a54df9eb385','18', NULL, 160, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822155','649330b6-c2d7-4edc-be8e-8a54df9eb385','19', '{\"secretKey\":\"key\"}', 30, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822156','649330b6-c2d7-4edc-be8e-8a54df9eb385','2', '{\"model\":\"black\"}', 50, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
diff --git a/db/init/og/create-table.sql b/db/init/og/create-table.sql
index 932dd7b449f8..bbaee3d598b2 100644
--- a/db/init/og/create-table.sql
+++ b/db/init/og/create-table.sql
@@ -49,7 +49,7 @@ COMMENT ON COLUMN "public"."api"."http_method" IS '0-get,1-head,2-post,3-put,4-p
COMMENT ON COLUMN "public"."api"."consume" IS 'consume content-type';
COMMENT ON COLUMN "public"."api"."produce" IS 'produce content-type';
COMMENT ON COLUMN "public"."api"."version" IS 'api version,for example V0.01';
-COMMENT ON COLUMN "public"."api"."rpc_type" IS 'http,dubbo,sofa,tars,websocket,motan,grpc';
+COMMENT ON COLUMN "public"."api"."rpc_type" IS 'http,dubbo,sofa,tars,websocket,grpc';
COMMENT ON COLUMN "public"."api"."state" IS '0-unpublished,1-published,2-offline';
COMMENT ON COLUMN "public"."api"."ext" IS 'extended fields';
COMMENT ON COLUMN "public"."api"."api_owner" IS 'api_owner';
@@ -953,7 +953,6 @@ INSERT INTO "public"."plugin" VALUES ('13', 'tars', '{"multiSelectorHandle":"1",
INSERT INTO "public"."plugin" VALUES ('14', 'contextPath', NULL, 'HttpProcess', 80, 1, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
INSERT INTO "public"."plugin" VALUES ('15', 'grpc', '{"multiSelectorHandle":"1","multiRuleHandle":"0","threadpool":"shared"}', 'Proxy', 310, 0, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
INSERT INTO "public"."plugin" VALUES ('16', 'redirect', NULL, 'HttpProcess', 110, 0, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
-INSERT INTO "public"."plugin" VALUES ('17', 'motan', '{"registerProtocol":"direct",registerAddress":"127.0.0.1:2181","corethreads":0,"threads":2147483647,"queues":0,"threadpool":"shared"}', 'Proxy', 310, 0, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
INSERT INTO "public"."plugin" VALUES ('18', 'loggingConsole', NULL, 'Logging', 160, 0, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
INSERT INTO "public"."plugin" VALUES ('19', 'jwt', '{"secretKey":"key"}', 'Authentication', 30, 0, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
INSERT INTO "public"."plugin" VALUES ('2', 'waf', '{"model":"black"}', 'Authentication', 50, 0, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
@@ -1155,14 +1154,6 @@ INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524875', '26', 'loadB
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524876', '26', 'retry', 'retryCount', 1, 2, 1, NULL, '2022-05-25 18:08:01', '2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524877', '26', 'timeout', 'timeout', 1, 2, 2, '{"defaultValue":"3000","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524878', '26', 'multiSelectorHandle', 'multiSelectorHandle', 3, 3, 0, NULL, '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524879', '17', 'registerProtocol', 'registerProtocol', 2, 3, 0, '{"required":"0","defaultValue":"zk","placeholder":"registerProtocol","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1678997557628272641', '17', 'registerAddress', 'registerAddress', 2, 3, 1, '{"required":"0","defaultValue":"127.0.0.1:2181","placeholder":"registerAddress","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524880', '17', 'corethreads', 'corethreads', 1, 3, 2, '{"required":"0","defaultValue":"0","placeholder":"corethreads","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524881', '17', 'threads', 'threads', 1, 3, 3, '{"required":"0","defaultValue":"2147483647","placeholder":"threads","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524882', '17', 'queues', 'queues', 1, 3, 4, '{"required":"0","defaultValue":"0","placeholder":"queues","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524883', '17', 'threadpool', 'threadpool', 3, 3, 5, '{"required":"0","defaultValue":"cached","placeholder":"threadpool","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1829402613204172834', '17', 'registerProtocol', 'registerProtocol', 2, 1, 0, '{"required":"0","defaultValue":"","placeholder":"registerProtocol","rule":""}', '2022-05-25 18:02:53', '2022-05-25 18:02:53');
-INSERT INTO "public"."plugin_handle" VALUES ('1878997557628272641', '17', 'registerAddress', 'registerAddress', 2, 1, 1, '{"required":"0","defaultValue":"","placeholder":"registerAddress","rule":""}', '2023-01-10 10:08:01.158', '2023-01-10 10:08:01.158');
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524884', '28', 'port', 'port', 1, 3, 1, NULL, '2022-05-25 18:08:01', '2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524885', '28', 'bossGroupThreadCount', 'bossGroupThreadCount', 1, 3, 1, NULL, '2022-05-25 18:08:01', '2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524886', '28', 'maxPayloadSize', 'maxPayloadSize', 1, 3, 1, NULL, '2022-05-25 18:08:01', '2022-05-25 18:08:01');
@@ -1555,7 +1546,6 @@ INSERT INTO "public"."resource" VALUES ('1529403932781187075', '1346775491550474
INSERT INTO "public"."resource" VALUES ('1529403932781187076', '1346775491550474240', 'contextPath', 'contextPath', '/plug/contextPath', 'contextPath', 1, 0, 'thunderbolt', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932781187077', '1346775491550474240', 'grpc', 'grpc', '/plug/grpc', 'grpc', 1, 0, 'highlight', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932781187078', '1346775491550474240', 'redirect', 'redirect', '/plug/redirect', 'redirect', 1, 0, 'align-left', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932781187079', '1346775491550474240', 'motan', 'motan', '/plug/motan', 'motan', 1, 0, 'highlight', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932781187080', '1346775491550474240', 'loggingConsole', 'loggingConsole', '/plug/loggingConsole', 'loggingConsole', 1, 0, 'block', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932781187081', '1346775491550474240', 'jwt', 'jwt', '/plug/jwt', 'jwt', 1, 0, 'pic-left', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932781187082', '1346775491550474240', 'waf', 'waf', '/plug/waf', 'waf', 1, 0, 'border-bottom', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
@@ -1647,15 +1637,6 @@ INSERT INTO "public"."resource" VALUES ('1529403932877656132', '1529403932781187
INSERT INTO "public"."resource" VALUES ('1529403932877656133', '1529403932781187078', 'SHENYU.BUTTON.PLUGIN.RULE.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:redirectRule:edit', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932877656134', '1529403932781187078', 'SHENYU.BUTTON.PLUGIN.RULE.DELETE', '', '', '', 2, 0, '', 1, 0, 'plugin:redirectRule:delete', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932877656135', '1529403932781187078', 'SHENYU.BUTTON.PLUGIN.SYNCHRONIZE', '', '', '', 2, 0, '', 1, 0, 'plugin:redirect:modify', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656136', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.ADD', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:add', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656137', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.QUERY', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:query', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656138', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:edit', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656139', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.DELETE', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:delete', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656140', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.RULE.ADD', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:add', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656141', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.RULE.QUERY', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:query', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656142', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.RULE.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:edit', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656143', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.RULE.DELETE', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:delete', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656144', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.SYNCHRONIZE', '', '', '', 2, 0, '', 1, 0, 'plugin:motan:modify', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932877656145', '1529403932781187080', 'SHENYU.BUTTON.PLUGIN.SELECTOR.ADD', '', '', '', 2, 0, '', 1, 0, 'plugin:loggingConsoleSelector:add', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932877656146', '1529403932781187080', 'SHENYU.BUTTON.PLUGIN.SELECTOR.QUERY', '', '', '', 2, 0, '', 1, 0, 'plugin:loggingConsoleSelector:query', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932877656147', '1529403932781187080', 'SHENYU.BUTTON.PLUGIN.SELECTOR.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:loggingConsoleSelector:edit', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
@@ -2732,7 +2713,6 @@ INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822149','64933
INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822150','649330b6-c2d7-4edc-be8e-8a54df9eb385','14', NULL, 80, 1, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822151','649330b6-c2d7-4edc-be8e-8a54df9eb385','15', '{"multiSelectorHandle":"1","multiRuleHandle":"0","threadpool":"shared"}', 310, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822152','649330b6-c2d7-4edc-be8e-8a54df9eb385','16', NULL, 110, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
-INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822153','649330b6-c2d7-4edc-be8e-8a54df9eb385','17', '{"registerProtocol":"direct","registerAddress":"127.0.0.1:2181","corethreads":0,"threads":2147483647,"queues":0,"threadpool":"shared"}', 310, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822154','649330b6-c2d7-4edc-be8e-8a54df9eb385','18', NULL, 160, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822155','649330b6-c2d7-4edc-be8e-8a54df9eb385','19', '{"secretKey":"key"}', 30, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822156','649330b6-c2d7-4edc-be8e-8a54df9eb385','2', '{"model":"black"}', 50, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
diff --git a/db/init/oracle/schema.sql b/db/init/oracle/schema.sql
index 7aeb47b46c50..6812ba975897 100644
--- a/db/init/oracle/schema.sql
+++ b/db/init/oracle/schema.sql
@@ -462,7 +462,7 @@ comment on column API.produce
comment on column API.version
is 'api version,for example V0.01';
comment on column API.rpc_type
- is 'http,dubbo,sofa,tars,websocket,motan,grpc';
+ is 'http,dubbo,sofa,tars,websocket,grpc';
comment on column API.state
is '0-unpublished,1-published,2-offline';
comment on column API.ext
@@ -1164,7 +1164,6 @@ INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin(id)) */ INTO plugin (id, name, role
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin(id)) */ INTO plugin (id, name, role, sort, enabled) VALUES ('14', 'contextPath', 'HttpProcess', 80,'1');
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin(id)) */ INTO plugin (id, name, role, sort, config, enabled) VALUES ('15', 'grpc', 'Proxy', 310,'{"multiSelectorHandle":"1","multiRuleHandle":"0","threadpool":"shared"}','0');
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin(id)) */ INTO plugin (id, name, role, sort, enabled) VALUES ('16', 'redirect', 'HttpProcess', 110,'0');
-INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin(id)) */ INTO plugin (id, name, role, sort, config, enabled) VALUES ('17', 'motan', 'Proxy', 310,'{"registerProtocol":"zk",registerAddress":"127.0.0.1:2181","corethreads":0,"threads":2147483647,"queues":0,"threadpool":"shared"}','0');
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin(id)) */ INTO plugin (id, name, role, sort, enabled) VALUES ('18', 'loggingConsole', 'Logging', 160, '0');
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin(id)) */ INTO plugin (id, name, role, sort, config, enabled) VALUES ('19', 'jwt', 'Authentication', 30, '{"secretKey":"key"}', '0');
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin(id)) */ INTO plugin (id, name, role, sort, enabled) VALUES ('20', 'request', 'HttpProcess', 120, '0');
@@ -3017,7 +3016,6 @@ INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX (namespace_plugin_rel(id)) */ INTO namespa
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX (namespace_plugin_rel(id)) */ INTO namespace_plugin_rel (id,namespace_id,plugin_id, config, sort, enabled) VALUES ('1801816010882822150','649330b6-c2d7-4edc-be8e-8a54df9eb385','14', NULL, 80, 1);
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX (namespace_plugin_rel(id)) */ INTO namespace_plugin_rel (id,namespace_id,plugin_id, config, sort, enabled) VALUES ('1801816010882822151','649330b6-c2d7-4edc-be8e-8a54df9eb385','15', '{"multiSelectorHandle":"1","multiRuleHandle":"0","threadpool":"shared"}', 310, 0);
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX (namespace_plugin_rel(id)) */ INTO namespace_plugin_rel (id,namespace_id,plugin_id, config, sort, enabled) VALUES ('1801816010882822152','649330b6-c2d7-4edc-be8e-8a54df9eb385','16', NULL, 110, 0);
-INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX (namespace_plugin_rel(id)) */ INTO namespace_plugin_rel (id,namespace_id,plugin_id, config, sort, enabled) VALUES ('1801816010882822153','649330b6-c2d7-4edc-be8e-8a54df9eb385','17', '{"registerProtocol":"direct","registerAddress":"127.0.0.1:2181","corethreads":0,"threads":2147483647,"queues":0,"threadpool":"shared"}', 310, 0);
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX (namespace_plugin_rel(id)) */ INTO namespace_plugin_rel (id,namespace_id,plugin_id, config, sort, enabled) VALUES ('1801816010882822154','649330b6-c2d7-4edc-be8e-8a54df9eb385','18', NULL, 160, 0);
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX (namespace_plugin_rel(id)) */ INTO namespace_plugin_rel (id,namespace_id,plugin_id, config, sort, enabled) VALUES ('1801816010882822155','649330b6-c2d7-4edc-be8e-8a54df9eb385','19', '{"secretKey":"key"}', 30, 0);
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX (namespace_plugin_rel(id)) */ INTO namespace_plugin_rel (id,namespace_id,plugin_id, config, sort, enabled) VALUES ('1801816010882822156','649330b6-c2d7-4edc-be8e-8a54df9eb385','2', '{"model":"black"}', 50, 0);
diff --git a/db/init/pg/create-table.sql b/db/init/pg/create-table.sql
index d1e0130fd33d..23cc1577a510 100644
--- a/db/init/pg/create-table.sql
+++ b/db/init/pg/create-table.sql
@@ -46,7 +46,7 @@ COMMENT ON COLUMN "public"."api"."http_method" IS '0-get,1-head,2-post,3-put,4-p
COMMENT ON COLUMN "public"."api"."consume" IS 'consume content-type';
COMMENT ON COLUMN "public"."api"."produce" IS 'produce content-type';
COMMENT ON COLUMN "public"."api"."version" IS 'api version,for example V0.01';
-COMMENT ON COLUMN "public"."api"."rpc_type" IS 'http,dubbo,sofa,tars,websocket,motan,grpc';
+COMMENT ON COLUMN "public"."api"."rpc_type" IS 'http,dubbo,sofa,tars,websocket,grpc';
COMMENT ON COLUMN "public"."api"."state" IS '0-unpublished,1-published,2-offline';
COMMENT ON COLUMN "public"."api"."ext" IS 'extended fields';
COMMENT ON COLUMN "public"."api"."api_owner" IS 'api_owner';
@@ -1011,7 +1011,6 @@ INSERT INTO "public"."plugin" VALUES ('13', 'tars', '{"multiSelectorHandle":"1",
INSERT INTO "public"."plugin" VALUES ('14', 'contextPath', NULL, 'HttpProcess', 80, 1, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
INSERT INTO "public"."plugin" VALUES ('15', 'grpc', '{"multiSelectorHandle":"1","multiRuleHandle":"0","threadpool":"shared"}', 'Proxy', 310, 0, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
INSERT INTO "public"."plugin" VALUES ('16', 'redirect', NULL, 'HttpProcess', 110, 0, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
-INSERT INTO "public"."plugin" VALUES ('17', 'motan', '{"registerProtocol":"direct","registerAddress":"127.0.0.1:2181","corethreads":0,"threads":2147483647,"queues":0,"threadpool":"shared"}', 'Proxy', 310, 0, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
INSERT INTO "public"."plugin" VALUES ('18', 'loggingConsole', NULL, 'Logging', 160, 0, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
INSERT INTO "public"."plugin" VALUES ('19', 'jwt', '{"secretKey":"key"}', 'Authentication', 30, 0, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
INSERT INTO "public"."plugin" VALUES ('2', 'waf', '{"model":"black"}', 'Authentication', 50, 0, '2022-05-25 18:08:01', '2022-05-25 18:08:01', null);
@@ -1212,14 +1211,6 @@ INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524875', '26', 'loadB
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524876', '26', 'retry', 'retryCount', 1, 2, 1, NULL, '2022-05-25 18:08:01', '2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524877', '26', 'timeout', 'timeout', 1, 2, 2, '{"defaultValue":"3000","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524878', '26', 'multiSelectorHandle', 'multiSelectorHandle', 3, 3, 0, NULL, '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524879', '17', 'registerProtocol', 'registerProtocol', 2, 3, 0, '{"required":"0","defaultValue":"zk","placeholder":"registerProtocol","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1678997557628272641', '17', 'registerAddress', 'registerAddress', 2, 3, 1, '{"required":"0","defaultValue":"127.0.0.1:2181","placeholder":"registerAddress","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524880', '17', 'corethreads', 'corethreads', 1, 3, 2, '{"required":"0","defaultValue":"0","placeholder":"corethreads","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524881', '17', 'threads', 'threads', 1, 3, 3, '{"required":"0","defaultValue":"2147483647","placeholder":"threads","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524882', '17', 'queues', 'queues', 1, 3, 4, '{"required":"0","defaultValue":"0","placeholder":"queues","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524883', '17', 'threadpool', 'threadpool', 3, 3, 5, '{"required":"0","defaultValue":"cached","placeholder":"threadpool","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1829403902783524879', '17', 'registerProtocol', 'registerProtocol', 2, 1, 0, '{"required":"0","defaultValue":"","placeholder":"registerProtocol","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
-INSERT INTO "public"."plugin_handle" VALUES ('1878997557628272641', '17', 'registerAddress', 'registerAddress', 2, 1, 1, '{"required":"0","defaultValue":"","placeholder":"registerAddress","rule":""}', '2022-05-25 18:08:01', '2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524884', '28', 'port', 'port', 1, 3, 1, NULL, '2022-05-25 18:08:01', '2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524885', '28', 'bossGroupThreadCount', 'bossGroupThreadCount', 1, 3, 1, NULL, '2022-05-25 18:08:01', '2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524886', '28', 'maxPayloadSize', 'maxPayloadSize', 1, 3, 1, NULL, '2022-05-25 18:08:01', '2022-05-25 18:08:01');
@@ -1612,7 +1603,6 @@ INSERT INTO "public"."resource" VALUES ('1529403932781187075', '1346775491550474
INSERT INTO "public"."resource" VALUES ('1529403932781187076', '1346775491550474240', 'contextPath', 'contextPath', '/plug/contextPath', 'contextPath', 1, 0, 'thunderbolt', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932781187077', '1346775491550474240', 'grpc', 'grpc', '/plug/grpc', 'grpc', 1, 0, 'highlight', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932781187078', '1346775491550474240', 'redirect', 'redirect', '/plug/redirect', 'redirect', 1, 0, 'align-left', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932781187079', '1346775491550474240', 'motan', 'motan', '/plug/motan', 'motan', 1, 0, 'highlight', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932781187080', '1346775491550474240', 'loggingConsole', 'loggingConsole', '/plug/loggingConsole', 'loggingConsole', 1, 0, 'block', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932781187081', '1346775491550474240', 'jwt', 'jwt', '/plug/jwt', 'jwt', 1, 0, 'pic-left', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932781187082', '1346775491550474240', 'waf', 'waf', '/plug/waf', 'waf', 1, 0, 'border-bottom', 0, 0, '', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
@@ -1704,15 +1694,6 @@ INSERT INTO "public"."resource" VALUES ('1529403932877656132', '1529403932781187
INSERT INTO "public"."resource" VALUES ('1529403932877656133', '1529403932781187078', 'SHENYU.BUTTON.PLUGIN.RULE.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:redirectRule:edit', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932877656134', '1529403932781187078', 'SHENYU.BUTTON.PLUGIN.RULE.DELETE', '', '', '', 2, 0, '', 1, 0, 'plugin:redirectRule:delete', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932877656135', '1529403932781187078', 'SHENYU.BUTTON.PLUGIN.SYNCHRONIZE', '', '', '', 2, 0, '', 1, 0, 'plugin:redirect:modify', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656136', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.ADD', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:add', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656137', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.QUERY', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:query', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656138', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:edit', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656139', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.SELECTOR.DELETE', '', '', '', 2, 0, '', 1, 0, 'plugin:motanSelector:delete', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656140', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.RULE.ADD', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:add', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656141', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.RULE.QUERY', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:query', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656142', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.RULE.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:edit', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656143', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.RULE.DELETE', '', '', '', 2, 0, '', 1, 0, 'plugin:motanRule:delete', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
-INSERT INTO "public"."resource" VALUES ('1529403932877656144', '1529403932781187079', 'SHENYU.BUTTON.PLUGIN.SYNCHRONIZE', '', '', '', 2, 0, '', 1, 0, 'plugin:motan:modify', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932877656145', '1529403932781187080', 'SHENYU.BUTTON.PLUGIN.SELECTOR.ADD', '', '', '', 2, 0, '', 1, 0, 'plugin:loggingConsoleSelector:add', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932877656146', '1529403932781187080', 'SHENYU.BUTTON.PLUGIN.SELECTOR.QUERY', '', '', '', 2, 0, '', 1, 0, 'plugin:loggingConsoleSelector:query', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
INSERT INTO "public"."resource" VALUES ('1529403932877656147', '1529403932781187080', 'SHENYU.BUTTON.PLUGIN.SELECTOR.EDIT', '', '', '', 2, 0, '', 1, 0, 'plugin:loggingConsoleSelector:edit', 1, '2022-05-25 18:08:07', '2022-05-25 18:08:07');
@@ -2849,7 +2830,6 @@ INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822149','64933
INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822150','649330b6-c2d7-4edc-be8e-8a54df9eb385','14', NULL, 80, 1, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822151','649330b6-c2d7-4edc-be8e-8a54df9eb385','15', '{"multiSelectorHandle":"1","multiRuleHandle":"0","threadpool":"shared"}', 310, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822152','649330b6-c2d7-4edc-be8e-8a54df9eb385','16', NULL, 110, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
-INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822153','649330b6-c2d7-4edc-be8e-8a54df9eb385','17', '{"registerProtocol":"direct","registerAddress":"127.0.0.1:2181","corethreads":0,"threads":2147483647,"queues":0,"threadpool":"shared"}', 310, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822154','649330b6-c2d7-4edc-be8e-8a54df9eb385','18', NULL, 160, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822155','649330b6-c2d7-4edc-be8e-8a54df9eb385','19', '{"secretKey":"key"}', 30, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT INTO "public"."namespace_plugin_rel" VALUES ('1801816010882822156','649330b6-c2d7-4edc-be8e-8a54df9eb385','2', '{"model":"black"}', 50, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
diff --git a/db/upgrade/2.7.0-upgrade-2.7.1-mysql.sql b/db/upgrade/2.7.0-upgrade-2.7.1-mysql.sql
index 8a911f7d61a7..978b4b53e749 100755
--- a/db/upgrade/2.7.0-upgrade-2.7.1-mysql.sql
+++ b/db/upgrade/2.7.0-upgrade-2.7.1-mysql.sql
@@ -331,3 +331,32 @@ ALTER TABLE `discovery_upstream` CHANGE COLUMN `url` `upstream_url` varchar(64)
ALTER TABLE `discovery_upstream` CHANGE COLUMN `status` `upstream_status` int(0) NOT NULL COMMENT 'type (0, healthy, 1 unhealthy)';
ALTER TABLE `discovery` CHANGE COLUMN `level` `discovery_level` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '0 selector,1 plugin 2 global';
+
+/* remove motan plugin */
+DELETE FROM `api_rule_relation` WHERE `rule_id` IN (
+ SELECT `id` FROM (SELECT `r`.`id`
+ FROM `rule` `r`
+ INNER JOIN `selector` `s` ON `r`.`selector_id` = `s`.`id`
+ WHERE `s`.`plugin_id` = '17') AS `motan_rule_ids`
+);
+DELETE FROM `rule_condition` WHERE `rule_id` IN (
+ SELECT `id` FROM (SELECT `r`.`id`
+ FROM `rule` `r`
+ INNER JOIN `selector` `s` ON `r`.`selector_id` = `s`.`id`
+ WHERE `s`.`plugin_id` = '17') AS `motan_rule_ids`
+);
+DELETE FROM `rule` WHERE `selector_id` IN (
+ SELECT `id` FROM (SELECT `id` FROM `selector` WHERE `plugin_id` = '17') AS `motan_selector_ids`
+);
+DELETE FROM `selector_condition` WHERE `selector_id` IN (
+ SELECT `id` FROM (SELECT `id` FROM `selector` WHERE `plugin_id` = '17') AS `motan_selector_ids`
+);
+DELETE FROM `selector` WHERE `plugin_id` = '17';
+DELETE FROM `meta_data` WHERE `rpc_type` = 'motan';
+DELETE FROM `api` WHERE `rpc_type` = 'motan';
+DELETE FROM `permission` WHERE `resource_id` IN ('1529402639284355079', '1529402639372435474', '1529402639372435475', '1529402639372435476', '1529402639372435477', '1529402639372435478', '1529402639372435479', '1529402639372435480', '1529402639372435481', '1529402639372435482');
+DELETE FROM `resource` WHERE `id` IN ('1529402639284355079', '1529402639372435474', '1529402639372435475', '1529402639372435476', '1529402639372435477', '1529402639372435478', '1529402639372435479', '1529402639372435480', '1529402639372435481', '1529402639372435482');
+DELETE FROM `namespace_plugin_rel` WHERE `plugin_id` = '17';
+DELETE FROM `plugin_handle` WHERE `plugin_id` = '17';
+DELETE FROM `plugin` WHERE `id` = '17';
+ALTER TABLE `api` MODIFY COLUMN `rpc_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'http,dubbo,sofa,tars,websocket,springCloud,grpc';
diff --git a/db/upgrade/2.7.0-upgrade-2.7.1-ob.sql b/db/upgrade/2.7.0-upgrade-2.7.1-ob.sql
index 45f3ce69412a..6b8aac0afaf5 100755
--- a/db/upgrade/2.7.0-upgrade-2.7.1-ob.sql
+++ b/db/upgrade/2.7.0-upgrade-2.7.1-ob.sql
@@ -322,4 +322,33 @@ ALTER TABLE `discovery` CHANGE COLUMN `name` `discovery_name` varchar(128) CHARA
ALTER TABLE `discovery_upstream` CHANGE COLUMN `url` `upstream_url` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'ip:port';
ALTER TABLE `discovery_upstream` CHANGE COLUMN `status` `upstream_status` int(0) NOT NULL COMMENT 'type (0, healthy, 1 unhealthy)';
-ALTER TABLE `discovery` CHANGE COLUMN `level` `discovery_level` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '0 selector,1 plugin 2 global';
\ No newline at end of file
+ALTER TABLE `discovery` CHANGE COLUMN `level` `discovery_level` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '0 selector,1 plugin 2 global';
+
+/* remove motan plugin */
+DELETE FROM `api_rule_relation` WHERE `rule_id` IN (
+ SELECT `id` FROM (SELECT `r`.`id`
+ FROM `rule` `r`
+ INNER JOIN `selector` `s` ON `r`.`selector_id` = `s`.`id`
+ WHERE `s`.`plugin_id` = '17') AS `motan_rule_ids`
+);
+DELETE FROM `rule_condition` WHERE `rule_id` IN (
+ SELECT `id` FROM (SELECT `r`.`id`
+ FROM `rule` `r`
+ INNER JOIN `selector` `s` ON `r`.`selector_id` = `s`.`id`
+ WHERE `s`.`plugin_id` = '17') AS `motan_rule_ids`
+);
+DELETE FROM `rule` WHERE `selector_id` IN (
+ SELECT `id` FROM (SELECT `id` FROM `selector` WHERE `plugin_id` = '17') AS `motan_selector_ids`
+);
+DELETE FROM `selector_condition` WHERE `selector_id` IN (
+ SELECT `id` FROM (SELECT `id` FROM `selector` WHERE `plugin_id` = '17') AS `motan_selector_ids`
+);
+DELETE FROM `selector` WHERE `plugin_id` = '17';
+DELETE FROM `meta_data` WHERE `rpc_type` = 'motan';
+DELETE FROM `api` WHERE `rpc_type` = 'motan';
+DELETE FROM `permission` WHERE `resource_id` IN ('1529402639284355079', '1529402639372435474', '1529402639372435475', '1529402639372435476', '1529402639372435477', '1529402639372435478', '1529402639372435479', '1529402639372435480', '1529402639372435481', '1529402639372435482');
+DELETE FROM `resource` WHERE `id` IN ('1529402639284355079', '1529402639372435474', '1529402639372435475', '1529402639372435476', '1529402639372435477', '1529402639372435478', '1529402639372435479', '1529402639372435480', '1529402639372435481', '1529402639372435482');
+DELETE FROM `namespace_plugin_rel` WHERE `plugin_id` = '17';
+DELETE FROM `plugin_handle` WHERE `plugin_id` = '17';
+DELETE FROM `plugin` WHERE `id` = '17';
+ALTER TABLE `api` MODIFY COLUMN `rpc_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'http,dubbo,sofa,tars,websocket,springCloud,grpc';
diff --git a/db/upgrade/2.7.0-upgrade-2.7.1-og.sql b/db/upgrade/2.7.0-upgrade-2.7.1-og.sql
index 1f67b61212ce..36f6b4e1227e 100644
--- a/db/upgrade/2.7.0-upgrade-2.7.1-og.sql
+++ b/db/upgrade/2.7.0-upgrade-2.7.1-og.sql
@@ -347,3 +347,36 @@ ALTER TABLE "public"."discovery_upstream" RENAME COLUMN "url" TO "upstream_url";
ALTER TABLE "public"."discovery_upstream" RENAME COLUMN "status" TO "upstream_status";
ALTER TABLE "public"."discovery" RENAME COLUMN "level" TO "discovery_level";
+
+/* remove motan plugin */
+DELETE FROM "public"."api_rule_relation" WHERE "rule_id" IN (
+ SELECT "id" FROM (
+ SELECT "r"."id"
+ FROM "public"."rule" "r"
+ INNER JOIN "public"."selector" "s" ON "r"."selector_id" = "s"."id"
+ WHERE "s"."plugin_id" = '17'
+ ) AS "motan_rule_ids"
+);
+DELETE FROM "public"."rule_condition" WHERE "rule_id" IN (
+ SELECT "id" FROM (
+ SELECT "r"."id"
+ FROM "public"."rule" "r"
+ INNER JOIN "public"."selector" "s" ON "r"."selector_id" = "s"."id"
+ WHERE "s"."plugin_id" = '17'
+ ) AS "motan_rule_ids"
+);
+DELETE FROM "public"."rule" WHERE "selector_id" IN (
+ SELECT "id" FROM (SELECT "id" FROM "public"."selector" WHERE "plugin_id" = '17') AS "motan_selector_ids"
+);
+DELETE FROM "public"."selector_condition" WHERE "selector_id" IN (
+ SELECT "id" FROM (SELECT "id" FROM "public"."selector" WHERE "plugin_id" = '17') AS "motan_selector_ids"
+);
+DELETE FROM "public"."selector" WHERE "plugin_id" = '17';
+DELETE FROM "public"."meta_data" WHERE "rpc_type" = 'motan';
+DELETE FROM "public"."api" WHERE "rpc_type" = 'motan';
+DELETE FROM "public"."permission" WHERE "resource_id" IN ('1529403932781187079', '1529403932877656136', '1529403932877656137', '1529403932877656138', '1529403932877656139', '1529403932877656140', '1529403932877656141', '1529403932877656142', '1529403932877656143', '1529403932877656144');
+DELETE FROM "public"."resource" WHERE "id" IN ('1529403932781187079', '1529403932877656136', '1529403932877656137', '1529403932877656138', '1529403932877656139', '1529403932877656140', '1529403932877656141', '1529403932877656142', '1529403932877656143', '1529403932877656144');
+DELETE FROM "public"."namespace_plugin_rel" WHERE "plugin_id" = '17';
+DELETE FROM "public"."plugin_handle" WHERE "plugin_id" = '17';
+DELETE FROM "public"."plugin" WHERE "id" = '17';
+COMMENT ON COLUMN "public"."api"."rpc_type" IS 'http,dubbo,sofa,tars,websocket,springCloud,grpc';
diff --git a/db/upgrade/2.7.0-upgrade-2.7.1-oracle.sql b/db/upgrade/2.7.0-upgrade-2.7.1-oracle.sql
index 5393946f3e0f..c3ec9c2f9c8d 100755
--- a/db/upgrade/2.7.0-upgrade-2.7.1-oracle.sql
+++ b/db/upgrade/2.7.0-upgrade-2.7.1-oracle.sql
@@ -702,3 +702,36 @@ ALTER TABLE discovery_upstream RENAME COLUMN "url" TO "upstream_url";
ALTER TABLE discovery_upstream RENAME COLUMN "status" TO "upstream_status";
ALTER TABLE discovery RENAME COLUMN "level" TO discovery_level;
+
+/* remove motan plugin */
+DELETE FROM api_rule_relation WHERE rule_id IN (
+ SELECT id FROM (
+ SELECT r.id
+ FROM rule r
+ INNER JOIN selector s ON r.selector_id = s.id
+ WHERE s.plugin_id = '17'
+ )
+);
+DELETE FROM rule_condition WHERE rule_id IN (
+ SELECT id FROM (
+ SELECT r.id
+ FROM rule r
+ INNER JOIN selector s ON r.selector_id = s.id
+ WHERE s.plugin_id = '17'
+ )
+);
+DELETE FROM rule WHERE selector_id IN (
+ SELECT id FROM (SELECT id FROM selector WHERE plugin_id = '17')
+);
+DELETE FROM selector_condition WHERE selector_id IN (
+ SELECT id FROM (SELECT id FROM selector WHERE plugin_id = '17')
+);
+DELETE FROM selector WHERE plugin_id = '17';
+DELETE FROM meta_data WHERE rpc_type = 'motan';
+DELETE FROM api WHERE rpc_type = 'motan';
+DELETE FROM permission WHERE resource_id IN ('1529403932781187079', '1529403932877656136', '1529403932877656137', '1529403932877656138', '1529403932877656139', '1529403932877656140', '1529403932877656141', '1529403932877656142', '1529403932877656143', '1529403932877656144');
+DELETE FROM resource WHERE id IN ('1529403932781187079', '1529403932877656136', '1529403932877656137', '1529403932877656138', '1529403932877656139', '1529403932877656140', '1529403932877656141', '1529403932877656142', '1529403932877656143', '1529403932877656144');
+DELETE FROM namespace_plugin_rel WHERE plugin_id = '17';
+DELETE FROM plugin_handle WHERE plugin_id = '17';
+DELETE FROM plugin WHERE id = '17';
+COMMENT ON COLUMN api.rpc_type IS 'http,dubbo,sofa,tars,websocket,springCloud,grpc';
diff --git a/db/upgrade/2.7.0-upgrade-2.7.1-pg.sql b/db/upgrade/2.7.0-upgrade-2.7.1-pg.sql
index 7b8c3f3ee809..eca5d2cc532c 100755
--- a/db/upgrade/2.7.0-upgrade-2.7.1-pg.sql
+++ b/db/upgrade/2.7.0-upgrade-2.7.1-pg.sql
@@ -345,3 +345,36 @@ ALTER TABLE "public"."discovery_upstream" RENAME COLUMN "url" TO "upstream_url";
ALTER TABLE "public"."discovery_upstream" RENAME COLUMN "status" TO "upstream_status";
ALTER TABLE "public"."discovery" RENAME COLUMN "level" TO "discovery_level";
+
+/* remove motan plugin */
+DELETE FROM "public"."api_rule_relation" WHERE "rule_id" IN (
+ SELECT "id" FROM (
+ SELECT "r"."id"
+ FROM "public"."rule" "r"
+ INNER JOIN "public"."selector" "s" ON "r"."selector_id" = "s"."id"
+ WHERE "s"."plugin_id" = '17'
+ ) AS "motan_rule_ids"
+);
+DELETE FROM "public"."rule_condition" WHERE "rule_id" IN (
+ SELECT "id" FROM (
+ SELECT "r"."id"
+ FROM "public"."rule" "r"
+ INNER JOIN "public"."selector" "s" ON "r"."selector_id" = "s"."id"
+ WHERE "s"."plugin_id" = '17'
+ ) AS "motan_rule_ids"
+);
+DELETE FROM "public"."rule" WHERE "selector_id" IN (
+ SELECT "id" FROM (SELECT "id" FROM "public"."selector" WHERE "plugin_id" = '17') AS "motan_selector_ids"
+);
+DELETE FROM "public"."selector_condition" WHERE "selector_id" IN (
+ SELECT "id" FROM (SELECT "id" FROM "public"."selector" WHERE "plugin_id" = '17') AS "motan_selector_ids"
+);
+DELETE FROM "public"."selector" WHERE "plugin_id" = '17';
+DELETE FROM "public"."meta_data" WHERE "rpc_type" = 'motan';
+DELETE FROM "public"."api" WHERE "rpc_type" = 'motan';
+DELETE FROM "public"."permission" WHERE "resource_id" IN ('1529403932781187079', '1529403932877656136', '1529403932877656137', '1529403932877656138', '1529403932877656139', '1529403932877656140', '1529403932877656141', '1529403932877656142', '1529403932877656143', '1529403932877656144');
+DELETE FROM "public"."resource" WHERE "id" IN ('1529403932781187079', '1529403932877656136', '1529403932877656137', '1529403932877656138', '1529403932877656139', '1529403932877656140', '1529403932877656141', '1529403932877656142', '1529403932877656143', '1529403932877656144');
+DELETE FROM "public"."namespace_plugin_rel" WHERE "plugin_id" = '17';
+DELETE FROM "public"."plugin_handle" WHERE "plugin_id" = '17';
+DELETE FROM "public"."plugin" WHERE "id" = '17';
+COMMENT ON COLUMN "public"."api"."rpc_type" IS 'http,dubbo,sofa,tars,websocket,springCloud,grpc';
diff --git a/pom.xml b/pom.xml
index 1515bcd5821a..ae2245578a84 100644
--- a/pom.xml
+++ b/pom.xml
@@ -134,7 +134,6 @@
0.10
1.13.0
3.12.0
- 1.2.1
3.3.1
1.9.6
1.4.200
@@ -231,30 +230,6 @@
${bytebuddy.version}
-
- com.weibo
- motan-core
- ${motan.version}
-
-
-
- com.weibo
- motan-transport-netty4
- ${motan.version}
-
-
-
- com.weibo
- motan-registry-zookeeper
- ${motan.version}
-
-
-
- com.weibo
- motan-springsupport
- ${motan.version}
-
-
com.google.code.gson
gson
diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ApiDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ApiDTO.java
index 9fed0fa046bc..0837d9a8c803 100644
--- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ApiDTO.java
+++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ApiDTO.java
@@ -75,7 +75,7 @@ public class ApiDTO implements Serializable {
private String version;
/**
- * http,dubbo,sofa,tars,websocket,springCloud,motan,grpc.
+ * http,dubbo,sofa,tars,websocket,springCloud,grpc.
*/
private String rpcType;
diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ApiDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ApiDO.java
index c85fce9959e2..b52d2098b1b3 100644
--- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ApiDO.java
+++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ApiDO.java
@@ -66,7 +66,7 @@ public class ApiDO {
private String version;
/**
- * http,dubbo,sofa,tars,websocket,springCloud,motan,grpc.
+ * http,dubbo,sofa,tars,websocket,springCloud,grpc.
*/
private String rpcType;
diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/ApiVO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/ApiVO.java
index a9088f515b95..72e9c9f935e0 100644
--- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/ApiVO.java
+++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/ApiVO.java
@@ -68,7 +68,7 @@ public class ApiVO implements Serializable {
private String version;
/**
- * http,dubbo,sofa,tars,websocket,springCloud,motan,grpc.
+ * http,dubbo,sofa,tars,websocket,springCloud,grpc.
*/
private String rpcType;
diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterMotanServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterMotanServiceImpl.java
deleted file mode 100644
index a1dd5a22ed5a..000000000000
--- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterMotanServiceImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.shenyu.admin.service.register;
-
-import org.apache.shenyu.admin.model.entity.MetaDataDO;
-import org.apache.shenyu.admin.model.entity.SelectorDO;
-import org.apache.shenyu.admin.service.MetaDataService;
-import org.apache.shenyu.common.enums.RpcTypeEnum;
-import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
-import org.apache.shenyu.register.common.dto.URIRegisterDTO;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * motan service register.
- */
-@Service
-public class ShenyuClientRegisterMotanServiceImpl extends AbstractShenyuClientRegisterServiceImpl {
-
- @Override
- public String rpcType() {
- return RpcTypeEnum.MOTAN.getName();
- }
-
- @Override
- protected String selectorHandler(final MetaDataRegisterDTO metaDataDTO) {
- return "";
- }
-
- @Override
- protected String ruleHandler() {
- return "";
- }
-
- @Override
- protected void registerMetadata(final MetaDataRegisterDTO metaDataDTO) {
- MetaDataService metaDataService = getMetaDataService();
- MetaDataDO exist = metaDataService.findByPathAndNamespaceId(metaDataDTO.getPath(), metaDataDTO.getNamespaceId());
- metaDataService.saveOrUpdateMetaData(exist, metaDataDTO);
- }
-
- @Override
- protected String buildHandle(final List uriList, final SelectorDO selectorDO) {
- return "";
- }
-}
diff --git a/shenyu-admin/src/main/resources/sql-script/h2/schema.sql b/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
index 16dd2dd278a1..cfb561e4148b 100644
--- a/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
+++ b/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
@@ -390,7 +390,7 @@ CREATE TABLE IF NOT EXISTS `api`
`consume` varchar(255) NOT NULL COMMENT 'consume',
`produce` varchar(255) NOT NULL COMMENT 'produce',
`version` varchar(255) NOT NULL COMMENT 'api version,for example V0.01',
- `rpc_type` varchar(64) NOT NULL COMMENT 'http,dubbo,sofa,tars,websocket,motan,grpc',
+ `rpc_type` varchar(64) NOT NULL COMMENT 'http,dubbo,sofa,tars,websocket,grpc',
`state` tinyint NOT NULL COMMENT '0-unpublished,1-published,2-offline',
`ext` varchar(1024) NOT NULL COMMENT 'extended fields',
`api_owner` varchar(255) NOT NULL COMMENT 'api_owner',
@@ -572,7 +572,6 @@ INSERT IGNORE INTO `plugin` (`id`, `name`, `role`, `sort`, `config`, `enabled`)
INSERT IGNORE INTO `plugin` (`id`, `name`, `role`, `sort`, `enabled`) VALUES ('14', 'contextPath', 'HttpProcess', 80,'1');
INSERT IGNORE INTO `plugin` (`id`, `name`, `role`, `sort`, `config`, `enabled`) VALUES ('15', 'grpc', 'Proxy', 310,'{"multiSelectorHandle":"1","multiRuleHandle":"0","threadpool":"shared"}','0');
INSERT IGNORE INTO `plugin` (`id`, `name`, `role`, `sort`, `enabled`) VALUES ('16', 'redirect', 'HttpProcess', 110,'0');
-INSERT IGNORE INTO `plugin` (`id`, `name`, `role`, `sort`, `config`, `enabled`) VALUES ('17', 'motan', 'Proxy', 310,'{"registerProtocol":"zk","registerAddress":"127.0.0.1:2181","corethreads":0,"threads":2147483647,"queues":0,"threadpool":"shared"}','0');
INSERT IGNORE INTO `plugin` (`id`, `name`, `role`, `sort`, `enabled`) VALUES ('18', 'loggingConsole', 'Logging', 160, '0');
INSERT IGNORE INTO `plugin` (`id`, `name`, `role`, `sort`, `config`, `enabled`) VALUES ('19', 'jwt', 'Authentication', 30, '{"secretKey":"key"}', '0');
INSERT IGNORE INTO `plugin` (`id`, `name`, `role`, `sort`, `enabled`) VALUES ('20', 'request', 'HttpProcess', 120, '0');
@@ -733,14 +732,6 @@ INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,
INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`) VALUES ('1529402613204172831', '26', 'retry', 'retryCount', 1, 2, 1);
INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES ('1529402613204172832', '26', 'timeout', 'timeout', 1, 2, 2, '{"defaultValue":"3000","rule":""}');
INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`) VALUES ('1529402613204172833', '26', 'multiSelectorHandle', 'multiSelectorHandle', 3, 3, 0);
-INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES ('1529402613204172834', '17', 'registerProtocol', 'registerProtocol', 2, 3, 0, '{"required":"0","defaultValue":"direct","placeholder":"registerProtocol","rule":""}');
-INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES ('1529402613204172835', '17', 'corethreads', 'corethreads', 1, 3, 2, '{"required":"0","defaultValue":"0","placeholder":"corethreads","rule":""}');
-INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES ('1529402613204172836', '17', 'threads', 'threads', 1, 3, 3, '{"required":"0","defaultValue":"2147483647","placeholder":"threads","rule":""}');
-INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES ('1529402613204172837', '17', 'queues', 'queues', 1, 3, 4, '{"required":"0","defaultValue":"0","placeholder":"queues","rule":""}');
-INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES ('1529402613204172838', '17', 'threadpool', 'threadpool', 3, 3, 5, '{"required":"0","defaultValue":"cached","placeholder":"threadpool","rule":""}');
-INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES ('1678997557628272641', '17', 'registerAddress', 'registerAddress', 2, 3, 1,'{"required":"0","defaultValue":"127.0.0.1:2181","placeholder":"registerAddress","rule":""}');
-INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES ('1829402613204172834', '17', 'registerProtocol', 'registerProtocol', 2, 1, 0, '{"required":"0","defaultValue":"","placeholder":"registerProtocol","rule":""}');
-INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES ('1878997557628272641', '17', 'registerAddress', 'registerAddress', 2, 1, 1,'{"required":"0","defaultValue":"","placeholder":"registerAddress","rule":""}');
INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`) VALUES ('1529402613204172839', '28', 'port', 'port', 1, 3, 1);
INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`) VALUES ('1529402613204172840', '28', 'bossGroupThreadCount', 'bossGroupThreadCount', 1, 3, 1);
INSERT IGNORE INTO plugin_handle (`id`, `plugin_id`,`field`,`label`,`data_type`,`type`,`sort`) VALUES ('1529402613204172841', '28', 'maxPayloadSize', 'maxPayloadSize', 1, 3, 1);
@@ -1448,7 +1439,6 @@ INSERT IGNORE INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `con
INSERT IGNORE INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822150','649330b6-c2d7-4edc-be8e-8a54df9eb385','14', NULL, 80, 1, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT IGNORE INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822151','649330b6-c2d7-4edc-be8e-8a54df9eb385','15', '{"multiSelectorHandle":"1","multiRuleHandle":"0","threadpool":"shared"}', 310, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT IGNORE INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822152','649330b6-c2d7-4edc-be8e-8a54df9eb385','16', NULL, 110, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
-INSERT IGNORE INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822153','649330b6-c2d7-4edc-be8e-8a54df9eb385','17', '{"registerProtocol":"direct","registerAddress":"127.0.0.1:2181","corethreads":0,"threads":2147483647,"queues":0,"threadpool":"shared"}', 310, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT IGNORE INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822154','649330b6-c2d7-4edc-be8e-8a54df9eb385','18', NULL, 160, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT IGNORE INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822155','649330b6-c2d7-4edc-be8e-8a54df9eb385','19', '{"secretKey":"key"}', 30, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
INSERT IGNORE INTO `namespace_plugin_rel` (`id`,`namespace_id`,`plugin_id`, `config`, `sort`, `enabled`, `date_created`, `date_updated`) VALUES ('1801816010882822156','649330b6-c2d7-4edc-be8e-8a54df9eb385','2', '{"model":"black"}', 50, 0, '2022-05-25 18:02:53.000', '2022-05-25 18:02:53.000');
diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterMotanServiceImplTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterMotanServiceImplTest.java
deleted file mode 100644
index 31358fb06bb3..000000000000
--- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterMotanServiceImplTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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.shenyu.admin.service.register;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.shenyu.admin.model.entity.MetaDataDO;
-import org.apache.shenyu.admin.model.entity.SelectorDO;
-import org.apache.shenyu.admin.service.impl.MetaDataServiceImpl;
-import org.apache.shenyu.common.enums.RpcTypeEnum;
-import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
-import org.apache.shenyu.register.common.dto.URIRegisterDTO;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-import org.mockito.junit.jupiter.MockitoSettings;
-import org.mockito.quality.Strictness;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-/**
- * Test cases for {@link ShenyuClientRegisterMotanServiceImpl}.
- */
-@ExtendWith(MockitoExtension.class)
-@MockitoSettings(strictness = Strictness.LENIENT)
-public final class ShenyuClientRegisterMotanServiceImplTest {
-
- @InjectMocks
- private ShenyuClientRegisterMotanServiceImpl shenyuClientRegisterMotanService;
-
- @Mock
- private MetaDataServiceImpl metaDataService;
-
- @Test
- public void testRpcType() {
- String rpcType = shenyuClientRegisterMotanService.rpcType();
- assertEquals(RpcTypeEnum.MOTAN.getName(), rpcType);
- }
-
- @Test
- public void testSelectorHandler() {
- MetaDataRegisterDTO metaDataRegisterDTO = MetaDataRegisterDTO.builder().build();
- assertEquals(StringUtils.EMPTY, shenyuClientRegisterMotanService.selectorHandler(metaDataRegisterDTO));
- }
-
- @Test
- public void testRuleHandler() {
- assertEquals(StringUtils.EMPTY, shenyuClientRegisterMotanService.ruleHandler());
- }
-
- @Test
- public void testRegisterMetadata() {
- MetaDataDO metaDataDO = MetaDataDO.builder().build();
- when(metaDataService.findByPathAndNamespaceId(any(), any())).thenReturn(metaDataDO);
- MetaDataRegisterDTO metaDataDTO = MetaDataRegisterDTO.builder().build();
- shenyuClientRegisterMotanService.registerMetadata(metaDataDTO);
- verify(metaDataService).saveOrUpdateMetaData(metaDataDO, metaDataDTO);
- }
-
- @Test
- public void testBuildHandle() {
- List list = new ArrayList<>();
- list.add(URIRegisterDTO.builder().build());
- assertEquals(StringUtils.EMPTY,
- shenyuClientRegisterMotanService.buildHandle(list, SelectorDO.builder().build()));
- }
-}
diff --git a/shenyu-bootstrap/pom.xml b/shenyu-bootstrap/pom.xml
index abe6c1598f4b..1cd22e65c871 100644
--- a/shenyu-bootstrap/pom.xml
+++ b/shenyu-bootstrap/pom.xml
@@ -417,47 +417,6 @@
-
-
-
- com.weibo
- motan-core
- ${motan.version}
-
-
- com.weibo
- motan-transport-netty4
- ${motan.version}
-
-
- com.weibo
- motan-registry-zookeeper
- ${motan.version}
-
-
- log4j
- log4j
-
-
- org.slf4j
- slf4j-log4j12
-
-
-
-
- com.weibo
- motan-springsupport
- ${motan.version}
-
-
- org.apache.shenyu
- shenyu-spring-boot-starter-plugin-motan
- ${project.version}
-
-
-
org.apache.shenyu
diff --git a/shenyu-client/pom.xml b/shenyu-client/pom.xml
index 99c44202b153..65cca80d2265 100644
--- a/shenyu-client/pom.xml
+++ b/shenyu-client/pom.xml
@@ -34,7 +34,6 @@
shenyu-client-sofa
shenyu-client-tars
shenyu-client-grpc
- shenyu-client-motan
shenyu-client-websocket
shenyu-client-api-docs-annotations
shenyu-client-autoconfig
diff --git a/shenyu-client/shenyu-client-motan/pom.xml b/shenyu-client/shenyu-client-motan/pom.xml
deleted file mode 100644
index 404224c205d4..000000000000
--- a/shenyu-client/shenyu-client-motan/pom.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
- org.apache.shenyu
- shenyu-client
- 2.7.1-SNAPSHOT
-
- 4.0.0
-
- shenyu-client-motan
-
-
-
- org.apache.shenyu
- shenyu-client-core
- ${project.version}
-
-
- org.springframework
- spring-beans
- provided
-
-
- org.springframework
- spring-context
- provided
-
-
- org.springframework
- spring-core
- provided
-
-
- com.weibo
- motan-springsupport
- provided
-
-
-
-
diff --git a/shenyu-client/shenyu-client-motan/src/main/java/org/apache/shenyu/client/motan/MotanServiceEventListener.java b/shenyu-client/shenyu-client-motan/src/main/java/org/apache/shenyu/client/motan/MotanServiceEventListener.java
deleted file mode 100644
index f8fdcf3a6eb6..000000000000
--- a/shenyu-client/shenyu-client-motan/src/main/java/org/apache/shenyu/client/motan/MotanServiceEventListener.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * 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.shenyu.client.motan;
-
-import com.weibo.api.motan.config.springsupport.BasicServiceConfigBean;
-import com.weibo.api.motan.config.springsupport.annotation.MotanService;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.stream.Collectors;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.shenyu.client.core.client.AbstractContextRefreshedEventListener;
-import org.apache.shenyu.client.core.constant.ShenyuClientConstants;
-import org.apache.shenyu.client.core.disruptor.ShenyuClientRegisterEventPublisher;
-import org.apache.shenyu.client.core.exception.ShenyuClientIllegalArgumentException;
-import org.apache.shenyu.client.motan.common.annotation.ShenyuMotanClient;
-import org.apache.shenyu.client.motan.common.dto.MotanRpcExt;
-import org.apache.shenyu.common.enums.ApiHttpMethodEnum;
-import org.apache.shenyu.common.enums.RpcTypeEnum;
-import org.apache.shenyu.common.utils.GsonUtils;
-import org.apache.shenyu.register.client.api.ShenyuClientRegisterRepository;
-import org.apache.shenyu.register.common.config.ShenyuClientConfig;
-import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
-import org.apache.shenyu.register.common.dto.URIRegisterDTO;
-import org.apache.shenyu.register.common.enums.EventType;
-import org.javatuples.Sextet;
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.StandardReflectionParameterNameDiscoverer;
-import org.springframework.core.annotation.AnnotatedElementUtils;
-import org.springframework.lang.NonNull;
-import org.springframework.lang.Nullable;
-import org.springframework.util.ReflectionUtils;
-
-/**
- * Motan Service Event Listener.
- */
-public class MotanServiceEventListener extends AbstractContextRefreshedEventListener
-
-
- org.apache.shenyu
- shenyu-spring-boot-starter-plugin-motan
- ${project.version}
-
-
- com.weibo
- motan-core
- 1.2.1
-
-
- com.weibo
- motan-registry-zookeeper
- 1.2.1
-
-
- com.weibo
- motan-transport-netty4
- 1.2.1
-
-
- com.weibo
- motan-springsupport
- 1.2.1
-
-
-
com.alipay.sofa
diff --git a/shenyu-integrated-test/shenyu-integrated-test-combination/src/main/java/org/apache/shenyu/integrated/test/combination/controller/SharedThreadPoolController.java b/shenyu-integrated-test/shenyu-integrated-test-combination/src/main/java/org/apache/shenyu/integrated/test/combination/controller/SharedThreadPoolController.java
index 6abc02e18c74..ee9aaec81f88 100644
--- a/shenyu-integrated-test/shenyu-integrated-test-combination/src/main/java/org/apache/shenyu/integrated/test/combination/controller/SharedThreadPoolController.java
+++ b/shenyu-integrated-test/shenyu-integrated-test-combination/src/main/java/org/apache/shenyu/integrated/test/combination/controller/SharedThreadPoolController.java
@@ -22,7 +22,6 @@
import org.apache.shenyu.common.concurrent.ShenyuThreadPoolExecutor;
import org.apache.shenyu.plugin.api.utils.SpringBeanUtils;
import org.apache.shenyu.plugin.grpc.client.GrpcClientBuilder;
-import org.apache.shenyu.plugin.motan.proxy.MotanProxyService;
import org.apache.shenyu.plugin.sofa.cache.ApplicationConfigCache;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
@@ -72,18 +71,6 @@ public String getFromGrpc() {
.orElse("");
}
- /**
- * get the shared thread pool from motan.
- *
- * @return the shared thread pool
- */
- @GetMapping("/getFromMotan")
- public String getFromMotan() {
- return Optional.ofNullable(SpringBeanUtils.getInstance().getBean(MotanProxyService.class).getThreadPool())
- .map(Objects::toString)
- .orElse("");
- }
-
/**
* get the shared thread pool from sofa.
*
diff --git a/shenyu-integrated-test/shenyu-integrated-test-combination/src/test/java/org/apache/shenyu/integrated/test/combination/SharedThreadPoolTest.java b/shenyu-integrated-test/shenyu-integrated-test-combination/src/test/java/org/apache/shenyu/integrated/test/combination/SharedThreadPoolTest.java
index 62b3d49c31f6..c0aeb9cc594a 100644
--- a/shenyu-integrated-test/shenyu-integrated-test-combination/src/test/java/org/apache/shenyu/integrated/test/combination/SharedThreadPoolTest.java
+++ b/shenyu-integrated-test/shenyu-integrated-test-combination/src/test/java/org/apache/shenyu/integrated/test/combination/SharedThreadPoolTest.java
@@ -19,12 +19,10 @@
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
-import com.google.gson.reflect.TypeToken;
import org.apache.shenyu.common.enums.PluginEnum;
import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.integratedtest.common.AbstractPluginDataInit;
import org.apache.shenyu.integratedtest.common.dto.DubboTest;
-import org.apache.shenyu.integratedtest.common.dto.MotanDTO;
import org.apache.shenyu.integratedtest.common.helper.HttpHelper;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.AfterAll;
@@ -34,7 +32,6 @@
import org.slf4j.LoggerFactory;
import java.io.IOException;
-import java.lang.reflect.Type;
import java.util.Map;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -56,9 +53,6 @@ public static void setup() throws IOException {
// for grpc
pluginResult = initPlugin(PluginEnum.GRPC.getName(), "{\"register\":\"zookeeper://shenyu-zk:2181\",\"threadpool\": \"shared\"}");
assertThat(pluginResult, is("success"));
- // for motan
- pluginResult = initPlugin(PluginEnum.MOTAN.getName(), "{\"registerProtocol\": \"zk\", \"registerAddress\":\"shenyu-zk:2181\",\"threadpool\": \"shared\"}");
- assertThat(pluginResult, is("success"));
// for sofa
pluginResult = initPlugin(PluginEnum.SOFA.getName(), "{\"protocol\":\"zookeeper\",\"register\":\"shenyu-zk:2181\",\"threadpool\": \"shared\"}");
assertThat(pluginResult, Matchers.is("success"));
@@ -84,15 +78,6 @@ public void testGrpc() throws Exception {
assertEquals("ReceivedHELLO", result.get("message"));
}
- @Test
- public void testMotan() throws Exception {
- MotanDTO request = new MotanDTO("shenyu");
- Type returnType = new TypeToken() {
- }.getType();
- String response = HttpHelper.INSTANCE.postGateway("/motan/demo/hello", request, returnType);
- assertEquals("hello shenyu", response);
- }
-
@AfterAll
public static void testIsOneThreadPool() throws IOException {
String spring = HttpHelper.INSTANCE.getFromGateway("/shenyu/getFromSpring", String.class);
@@ -100,8 +85,6 @@ public static void testIsOneThreadPool() throws IOException {
assertEquals(spring, dubbo);
String grpc = HttpHelper.INSTANCE.getFromGateway("/shenyu/getFromGrpc", String.class);
assertEquals(spring, grpc);
- String motan = HttpHelper.INSTANCE.getFromGateway("/shenyu/getFromMotan", String.class);
- assertEquals(spring, motan);
// TODO test sofa
}
}
diff --git a/shenyu-integrated-test/shenyu-integrated-test-common/src/main/java/org/apache/shenyu/integratedtest/common/dto/MotanDTO.java b/shenyu-integrated-test/shenyu-integrated-test-common/src/main/java/org/apache/shenyu/integratedtest/common/dto/MotanDTO.java
deleted file mode 100644
index f1662506a363..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-common/src/main/java/org/apache/shenyu/integratedtest/common/dto/MotanDTO.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.shenyu.integratedtest.common.dto;
-
-/**
- * The type Motan dto.
- */
-public class MotanDTO {
-
- private String name;
-
- public MotanDTO(final String name) {
- this.name = name;
- }
-
- /**
- * Get the name.
- *
- * @return the name
- */
- public String getName() {
- return name;
- }
-
- /**
- * Set the name.
- *
- * @param name the name
- */
- public void setName(final String name) {
- this.name = name;
- }
-}
diff --git a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/Dockerfile b/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/Dockerfile
deleted file mode 100644
index 94dbba5b2cdd..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-# 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.
-
-FROM eclipse-temurin:17-centos7
-
-ENV APP_NAME shenyu-integrated-test-k8s-ingress-motan
-ENV LOCAL_PATH /opt/${APP_NAME}
-
-RUN mkdir -p ${LOCAL_PATH}
-
-ADD target/${APP_NAME}.jar ${LOCAL_PATH}
-
-WORKDIR ${LOCAL_PATH}
-EXPOSE 9195
-
-CMD java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/sun.net.util=ALL-UNNAMED -jar ${APP_NAME}.jar
diff --git a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/deploy/deploy-shenyu.yaml b/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/deploy/deploy-shenyu.yaml
deleted file mode 100644
index b592f2bee6b1..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/deploy/deploy-shenyu.yaml
+++ /dev/null
@@ -1,107 +0,0 @@
-# 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.
-
-apiVersion: v1
-kind: Namespace
-metadata:
- name: shenyu-ingress
----
-apiVersion: v1
-automountServiceAccountToken: true
-kind: ServiceAccount
-metadata:
- name: shenyu-ingress-controller
- namespace: shenyu-ingress
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: shenyu-ingress-controller
- namespace: shenyu-ingress
- labels:
- app: shenyu-ingress-controller
- all: shenyu-ingress-controller
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: shenyu-ingress-controller
- template:
- metadata:
- labels:
- app: shenyu-ingress-controller
- spec:
- containers:
- - name: shenyu-ingress-controller
- image: apache/shenyu-integrated-test-k8s-ingress-motan:latest
- ports:
- - containerPort: 9195
- imagePullPolicy: IfNotPresent
- serviceAccountName: shenyu-ingress-controller
----
-apiVersion: v1
-kind: Service
-metadata:
- name: shenyu-ingress-controller
- namespace: shenyu-ingress
-spec:
- selector:
- app: shenyu-ingress-controller
- type: NodePort
- ports:
- - port: 9195
- targetPort: 9195
- nodePort: 30095
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
- name: shenyu-ingress-controller
-rules:
-- apiGroups:
- - ""
- resources:
- - namespaces
- - services
- - endpoints
- - secrets
- - pods
- verbs:
- - get
- - list
- - watch
-- apiGroups:
- - networking.k8s.io
- resources:
- - ingresses
- verbs:
- - get
- - list
- - watch
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
- name: shenyu-ingress-controller
- namespace: shenyu-ingress
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: shenyu-ingress-controller
-subjects:
-- kind: ServiceAccount
- name: shenyu-ingress-controller
- namespace: shenyu-ingress
diff --git a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/deploy/kind-config.yaml b/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/deploy/kind-config.yaml
deleted file mode 100644
index 0dc0313af1f9..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/deploy/kind-config.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-# 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.
-
-kind: Cluster
-apiVersion: kind.x-k8s.io/v1alpha4
-nodes:
- - role: control-plane
- kubeadmConfigPatches:
- - |
- kind: InitConfiguration
- nodeRegistration:
- kubeletExtraArgs:
- node-labels: "ingress-ready=true"
- extraPortMappings:
- - containerPort: 80
- hostPort: 80
- protocol: TCP
- - containerPort: 443
- hostPort: 443
- protocol: TCP
- - containerPort: 30095
- hostPort: 30095
- protocol: TCP
diff --git a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/pom.xml b/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/pom.xml
deleted file mode 100644
index 7deac40d95f5..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/pom.xml
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
- 4.0.0
-
- org.apache.shenyu
- shenyu-integrated-test
- 2.7.1-SNAPSHOT
-
-
- shenyu-integrated-test-k8s-ingress-motan
- shenyu-integrated-test-k8s-ingress-motan
-
-
-
-
- org.apache.shenyu
- shenyu-spring-boot-starter-plugin-motan
- ${project.version}
-
-
-
- com.weibo
- motan-core
- ${motan.version}
-
-
-
- com.weibo
- motan-registry-zookeeper
- ${motan.version}
-
-
-
- com.weibo
- motan-transport-netty4
- ${motan.version}
-
-
-
- com.weibo
- motan-springsupport
- ${motan.version}
-
-
-
-
- org.apache.shenyu
- shenyu-integrated-test-common
- ${project.version}
-
-
-
- org.apache.shenyu
- shenyu-spring-boot-starter-plugin-httpclient
- ${project.version}
-
-
-
- org.apache.shenyu
- shenyu-spring-boot-starter-plugin-global
- ${project.version}
-
-
-
- org.apache.shenyu
- shenyu-spring-boot-starter-plugin-uri
- ${project.version}
-
-
-
- org.apache.shenyu
- shenyu-spring-boot-starter-plugin-general-context
- ${project.version}
-
-
-
-
- org.apache.shenyu
- shenyu-spring-boot-starter-k8s
- ${project.version}
-
-
-
-
-
-
- it
-
- shenyu-integrated-test-k8s-ingress-motan
- apache/shenyu-integrated-test-k8s-ingress-motan
- latest
-
-
- shenyu-integrated-test-k8s-ingress-motan
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- ${spring-boot.version}
-
-
- package
-
- repackage
-
-
-
-
- org.apache.shenyu.integrated.test.k8s.ingress.motan.MotanIngressControllerIntegratedBootstrap
-
- true
-
-
-
- io.fabric8
- docker-maven-plugin
- ${docker-maven-plugin.version}
-
-
-
- apache/shenyu-integrated-test-k8s-ingress-motan
-
- ${project.basedir}
-
-
-
-
-
-
- start
-
- build
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
- false
-
-
-
-
-
-
-
-
diff --git a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/script/build_k8s_cluster.sh b/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/script/build_k8s_cluster.sh
deleted file mode 100644
index 69a2ea2b3dfb..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/script/build_k8s_cluster.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-#
-# 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.
-#
-
-kind load docker-image "shenyu-examples-motan:latest"
-kind load docker-image "apache/shenyu-integrated-test-k8s-ingress-motan:latest"
-kubectl apply -f ./shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/deploy/deploy-shenyu.yaml
-kubectl apply -f ./shenyu-examples/shenyu-examples-motan/shenyu-examples-motan-service/k8s/shenyu-zookeeper.yml
-kubectl apply -f ./shenyu-examples/shenyu-examples-motan/shenyu-examples-motan-service/k8s/shenyu-examples-motan.yml
-kubectl apply -f ./shenyu-examples/shenyu-examples-motan/shenyu-examples-motan-service/k8s/ingress.yml
diff --git a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/script/healthcheck.sh b/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/script/healthcheck.sh
deleted file mode 100644
index 896e78414458..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/script/healthcheck.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash
-#
-# 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.
-#
-
-PRGDIR=`dirname "$0"`
-for service in `grep -v -E "^$|^#" ${PRGDIR}/services.list`
-do
- for loop in `seq 1 30`
- do
- status=`curl -o /dev/null -s -w %{http_code} $service`
- echo -e "curl $service response $status"
-
- if [ $status -eq 200 ]; then
- break
- fi
-
- sleep 2
- done
-done
-
-sleep 20
-echo -e "\n-------------------"
diff --git a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/script/services.list b/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/script/services.list
deleted file mode 100644
index 9ed89eed99c1..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/script/services.list
+++ /dev/null
@@ -1,17 +0,0 @@
-# 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.
-
-http://localhost:31193/demoTest/hello
diff --git a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/src/main/java/org/apache/shenyu/integrated/test/k8s/ingress/motan/MotanIngressControllerIntegratedBootstrap.java b/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/src/main/java/org/apache/shenyu/integrated/test/k8s/ingress/motan/MotanIngressControllerIntegratedBootstrap.java
deleted file mode 100644
index 35df5149e709..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/src/main/java/org/apache/shenyu/integrated/test/k8s/ingress/motan/MotanIngressControllerIntegratedBootstrap.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.shenyu.integrated.test.k8s.ingress.motan;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-/**
- * The type motan integrated bootstrap.
- */
-@SpringBootApplication
-public class MotanIngressControllerIntegratedBootstrap {
-
- /**
- * main method of App.
- *
- * @param args args
- */
- public static void main(final String[] args) {
- SpringApplication.run(MotanIngressControllerIntegratedBootstrap.class);
- }
-
-}
diff --git a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/src/main/resources/application.yml b/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/src/main/resources/application.yml
deleted file mode 100644
index 51f31397bf6a..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/src/main/resources/application.yml
+++ /dev/null
@@ -1,326 +0,0 @@
-# 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.
-
-server:
- port: 9195
- address: 0.0.0.0
- compression:
- enabled: true
- minResponseSize: 1MB # If the response data is greater than 1MB, enable compression.
-
-spring:
- main:
- allow-bean-definition-overriding: true
- application:
- name: shenyu-bootstrap
- codec:
- max-in-memory-size: 2MB
- cloud:
- discovery:
- enabled: true
- nacos:
- discovery:
- server-addr: 127.0.0.1:8848 # Spring Cloud Alibaba Dubbo use this.
- enabled: false
- namespace: ShenyuRegisterCenter
-
-# if you want use ribbon please config every server.
-#springCloud-test:
-# ribbon:
-# NIWSServerListClassName: com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
-
-eureka:
- client:
- enabled: true
- serviceUrl:
- defaultZone: http://127.0.0.1:8761/eureka/
- instance:
- prefer-ip-address: true
-
-# security:
-# oauth2:
-# client:
-# registration:
-# :
-# client-id:
-# client-secret:
-# provider:
-# :
-# authorization-uri:
-# token-uri:
-# user-info-uri:
-# jwk-set-uri:
-
-management:
- health:
- redis:
- enabled: false
- elasticsearch:
- enabled: false
- endpoint:
- health:
- enabled: true
- show-details: always
- endpoints:
- web:
- exposure:
- include: "*" # or health,info
-
-
-shenyu:
- selectorMatchCache:
- ## selector L1 cache
- cache:
- enabled: false
- initialCapacity: 10000 # initial capacity in cache
- maximumSize: 10000 # max size in cache
- ruleMatchCache:
- ## rule L1 cache
- cache:
- enabled: true
- initialCapacity: 10000 # initial capacity in cache
- maximumSize: 65536 # max size in cache
- netty:
- http:
- # set to false, user can custom the netty tcp server config.
- webServerFactoryEnabled: true
- selectCount: 1
- workerCount: 8
- accessLog: false
- serverSocketChannel:
- soRcvBuf: 87380
- soBackLog: 128
- soReuseAddr: false
- connectTimeoutMillis: 10000
- writeBufferHighWaterMark: 65536
- writeBufferLowWaterMark: 32768
- writeSpinCount: 16
- autoRead: false
- allocType: "pooled"
- messageSizeEstimator: 8
- singleEventExecutorPerGroup: true
- socketChannel:
- soKeepAlive: false
- soReuseAddr: false
- soLinger: -1
- tcpNoDelay: true
- soRcvBuf: 87380
- soSndBuf: 16384
- ipTos: 0
- allowHalfClosure: false
- connectTimeoutMillis: 10000
- writeBufferHighWaterMark: 65536
- writeBufferLowWaterMark: 32768
- writeSpinCount: 16
- autoRead: false
- allocType: "pooled"
- messageSizeEstimator: 8
- singleEventExecutorPerGroup: true
- sni:
- enabled: false
- mod: k8s #manul
- defaultK8sSecretNamespace: shenyu-ingress
- defaultK8sSecretName: default-cert
- # mod: manual
- # certificates:
- # - domain: 'localhost'
- # keyCertChainFile: '/Users/zhukunshuai/Desktop/cert/example.com+1.pem'
- # keyFile: '/Users/zhukunshuai/Desktop/cert/example.com+1-key.pem'
- # - domain: 'example.com'
- # keyCertChainFile: '/Users/zhukunshuai/Desktop/cert/example.com+1.pem'
- # keyFile: '/Users/zhukunshuai/Desktop/cert/example.com+1-key.pem'
- # httpclient:
- # strategy: netty # webClient
- # connectTimeout: 45000
- # responseTimeout: 3000
- # readerIdleTime: 3000
- # writerIdleTime: 3000
- # allIdleTime: 3000
- # readTimeout: 3000
- # writeTimeout: 3000
- # wiretap: false
- # keepAlive: false
- # maxInMemorySize: 1 #1mb
- # pool:
- # type: ELASTIC
- # name: proxy
- # maxConnections: 16
- # acquireTimeout: 45000
- # maxIdleTime: 3000
- # proxy:
- # host:
- # port:
- # username:
- # password:
- # nonProxyHostsPattern:
- # ssl:
- # useInsecureTrustManager: true
- # keyStoreType: PKCS12
- # keyStorePath: classpath:keystore.p12
- # keyStorePassword: 123456
- # keyStoreProvider:
- # keyPassword: 123456
- # trustedX509Certificates:
- # handshakeTimeout:
- # closeNotifyFlushTimeout:
- # closeNotifyReadTimeout:
- # defaultConfigurationType:
- # threadPool:
- # prefix: shenyu
- # selectCount: 1
- # workerCount: 8
- # daemon: true
- register:
- enabled: false
- registerType: zookeeper #etcd #consul
- serverLists: localhost:2181 #http://localhost:2379 #localhost:8848
- props:
- cross:
- enabled: true
- allowedHeaders:
- allowedMethods: "*"
- allowedAnyOrigin: true # the same of Access-Control-Allow-Origin: "*"
- # allowedOrigin:
- # format : schema://prefix spacer domain
- # Access-Control-Allow-Origin: "http://a.apache.org,http://b.apache.org"
- # spacer: "."
- # domain: apache.org
- # prefixes:
- # - a # a.apache.org
- # - b # b.apache.org
- # origins:
- # - c.apache.org
- # - d.apache.org
- # - http://e.apache.org
- # originRegex: ^http(|s)://(.*\.|)abc.com$
- allowedExpose: ""
- maxAge: "18000"
- allowCredentials: true
-
- switchConfig:
- local: true
- collapseSlashes: false
- file:
- enabled: true
- maxSize : 10
-# sync:
-# websocket:
-# urls: ws://localhost:9095/websocket
-# allowOrigin: ws://localhost:9195
- # apollo:
- # appId: shenyu
- # meta: http://localhost:8080
- # env: dev
- # clusterName: test
- # namespace: application
- # zookeeper:
- # url: localhost:2181
- # sessionTimeout: 5000
- # connectionTimeout: 2000
- # http:
- # url: http://localhost:9095
- # username:
- # password:
- # nacos:
- # url: localhost:8848
- # namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
- # username:
- # password:
- # acm:
- # enabled: false
- # endpoint: acm.aliyun.com
- # namespace:
- # accessKey:
- # secretKey:
- # polaris:
- # url: 127.0.0.1:8093
- # namespace:
- # fileGroup:
- # etcd:
- # url: http://localhost:2379
- # consul:
- # url: http://localhost:8500
- # waitTime: 10000
- # watchDelay: 10000
- exclude:
- enabled: false
- paths:
- - /favicon.ico
- fallback:
- enabled: false
- paths:
- - /fallback/hystrix
- - /fallback/resilience4j
- - /fallback/sentinel
- health:
- enabled: true
- paths:
- - /actuator
- - /health_check
- extPlugin:
- path:
- enabled: true
- threads: 1
- scheduleTime: 300
- scheduleDelay: 30
- scheduler:
- enabled: false
- type: fixed
- threads: 16
- upstreamCheck:
- enabled: false
- poolSize: 10
- timeout: 3000
- healthyThreshold: 1
- unhealthyThreshold: 1
- interval: 5000
- printEnabled: true
- printInterval: 60000
- springCloudCache:
- enabled: false
- ribbon:
- serverListRefreshInterval: 10000
- metrics:
- enabled: false
- name : prometheus
- host: 127.0.0.1
- port: 8090
- jmxConfig:
- props:
- jvm_enabled: true
- # plugins:
- # rate-limiter.enabled: false
- local:
- enabled: false
- sha512Key: "BA3253876AED6BC22D4A6FF53D8406C6AD864195ED144AB5C87621B6C233B548BAEAE6956DF346EC8C17F5EA10F35EE3CBC514797ED7DDD3145464E2A0BAB413"
-# sharedPool:
-# enable: true
-# prefix: "shenyu-shared"
-# corePoolSize: 200
-# maximumPoolSize: 2000
-# keepAliveTime: 60000
-# # 1GB
-# maxWorkQueueMemory: 1073741824
-# # 256MB
-# maxFreeMemory: 268435456
-
-logging:
- level:
- root: info
- org.springframework.boot: info
- org.apache.ibatis: info
- org.apache.shenyu.bonuspoint: info
- org.apache.shenyu.lottery: info
- org.apache.shenyu: info
diff --git a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/src/test/java/org/apache/shenyu/integrated/test/k8s/ingress/motan/MotanPluginTest.java b/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/src/test/java/org/apache/shenyu/integrated/test/k8s/ingress/motan/MotanPluginTest.java
deleted file mode 100644
index a7cab3072f14..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-motan/src/test/java/org/apache/shenyu/integrated/test/k8s/ingress/motan/MotanPluginTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.shenyu.integrated.test.k8s.ingress.motan;
-
-import com.google.gson.reflect.TypeToken;
-import org.apache.shenyu.integratedtest.common.AbstractPluginDataInit;
-import org.apache.shenyu.integratedtest.common.dto.MotanDTO;
-import org.apache.shenyu.integratedtest.common.helper.HttpHelper;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-
-import java.lang.reflect.Type;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class MotanPluginTest extends AbstractPluginDataInit {
-
- private static final HttpHelper HTTP_HELPER = HttpHelper.INSTANCE;
-
- @BeforeAll
- public static void setup() {
- HTTP_HELPER.setGatewayEndpoint("http://localhost:30095");
- }
-
- @Test
- public void testHelloWorld() throws Exception {
- MotanDTO request = new MotanDTO("shenyu");
- Type returnType = new TypeToken() {
- }.getType();
- String response = HttpHelper.INSTANCE.postGateway("/demo/hello", request, returnType);
- assertEquals("hello shenyu", response);
- }
-
-}
diff --git a/shenyu-integrated-test/shenyu-integrated-test-motan/Dockerfile b/shenyu-integrated-test/shenyu-integrated-test-motan/Dockerfile
deleted file mode 100644
index 9647f38eddad..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-motan/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-# 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.
-
-FROM eclipse-temurin:17-centos7
-
-ENV APP_NAME shenyu-integrated-test-motan
-ENV LOCAL_PATH /opt/${APP_NAME}
-
-RUN mkdir -p ${LOCAL_PATH}
-
-ADD target/${APP_NAME}.jar ${LOCAL_PATH}
-
-WORKDIR ${LOCAL_PATH}
-EXPOSE 9195
-
-CMD java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/sun.net.util=ALL-UNNAMED -jar ${APP_NAME}.jar
diff --git a/shenyu-integrated-test/shenyu-integrated-test-motan/docker-compose.yml b/shenyu-integrated-test/shenyu-integrated-test-motan/docker-compose.yml
deleted file mode 100644
index f34e7532740c..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-motan/docker-compose.yml
+++ /dev/null
@@ -1,97 +0,0 @@
-# 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.
-version: "3.9"
-services:
- shenyu-zk:
- container_name: shenyu-zk
- image: zookeeper:3.9
- restart: always
- networks:
- - shenyu
-
- shenyu-admin:
- image: apache/shenyu-admin:latest
- container_name: shenyu-admin
- restart: always
- networks:
- - shenyu
- depends_on:
- shenyu-zk:
- condition: service_started
- ports:
- - "9095:9095"
- environment:
- - SPRING_PROFILES_ACTIVE=h2
- - shenyu.database.init_script=sql-script/h2/schema.sql
- healthcheck:
- test: [ "CMD-SHELL", "wget -q -O - http://shenyu-admin:9095/actuator/health | grep UP || exit 1" ]
- timeout: 2s
- retries: 30
- start_period: 5s
-
- shenyu-examples-motan:
- deploy:
- resources:
- limits:
- memory: 2048M
- container_name: shenyu-examples-motan
- image: shenyu-examples-motan:latest
- restart: always
- environment:
- - motan.registry.protocol=zookeeper
- - motan.registry.address=shenyu-zk:2181
- - shenyu.register.serverLists=http://shenyu-admin:9095
- healthcheck:
- test: [ "CMD-SHELL", "wget -q -O - http://localhost:8081/actuator/health | grep UP || exit 1" ]
- timeout: 2s
- retries: 3
- start_period: 5s
- ports:
- - "8081:8081"
- - "8002:8002"
- networks:
- - shenyu
- depends_on:
- shenyu-admin:
- condition: service_healthy
-
- shenyu-integrated-test-motan:
- container_name: shenyu-integrated-test-motan
- image: apache/shenyu-integrated-test-motan:latest
- restart: always
- deploy:
- resources:
- limits:
- memory: 2048M
- environment:
- - shenyu.sync.websocket.urls=ws://shenyu-admin:9095/websocket
- depends_on:
- shenyu-examples-motan:
- condition: service_healthy
- ports:
- - "9195:9195"
- healthcheck:
- test: [ "CMD", "wget", "-q", "-O", "-", "http://shenyu-integrated-test-motan:9195/actuator/health" ]
- timeout: 2s
- retries: 3
- start_period: 5s
- networks:
- - shenyu
-
-
-networks:
- shenyu:
- name: shenyu
diff --git a/shenyu-integrated-test/shenyu-integrated-test-motan/pom.xml b/shenyu-integrated-test/shenyu-integrated-test-motan/pom.xml
deleted file mode 100644
index b8326448dde1..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-motan/pom.xml
+++ /dev/null
@@ -1,134 +0,0 @@
-
-
-
-
- shenyu-integrated-test
- org.apache.shenyu
- 2.7.1-SNAPSHOT
-
- 4.0.0
-
- shenyu-integrated-test-motan
- shenyu-integrated-test-motan
-
-
-
-
- org.apache.shenyu
- shenyu-spring-boot-starter-plugin-motan
- ${project.version}
-
-
-
- com.weibo
- motan-core
- ${motan.version}
-
-
-
- com.weibo
- motan-registry-zookeeper
- ${motan.version}
-
-
-
- com.weibo
- motan-transport-netty4
- ${motan.version}
-
-
-
- com.weibo
- motan-springsupport
- ${motan.version}
-
-
-
-
- org.apache.shenyu
- shenyu-integrated-test-common
- ${project.version}
-
-
-
-
-
- it
-
- shenyu-integrated-test-motan
- apache/shenyu-integrated-test-motan
- latest
-
-
- shenyu-integrated-test-motan
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- ${spring-boot.version}
-
-
- package
-
- repackage
-
-
-
-
- org.apache.shenyu.integrated.test.motan.MotanIntegratedBootstrap
- true
-
-
-
- io.fabric8
- docker-maven-plugin
- ${docker-maven-plugin.version}
-
-
-
- apache/shenyu-integrated-test-motan
-
- ${project.basedir}
-
-
-
-
-
-
- start
-
- build
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
- false
-
-
-
-
-
-
-
diff --git a/shenyu-integrated-test/shenyu-integrated-test-motan/script/healthcheck.sh b/shenyu-integrated-test/shenyu-integrated-test-motan/script/healthcheck.sh
deleted file mode 100644
index 4484e89bfe20..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-motan/script/healthcheck.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash
-#
-# 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.
-#
-
-PRGDIR=`dirname "$0"`
-for service in `grep -v -E "^$|^#" ${PRGDIR}/services.list`
-do
- for loop in `seq 1 30`
- do
- status=`curl -o /dev/null -s -w %{http_code} $service`
- echo -e "curl $service response $status"
-
- if [ $status -eq 200 ]; then
- break
- fi
-
- sleep 2
- done
-done
-
-sleep 30
-echo -e "\n-------------------"
diff --git a/shenyu-integrated-test/shenyu-integrated-test-motan/script/services.list b/shenyu-integrated-test/shenyu-integrated-test-motan/script/services.list
deleted file mode 100644
index 35bba1fc37e3..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-motan/script/services.list
+++ /dev/null
@@ -1,20 +0,0 @@
-# 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.
-
-http://localhost:9095/actuator/health
-http://localhost:9195/actuator/health
-http://localhost:8081/actuator/health
-http://localhost:8002/actuator/health
diff --git a/shenyu-integrated-test/shenyu-integrated-test-motan/src/main/java/org/apache/shenyu/integrated/test/motan/MotanIntegratedBootstrap.java b/shenyu-integrated-test/shenyu-integrated-test-motan/src/main/java/org/apache/shenyu/integrated/test/motan/MotanIntegratedBootstrap.java
deleted file mode 100644
index 94cb5a3116f7..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-motan/src/main/java/org/apache/shenyu/integrated/test/motan/MotanIntegratedBootstrap.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.shenyu.integrated.test.motan;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-/**
- * The type motan integrated bootstrap.
- */
-@SpringBootApplication
-public class MotanIntegratedBootstrap {
-
- /**
- * main method of App.
- *
- * @param args args
- */
- public static void main(final String[] args) {
- SpringApplication.run(MotanIntegratedBootstrap.class);
- }
-
-}
diff --git a/shenyu-integrated-test/shenyu-integrated-test-motan/src/main/resources/application-local.yml b/shenyu-integrated-test/shenyu-integrated-test-motan/src/main/resources/application-local.yml
deleted file mode 100644
index 8c4167785148..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-motan/src/main/resources/application-local.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# 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.
-
-server:
- port: 9195
- address: 0.0.0.0
-
-spring:
- main:
- allow-bean-definition-overriding: true
- application:
- name: shenyu-bootstrap
-
-management:
- health:
- defaults:
- enabled: false
-
-shenyu:
- switchConfig:
- local: true
- cross:
- enabled: true
- sync:
- websocket:
- urls: ws://localhost:9095/websocket
- allowOrigin: ws://localhost:9195
- exclude:
- enabled: true
- paths:
- - /favicon.ico
- - /actuator/health
- local:
- enabled: true
- sha512Key: "BA3253876AED6BC22D4A6FF53D8406C6AD864195ED144AB5C87621B6C233B548BAEAE6956DF346EC8C17F5EA10F35EE3CBC514797ED7DDD3145464E2A0BAB413"
- sharedPool:
- enable: true
-
-logging:
- level:
- root: info
- org.springframework.boot: info
- org.apache.ibatis: info
- org.apache.shenyu.bonuspoint: info
- org.apache.shenyu.lottery: info
- org.apache.shenyu: info
-
diff --git a/shenyu-integrated-test/shenyu-integrated-test-motan/src/main/resources/application.yml b/shenyu-integrated-test/shenyu-integrated-test-motan/src/main/resources/application.yml
deleted file mode 100644
index 393ad24df15b..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-motan/src/main/resources/application.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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.
-
-spring:
- profiles:
- active: local
diff --git a/shenyu-integrated-test/shenyu-integrated-test-motan/src/test/java/org/apache/shenyu/integrated/test/motan/MotanPluginShareThreadPoolTest.java b/shenyu-integrated-test/shenyu-integrated-test-motan/src/test/java/org/apache/shenyu/integrated/test/motan/MotanPluginShareThreadPoolTest.java
deleted file mode 100644
index 34a8811f2e53..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-motan/src/test/java/org/apache/shenyu/integrated/test/motan/MotanPluginShareThreadPoolTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.shenyu.integrated.test.motan;
-
-import com.google.gson.reflect.TypeToken;
-import org.apache.shenyu.common.enums.PluginEnum;
-import org.apache.shenyu.integratedtest.common.AbstractPluginDataInit;
-import org.apache.shenyu.integratedtest.common.dto.MotanDTO;
-import org.apache.shenyu.integratedtest.common.helper.HttpHelper;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-
-import java.io.IOException;
-import java.lang.reflect.Type;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class MotanPluginShareThreadPoolTest extends AbstractPluginDataInit {
-
- @BeforeAll
- public static void setup() throws IOException {
- String pluginResult = initPlugin(PluginEnum.MOTAN.getName(), "{\"registerProtocol\":\"zk\",\"registerAddress\":\"shenyu-zk:2181\",\"threadpool\": \"shared\"}");
- assertThat(pluginResult, is("success"));
- }
-
- @Test
- public void testHelloWorld() throws Exception {
- MotanDTO request = new MotanDTO("shenyu");
- Type returnType = new TypeToken() {
- }.getType();
- String response = HttpHelper.INSTANCE.postGateway("/motan/demo/hello", request, returnType);
- assertEquals("hello shenyu", response);
- }
-
-}
diff --git a/shenyu-integrated-test/shenyu-integrated-test-motan/src/test/java/org/apache/shenyu/integrated/test/motan/MotanPluginTest.java b/shenyu-integrated-test/shenyu-integrated-test-motan/src/test/java/org/apache/shenyu/integrated/test/motan/MotanPluginTest.java
deleted file mode 100644
index 4e57ed589991..000000000000
--- a/shenyu-integrated-test/shenyu-integrated-test-motan/src/test/java/org/apache/shenyu/integrated/test/motan/MotanPluginTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.shenyu.integrated.test.motan;
-
-import com.google.gson.reflect.TypeToken;
-import org.apache.shenyu.common.enums.PluginEnum;
-import org.apache.shenyu.integratedtest.common.AbstractPluginDataInit;
-import org.apache.shenyu.integratedtest.common.dto.MotanDTO;
-import org.apache.shenyu.integratedtest.common.helper.HttpHelper;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-
-import java.io.IOException;
-import java.lang.reflect.Type;
-
-import static org.hamcrest.Matchers.is;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-public class MotanPluginTest extends AbstractPluginDataInit {
-
- @BeforeAll
- public static void setup() throws IOException {
- String pluginResult = initPlugin(PluginEnum.MOTAN.getName(), "{\"registerAddress\":\"shenyu-zk:2181\",\"registerProtocol\":\"zk\"}");
- assertThat(pluginResult, is("success"));
- }
-
- @Test
- public void testHelloWorld() throws Exception {
- MotanDTO request = new MotanDTO("shenyu");
- Type returnType = new TypeToken() {
- }.getType();
- String response = HttpHelper.INSTANCE.postGateway("/motan/demo/hello", request, returnType);
- assertEquals("hello shenyu", response);
- }
-
-}
diff --git a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/common/IngressConstants.java b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/common/IngressConstants.java
index ca6f12f392f2..6a4c24e76315 100644
--- a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/common/IngressConstants.java
+++ b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/common/IngressConstants.java
@@ -81,33 +81,6 @@ public class IngressConstants {
// The configuration key to specify parameter types for the Dubbo plugin, in string
public static final String PLUGIN_DUBBO_PARAMENT_TYPE = "shenyu.apache.org/plugin-dubbo-parament-type";
- // The configuration key to specify the Tars path for the plugin, in string
- public static final String PLUGIN_MOTAN_ENABLED = "shenyu.apache.org/plugin-motan-enabled";
-
- // The configuration key to specify the Tars path for the plugin, in string
- public static final String PLUGIN_MOTAN_CONTEXT_PATH = "shenyu.apache.org/plugin-motan-context-path";
-
- // The configuration key to specify the Tars path for the plugin, in string
- public static final String PLUGIN_MOTAN_APP_NAME = "shenyu.apache.org/plugin-motan-app-name";
-
- // The configuration key to specify the Tars method name for the plugin, in string
- public static final String PLUGIN_MOTAN_METHOD_NAME = "shenyu.apache.org/plugin-motan-method-name";
-
- // The configuration key to specify the Tars path for the plugin, in string
- public static final String PLUGIN_MOTAN_PATH = "shenyu.apache.org/plugin-motan-path";
-
- // The configuration key to specify the Tars service name for the plugin, in string
- public static final String PLUGIN_MOTAN_SREVICE_NAME = "shenyu.apache.org/plugin-motan-service-name";
-
- // The configuration key to specify the Tars RPC type for the plugin, in string
- public static final String PLUGIN_MOTAN_RPC_TYPE = "shenyu.apache.org/plugin-motan-rpc-type";
-
- // The configuration key to specify the Tars parameter types for the plugin, in string
- public static final String PLUGIN_MOTAN_PARAMS_TYPE = "shenyu.apache.org/plugin-motan-params-type";
-
- // The configuration key to specify additional RPC extension for the Tars plugin, in string
- public static final String PLUGIN_MOTAN_RPC_EXPAND = "shenyu.apache.org/plugin-motan-rpc-expand";
-
//Determining whether to use the WebSocket plugin, in String
public static final String PLUGIN_WEB_SOCKET_ENABLED = "shenyu.apache.org/plugin-web-socket-enabled";
diff --git a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/IngressParser.java b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/IngressParser.java
index 39f2db7e140a..a9ef809a5b21 100644
--- a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/IngressParser.java
+++ b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/IngressParser.java
@@ -67,21 +67,17 @@ public IngressParser(final SharedIndexInformer serviceInformer, final
public List parse(final V1Ingress ingress, final CoreV1Api coreV1Api) {
List shenyuMemoryConfigList = new ArrayList<>();
boolean dubboEnabled = getBooleanAnnotation(ingress, IngressConstants.PLUGIN_DUBBO_ENABLED);
- boolean motanEnabled = getBooleanAnnotation(ingress, IngressConstants.PLUGIN_MOTAN_ENABLED);
boolean webSocketEnabled = getBooleanAnnotation(ingress, IngressConstants.PLUGIN_WEB_SOCKET_ENABLED);
boolean brpcEnabled = getBooleanAnnotation(ingress, IngressConstants.PLUGIN_BRPC_ENABLED);
boolean grpcEnabled = getBooleanAnnotation(ingress, IngressConstants.PLUGIN_GRPC_ENABLED);
boolean sofaEnabled = getBooleanAnnotation(ingress, IngressConstants.PLUGIN_SOFA_ENABLED);
- if (!dubboEnabled || !motanEnabled || !sofaEnabled) {
+ if (!dubboEnabled || !sofaEnabled) {
contextPathParse(ingress, shenyuMemoryConfigList, coreV1Api);
}
if (dubboEnabled) {
DubboIngressParser dubboIngressParser = new DubboIngressParser(serviceLister, endpointsLister);
shenyuMemoryConfigList.add(dubboIngressParser.parse(ingress, coreV1Api));
- } else if (motanEnabled) {
- MotanIngressParser motanIngressParser = new MotanIngressParser(serviceLister, endpointsLister);
- shenyuMemoryConfigList.add(motanIngressParser.parse(ingress, coreV1Api));
} else if (webSocketEnabled) {
WebSocketParser webSocketParser = new WebSocketParser(serviceLister, endpointsLister);
shenyuMemoryConfigList.add(webSocketParser.parse(ingress, coreV1Api));
diff --git a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/MotanIngressParser.java b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/MotanIngressParser.java
deleted file mode 100644
index 5479d7f444a5..000000000000
--- a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/MotanIngressParser.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * 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.shenyu.k8s.parser;
-
-import io.kubernetes.client.informer.cache.Lister;
-import io.kubernetes.client.openapi.ApiException;
-import io.kubernetes.client.openapi.apis.CoreV1Api;
-import io.kubernetes.client.openapi.models.V1Endpoints;
-import io.kubernetes.client.openapi.models.V1HTTPIngressPath;
-import io.kubernetes.client.openapi.models.V1Ingress;
-import io.kubernetes.client.openapi.models.V1IngressBackend;
-import io.kubernetes.client.openapi.models.V1IngressRule;
-import io.kubernetes.client.openapi.models.V1IngressTLS;
-import io.kubernetes.client.openapi.models.V1Secret;
-import io.kubernetes.client.openapi.models.V1Service;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.shenyu.common.config.ssl.SslCrtAndKeyStream;
-import org.apache.shenyu.common.dto.ConditionData;
-import org.apache.shenyu.common.dto.MetaData;
-import org.apache.shenyu.common.dto.RuleData;
-import org.apache.shenyu.common.dto.SelectorData;
-import org.apache.shenyu.common.enums.MatchModeEnum;
-import org.apache.shenyu.common.enums.OperatorEnum;
-import org.apache.shenyu.common.enums.ParamTypeEnum;
-import org.apache.shenyu.common.enums.PluginEnum;
-import org.apache.shenyu.common.enums.SelectorTypeEnum;
-import org.apache.shenyu.common.exception.ShenyuException;
-import org.apache.shenyu.k8s.common.IngressConfiguration;
-import org.apache.shenyu.k8s.common.IngressConstants;
-import org.apache.shenyu.k8s.common.ShenyuMemoryConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-public class MotanIngressParser implements K8sResourceParser {
- private static final Logger LOG = LoggerFactory.getLogger(MotanIngressParser.class);
-
- private final Lister serviceLister;
-
- private final Lister endpointsLister;
-
- /**
- * IngressParser Constructor.
- *
- * @param serviceLister serviceLister
- * @param endpointsLister endpointsLister
- */
- public MotanIngressParser(final Lister serviceLister, final Lister endpointsLister) {
- this.serviceLister = serviceLister;
- this.endpointsLister = endpointsLister;
- }
-
- /**
- * Parse ingress to ShenyuMemoryConfig.
- *
- * @param ingress ingress resource
- * @param coreV1Api coreV1Api
- * @return ShenyuMemoryConfig
- */
- @Override
- public ShenyuMemoryConfig parse(final V1Ingress ingress, final CoreV1Api coreV1Api) {
- ShenyuMemoryConfig res = new ShenyuMemoryConfig();
-
- if (Objects.nonNull(ingress.getSpec())) {
- // Parse the default backend
- V1IngressBackend defaultBackend = ingress.getSpec().getDefaultBackend();
- List rules = ingress.getSpec().getRules();
- List tlsList = ingress.getSpec().getTls();
-
- String namespace = Objects.requireNonNull(ingress.getMetadata()).getNamespace();
-
- if (Objects.isNull(rules) || CollectionUtils.isEmpty(rules)) {
- // if rules is null, defaultBackend become global default
- if (Objects.nonNull(defaultBackend) && Objects.nonNull(defaultBackend.getService())) {
- IngressConfiguration defaultRouteConfig = getDefaultRouteConfig(ingress.getMetadata().getAnnotations());
- res.setGlobalDefaultBackend(Pair.of(Pair.of(namespace + "/" + ingress.getMetadata().getName(), defaultBackend.getService().getName()),
- defaultRouteConfig));
- }
- } else {
- // if rules is not null, defaultBackend is default in this ingress
- List routeList = new ArrayList<>(rules.size());
- for (V1IngressRule ingressRule : rules) {
- List routes = parseIngressRule(ingressRule,
- Objects.requireNonNull(ingress.getMetadata()).getNamespace(), ingress.getMetadata().getAnnotations(), ingress.getMetadata().getLabels());
- routeList.addAll(routes);
- }
- res.setRouteConfigList(routeList);
- }
-
- // Parse tls
- if (Objects.nonNull(tlsList) && CollectionUtils.isNotEmpty(tlsList)) {
- List sslList = new ArrayList<>();
- for (V1IngressTLS tls : tlsList) {
- String secretName = tls.getSecretName();
- List hosts = tls.getHosts();
- if (Objects.nonNull(secretName) && CollectionUtils.isNotEmpty(hosts)) {
- try {
- V1Secret secret = coreV1Api.readNamespacedSecret(secretName, namespace, "ture");
- if (Objects.nonNull(secret.getData())) {
- InputStream keyCertChainInputStream = new ByteArrayInputStream(secret.getData().get("tls.crt"));
- InputStream keyInputStream = new ByteArrayInputStream(secret.getData().get("tls.key"));
- hosts.forEach(host ->
- sslList.add(new SslCrtAndKeyStream(host, keyCertChainInputStream, keyInputStream))
- );
- }
- } catch (ApiException e) {
- LOG.error("parse tls failed ", e);
- }
- }
- }
- res.setTlsConfigList(sslList);
- }
- }
- return res;
- }
-
- private List parseIngressRule(final V1IngressRule ingressRule,
- final String namespace,
- final Map annotations,
- final Map labels) {
- List res = new ArrayList<>();
-
- ConditionData hostCondition = null;
- if (Objects.nonNull(ingressRule.getHost())) {
- hostCondition = new ConditionData();
- hostCondition.setParamType(ParamTypeEnum.URI.getName());
- hostCondition.setOperator(OperatorEnum.EQ.getAlias());
- hostCondition.setParamValue(ingressRule.getHost());
- }
- if (Objects.nonNull(ingressRule.getHttp())) {
- List paths = ingressRule.getHttp().getPaths();
- if (Objects.nonNull(paths)) {
- for (V1HTTPIngressPath path : paths) {
- String pathPath = path.getPath();
- if (Objects.isNull(pathPath)) {
- continue;
- }
-
- OperatorEnum operator;
- if ("ImplementationSpecific".equals(path.getPathType())) {
- operator = OperatorEnum.MATCH;
- } else if ("Prefix".equals(path.getPathType())) {
- operator = OperatorEnum.STARTS_WITH;
- } else if ("Exact".equals(path.getPathType())) {
- operator = OperatorEnum.EQ;
- } else {
- LOG.info("Invalid path type, set it with match operator");
- operator = OperatorEnum.MATCH;
- }
-
- ConditionData pathCondition = new ConditionData();
- pathCondition.setOperator(operator.getAlias());
- pathCondition.setParamType(ParamTypeEnum.URI.getName());
- pathCondition.setParamValue(pathPath);
- List conditionList = new ArrayList<>(2);
- if (Objects.nonNull(hostCondition)) {
- conditionList.add(hostCondition);
- }
- conditionList.add(pathCondition);
- ConditionData ruleConditionData = new ConditionData();
- ruleConditionData.setParamType(ParamTypeEnum.URI.getName());
- ruleConditionData.setOperator(OperatorEnum.EQ.getAlias());
- ruleConditionData.setParamName(annotations.getOrDefault(IngressConstants.PLUGIN_MOTAN_PATH, pathPath));
- List ruleConditionDataList = new ArrayList<>();
- ruleConditionDataList.add(ruleConditionData);
-
- SelectorData selectorData = SelectorData.builder()
- .pluginId(String.valueOf(PluginEnum.MOTAN.getCode()))
- .pluginName(PluginEnum.MOTAN.getName())
- .name(pathPath)
- .matchMode(MatchModeEnum.AND.getCode())
- .type(SelectorTypeEnum.CUSTOM_FLOW.getCode())
- .enabled(true)
- .logged(false)
- .continued(true)
- .conditionList(conditionList).build();
-
- List ruleDataList = new ArrayList<>();
- List metaDataList = new ArrayList<>();
- for (String label : labels.keySet()) {
- Map metadataAnnotations = serviceLister.namespace(namespace).get(labels.get(label)).getMetadata().getAnnotations();
- List ruleConditionList = getRuleConditionList(metadataAnnotations);
- RuleData ruleData = createRuleData(metadataAnnotations, ruleConditionList);
- MetaData metaData = parseMetaData(metadataAnnotations);
- ruleDataList.add(ruleData);
- metaDataList.add(metaData);
- }
-
- res.add(new IngressConfiguration(selectorData, ruleDataList, metaDataList));
- }
- }
- }
- return res;
- }
-
- private List getRuleConditionList(final Map annotations) {
- final List ruleConditionList = new ArrayList<>();
- ConditionData ruleCondition = new ConditionData();
- ruleCondition.setOperator(OperatorEnum.EQ.getAlias());
- ruleCondition.setParamType(ParamTypeEnum.URI.getName());
- ruleCondition.setParamValue(annotations.get(IngressConstants.PLUGIN_MOTAN_PATH));
- ruleConditionList.add(ruleCondition);
- return ruleConditionList;
- }
-
- private RuleData createRuleData(final Map metadataAnnotations, final List ruleConditionList) {
- return RuleData.builder()
- .name(metadataAnnotations.get(IngressConstants.PLUGIN_MOTAN_PATH))
- .pluginName(PluginEnum.MOTAN.getName())
- .matchMode(MatchModeEnum.AND.getCode())
- .conditionDataList(ruleConditionList)
- .loged(true)
- .enabled(true)
- .build();
- }
-
- private MetaData parseMetaData(final Map annotations) {
- return MetaData.builder()
- .appName(annotations.get(IngressConstants.PLUGIN_MOTAN_APP_NAME))
- .path(annotations.get(IngressConstants.PLUGIN_MOTAN_PATH))
- .rpcType(annotations.get(IngressConstants.PLUGIN_MOTAN_RPC_TYPE))
- .rpcExt(annotations.get(IngressConstants.PLUGIN_MOTAN_RPC_EXPAND))
- .serviceName(annotations.get(IngressConstants.PLUGIN_MOTAN_SREVICE_NAME))
- .methodName(annotations.get(IngressConstants.PLUGIN_MOTAN_METHOD_NAME))
- .parameterTypes(annotations.get(IngressConstants.PLUGIN_MOTAN_PARAMS_TYPE))
- .enabled(true)
- .build();
- }
-
- private IngressConfiguration getDefaultRouteConfig(final Map annotations) {
- final ConditionData conditionData = new ConditionData();
- conditionData.setParamName("default");
- conditionData.setParamType(ParamTypeEnum.URI.getName());
- conditionData.setOperator(OperatorEnum.PATH_PATTERN.getAlias());
- conditionData.setParamValue("/**");
-
- final SelectorData selectorData = SelectorData.builder()
- .name("default-selector")
- .sort(Integer.MAX_VALUE)
- .conditionList(Collections.singletonList(conditionData))
- .enabled(true)
- .id(IngressConstants.ID)
- .pluginName(PluginEnum.MOTAN.getName())
- .pluginId(String.valueOf(PluginEnum.MOTAN.getCode()))
- .logged(false)
- .continued(true)
- .matchMode(MatchModeEnum.AND.getCode())
- .type(SelectorTypeEnum.FULL_FLOW.getCode()).build();
-
- final RuleData ruleData = RuleData.builder()
- .selectorId(IngressConstants.ID)
- .pluginName(PluginEnum.MOTAN.getName())
- .name("default-rule")
- .matchMode(MatchModeEnum.AND.getCode())
- .conditionDataList(Collections.singletonList(conditionData))
- .loged(false)
- .enabled(true)
- .sort(Integer.MAX_VALUE).build();
-
- if (Objects.isNull(annotations.get(IngressConstants.PLUGIN_MOTAN_APP_NAME))
- || Objects.isNull(annotations.get(IngressConstants.PLUGIN_MOTAN_METHOD_NAME))
- || Objects.isNull(annotations.get(IngressConstants.PLUGIN_MOTAN_PATH))
- || Objects.isNull(annotations.get(IngressConstants.PLUGIN_MOTAN_SREVICE_NAME))
- || Objects.isNull(annotations.get(IngressConstants.PLUGIN_MOTAN_RPC_TYPE))) {
- LOG.error("motan metadata is error, please check motan service. MetaData: [{}]", annotations);
- throw new ShenyuException(annotations + " is is missing.");
- }
- MetaData metaData = MetaData.builder()
- .appName(annotations.get(IngressConstants.PLUGIN_MOTAN_APP_NAME))
- .path(annotations.get(IngressConstants.PLUGIN_MOTAN_PATH))
- .rpcType(annotations.get(IngressConstants.PLUGIN_MOTAN_RPC_TYPE))
- .rpcExt(annotations.getOrDefault(IngressConstants.PLUGIN_MOTAN_RPC_EXPAND, ""))
- .serviceName(annotations.get(IngressConstants.PLUGIN_MOTAN_SREVICE_NAME))
- .methodName(annotations.get(IngressConstants.PLUGIN_MOTAN_METHOD_NAME))
- .parameterTypes(annotations.getOrDefault(IngressConstants.PLUGIN_MOTAN_PARAMS_TYPE, ""))
- .enabled(true)
- .build();
- return new IngressConfiguration(selectorData, Arrays.asList(ruleData), Arrays.asList(metaData));
- }
-}
diff --git a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/reconciler/IngressReconciler.java b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/reconciler/IngressReconciler.java
index 4ecf918325b0..8014bc71dcbf 100644
--- a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/reconciler/IngressReconciler.java
+++ b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/reconciler/IngressReconciler.java
@@ -194,9 +194,6 @@ private void enablePluginsBasedOnAnnotations(final Map annotatio
if (Objects.equals(annotations.get(IngressConstants.PLUGIN_DUBBO_ENABLED), "true")) {
String zookeeperUrl = getZookeeperUrl(annotations, request);
enablePlugin(shenyuCacheRepository, PluginEnum.DUBBO, zookeeperUrl);
- } else if (Objects.equals(annotations.get(IngressConstants.PLUGIN_MOTAN_ENABLED), "true")) {
- String zookeeperUrl = getZookeeperUrl(annotations, request);
- enablePlugin(shenyuCacheRepository, PluginEnum.MOTAN, zookeeperUrl);
} else if (Objects.equals(annotations.get(IngressConstants.PLUGIN_WEB_SOCKET_ENABLED), "true")) {
enablePlugin(shenyuCacheRepository, PluginEnum.WEB_SOCKET, null);
} else if (Objects.equals(annotations.get(IngressConstants.PLUGIN_GRPC_ENABLED), "true")) {
@@ -212,9 +209,6 @@ private void doDeleteConfigByIngress(final Request request, final V1Ingress oldI
if (Objects.equals(oldIngress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_DUBBO_ENABLED), "true")) {
selectorList = deleteSelectorByIngressName(request.getNamespace(), request.getName(), PluginEnum.DUBBO.getName(),
oldIngress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_DUBBO_CONTEXT_PATH));
- } else if (Objects.equals(oldIngress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_MOTAN_ENABLED), "true")) {
- selectorList = deleteSelectorByIngressName(request.getNamespace(), request.getName(), PluginEnum.MOTAN.getName(),
- oldIngress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_MOTAN_CONTEXT_PATH));
} else if (Objects.equals(oldIngress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_WEB_SOCKET_ENABLED), "true")) {
selectorList = deleteSelectorByIngressName(request.getNamespace(), request.getName(), PluginEnum.WEB_SOCKET.getName(), "");
} else if (Objects.equals(oldIngress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_GRPC_ENABLED), "true")) {
@@ -228,8 +222,6 @@ private void doDeleteConfigByIngress(final Request request, final V1Ingress oldI
if (Objects.nonNull(selectorList) && !selectorList.isEmpty()) {
if (Objects.equals(oldIngress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_DUBBO_ENABLED), "true")) {
IngressSelectorCache.getInstance().remove(request.getNamespace(), request.getName(), PluginEnum.DUBBO.getName());
- } else if (Objects.equals(oldIngress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_MOTAN_ENABLED), "true")) {
- IngressSelectorCache.getInstance().remove(request.getNamespace(), request.getName(), PluginEnum.MOTAN.getName());
} else if (Objects.equals(oldIngress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_WEB_SOCKET_ENABLED), "true")) {
IngressSelectorCache.getInstance().remove(request.getNamespace(), request.getName(), PluginEnum.WEB_SOCKET.getName());
} else if (Objects.equals(oldIngress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_GRPC_ENABLED), "true")) {
@@ -280,8 +272,6 @@ private String getPluginConfig(final PluginEnum pluginEnum, final String zookeep
return "{multiSelectorHandle: 1, multiRuleHandle:0}";
case DUBBO:
return "{\"register\":\"" + zookeeperUrl + "\",\"multiSelectorHandle\":\"1\",\"threadpool\":\"shared\",\"corethreads\":0,\"threads\":2147483647,\"queues\":0}";
- case MOTAN:
- return "{\"registerProtocol\":\"zk\",\"registerAddress\":\"" + zookeeperUrl + "\",\"corethreads\":0,\"threads\":2147483647,\"queues\":0,\"threadpool\":\"shared\"}";
case WEB_SOCKET:
return "{multiSelectorHandle: 1}";
case SOFA:
@@ -564,15 +554,12 @@ private void processTlsConfigurations(final ShenyuMemoryConfig shenyuMemoryConfi
private String getPluginName(final V1Ingress ingress) {
String pluginName;
String pluginDubboEnabled = ingress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_DUBBO_ENABLED);
- String pluginMotanEnabled = ingress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_MOTAN_ENABLED);
String pluginWebSocketEnabled = ingress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_WEB_SOCKET_ENABLED);
String pluginBrpcEnabled = ingress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_BRPC_ENABLED);
String pluginGrpcEnabled = ingress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_GRPC_ENABLED);
String pluginSofaEnabled = ingress.getMetadata().getAnnotations().get(IngressConstants.PLUGIN_SOFA_ENABLED);
if ((Boolean.TRUE.toString()).equals(pluginDubboEnabled)) {
pluginName = PluginEnum.DUBBO.getName();
- } else if ((Boolean.TRUE.toString()).equals(pluginMotanEnabled)) {
- pluginName = PluginEnum.MOTAN.getName();
} else if ((Boolean.TRUE.toString()).equals(pluginWebSocketEnabled)) {
pluginName = PluginEnum.WEB_SOCKET.getName();
} else if ((Boolean.TRUE.toString()).equals(pluginGrpcEnabled)) {
diff --git a/shenyu-kubernetes-controller/src/test/java/org/apache/shenyu/k8s/MotanReconcilerTest.java b/shenyu-kubernetes-controller/src/test/java/org/apache/shenyu/k8s/MotanReconcilerTest.java
deleted file mode 100644
index feaea8d3f929..000000000000
--- a/shenyu-kubernetes-controller/src/test/java/org/apache/shenyu/k8s/MotanReconcilerTest.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * 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.shenyu.k8s;
-
-import io.kubernetes.client.extended.controller.reconciler.Request;
-import io.kubernetes.client.extended.controller.reconciler.Result;
-import io.kubernetes.client.informer.SharedIndexInformer;
-import io.kubernetes.client.informer.cache.Indexer;
-import io.kubernetes.client.openapi.ApiClient;
-import io.kubernetes.client.openapi.models.V1EndpointAddress;
-import io.kubernetes.client.openapi.models.V1EndpointSubsetBuilder;
-import io.kubernetes.client.openapi.models.V1Endpoints;
-import io.kubernetes.client.openapi.models.V1EndpointsBuilder;
-import io.kubernetes.client.openapi.models.V1HTTPIngressPathBuilder;
-import io.kubernetes.client.openapi.models.V1Ingress;
-import io.kubernetes.client.openapi.models.V1IngressBuilder;
-import io.kubernetes.client.openapi.models.V1IngressRule;
-import io.kubernetes.client.openapi.models.V1IngressRuleBuilder;
-import io.kubernetes.client.openapi.models.V1Secret;
-import io.kubernetes.client.openapi.models.V1Service;
-import io.kubernetes.client.openapi.models.V1ServiceBuilder;
-import org.apache.shenyu.common.config.ssl.ShenyuSniAsyncMapping;
-import org.apache.shenyu.k8s.parser.IngressParser;
-import org.apache.shenyu.k8s.reconciler.IngressReconciler;
-import org.apache.shenyu.k8s.repository.ShenyuCacheRepository;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-/**
- * Motan Ingress Reconciler Test.
- */
-public final class MotanReconcilerTest {
-
- private SharedIndexInformer ingressInformer;
-
- private SharedIndexInformer secretInformer;
-
- private ShenyuCacheRepository shenyuCacheRepository;
-
- private ShenyuSniAsyncMapping shenyuSniAsyncMapping;
-
- private SharedIndexInformer serviceInformer;
-
- private SharedIndexInformer endpointsInformer;
-
- private IngressReconciler ingressReconciler;
-
- @BeforeEach
- public void init() {
- ingressInformer = mock(SharedIndexInformer.class);
- secretInformer = mock(SharedIndexInformer.class);
- shenyuCacheRepository = mock(ShenyuCacheRepository.class);
- shenyuSniAsyncMapping = new ShenyuSniAsyncMapping();
- serviceInformer = mock(SharedIndexInformer.class);
- endpointsInformer = mock(SharedIndexInformer.class);
-
- // mock ingressInformer
- final Indexer ingressIndexer = mock(Indexer.class);
- //mock serviceInformer
- final Indexer serviceIndexer = mock(Indexer.class);
-
- final V1IngressRule mockedRule = new V1IngressRuleBuilder().withNewHttp().withPaths(
- new V1HTTPIngressPathBuilder().withPath("/**")
- .withNewBackend()
- .withNewService().withName("testService").withNewPort().withNumber(8001).endPort().endService()
- .endBackend().build())
- .endHttp().build();
- Map annotations = new HashMap<>();
- annotations.put("kubernetes.io/ingress.class", "shenyu");
- annotations.put("shenyu.apache.org/plugin-motan-enabled", "true");
- annotations.put("shenyu.apache.org/zookeeper-register-address", "zookeeper://zookeeperService:2181");
- Map labels = new HashMap<>();
- labels.put("shenyu.apache.org/metadata-labels-1", "motanTestHelloService");
- Map labelsAnnotations = new HashMap<>();
- labelsAnnotations.put("kubernetes.io/ingress.class", "shenyu");
- labelsAnnotations.put("shenyu.apache.org/plugin-motan-enabled", "true");
- labelsAnnotations.put("shenyu.apache.org/plugin-motan-app-name", "motan");
- labelsAnnotations.put("shenyu.apache.org/plugin-motan-path", "/demoTest/hello");
- labelsAnnotations.put("shenyu.apache.org/plugin-motan-rpc-type", "motan");
- labelsAnnotations.put("shenyu.apache.org/plugin-motan-service-name", "org.apache.shenyu.examples.motan.service.MotanDemoService");
- labelsAnnotations.put("shenyu.apache.org/plugin-motan-method-name", "hello");
- labelsAnnotations.put("shenyu.apache.org/plugin-motan-params-type", "java.lang.String");
- labelsAnnotations.put("shenyu.apache.org/plugin-motan-rpc-expand", "{\"methodInfo\":[{\"methodName\":\"hello\","
- + "\"params\":[{\"left\":\"java.lang.String\",\"right\":\"name\"}]}],\"group\":\"motan-shenyu-rpc\",\"timeout\":2000,\"rpcProtocol\":\"motan2\"}");
- V1Service motanTestHelloService = new V1ServiceBuilder().withNewMetadata().withName("motanTestHelloService").withNamespace("mockedNamespace").withAnnotations(labelsAnnotations).endMetadata()
- .withNewSpec().endSpec()
- .withKind("Service").build();
-
- V1Ingress mockedIngress = new V1IngressBuilder().withNewMetadata().withLabels(labels).withName("mockedIngress").withNamespace("mockedNamespace").withAnnotations(annotations).endMetadata()
- .withNewSpec().withRules(mockedRule).endSpec()
- .withKind("Ingress").build();
-
- when(ingressIndexer.getByKey("mockedNamespace/mockedIngress")).thenReturn(mockedIngress);
- when(serviceIndexer.getByKey("mockedNamespace/motanTestHelloService")).thenReturn(motanTestHelloService);
- when(serviceInformer.getIndexer()).thenReturn(serviceIndexer);
- when(ingressInformer.getIndexer()).thenReturn(ingressIndexer);
-
- //mock endpointsInformer
- Indexer endpointsIndexer = mock(Indexer.class);
- V1Endpoints mockedEndpoints = new V1EndpointsBuilder().withKind("Endpoints")
- .withNewMetadata().withNamespace("mockedNamespace").withName("testService").endMetadata()
- .withSubsets(new V1EndpointSubsetBuilder().withAddresses(new V1EndpointAddress().ip("127.0.0.1")).build())
- .build();
- V1Endpoints zookeeperEndpoints = new V1EndpointsBuilder().withNewMetadata().withName("zookeeperService").withNamespace("mockedNamespace").endMetadata()
- .withSubsets(new V1EndpointSubsetBuilder().withAddresses(new V1EndpointAddress().ip("127.0.0.1")).build())
- .build();
- when(endpointsIndexer.getByKey("mockedNamespace/testService")).thenReturn(mockedEndpoints);
- when(endpointsIndexer.getByKey("mockedNamespace/zookeeperService")).thenReturn(zookeeperEndpoints);
- when(endpointsInformer.getIndexer()).thenReturn(endpointsIndexer);
-
- IngressParser ingressParser = new IngressParser(serviceInformer, endpointsInformer);
- ApiClient apiClient = mock(ApiClient.class);
-
- ingressReconciler = new IngressReconciler(ingressInformer, secretInformer, shenyuCacheRepository,
- shenyuSniAsyncMapping, ingressParser, apiClient);
- }
-
- /**
- * test reconcile.
- */
- @Test
- public void testReconcile() {
- Result result = ingressReconciler.reconcile(new Request("mockedNamespace", "mockedIngress"));
- Assertions.assertEquals(new Result(false), result);
- verify(shenyuCacheRepository).saveOrUpdateSelectorData(any());
- verify(shenyuCacheRepository).saveOrUpdateRuleData(any());
- verify(shenyuCacheRepository).saveOrUpdateMetaData(any());
- }
-}
diff --git a/shenyu-plugin/shenyu-plugin-api/src/main/java/org/apache/shenyu/plugin/api/result/ShenyuResultEnum.java b/shenyu-plugin/shenyu-plugin-api/src/main/java/org/apache/shenyu/plugin/api/result/ShenyuResultEnum.java
index a52976c5a87d..f5e3f4c69eee 100644
--- a/shenyu-plugin/shenyu-plugin-api/src/main/java/org/apache/shenyu/plugin/api/result/ShenyuResultEnum.java
+++ b/shenyu-plugin/shenyu-plugin-api/src/main/java/org/apache/shenyu/plugin/api/result/ShenyuResultEnum.java
@@ -112,11 +112,6 @@ public enum ShenyuResultEnum {
*/
GRPC_CLIENT_NULL(436, "Grpc client is null, please check the context path!"),
- /**
- * Motan have body param shenyu result enum.
- */
- MOTAN_HAVE_BODY_PARAM(437, "Motan must have body param, please enter the JSON format in the body!"),
-
/**
* full selector type enum.
*/
diff --git a/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-motan/src/test/java/org/apache/shenyu/plugin/motan/util/PrxInfoUtilTest.java b/shenyu-plugin/shenyu-plugin-api/src/test/java/org/apache/shenyu/plugin/api/result/ShenyuResultEnumTest.java
similarity index 70%
rename from shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-motan/src/test/java/org/apache/shenyu/plugin/motan/util/PrxInfoUtilTest.java
rename to shenyu-plugin/shenyu-plugin-api/src/test/java/org/apache/shenyu/plugin/api/result/ShenyuResultEnumTest.java
index 5b7e60c0b28b..84a947ae00a9 100644
--- a/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-motan/src/test/java/org/apache/shenyu/plugin/motan/util/PrxInfoUtilTest.java
+++ b/shenyu-plugin/shenyu-plugin-api/src/test/java/org/apache/shenyu/plugin/api/result/ShenyuResultEnumTest.java
@@ -15,18 +15,20 @@
* limitations under the License.
*/
-package org.apache.shenyu.plugin.motan.util;
+package org.apache.shenyu.plugin.api.result;
+
+import java.util.Arrays;
-import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
-/**
- * The Test Case For PrxInfoUtil.
- */
-public final class PrxInfoUtilTest {
+import static org.junit.jupiter.api.Assertions.assertFalse;
+
+class ShenyuResultEnumTest {
@Test
- public void testStatic() throws ClassNotFoundException {
- Assertions.assertEquals(PrxInfoUtil.getParamClass("int"), int.class);
+ void shouldNotContainRemovedRpcResultCode() {
+ assertFalse(Arrays.stream(ShenyuResultEnum.values())
+ .map(Enum::name)
+ .anyMatch("MOTAN_HAVE_BODY_PARAM"::equals));
}
}
diff --git a/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/pom.xml b/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/pom.xml
index f4edad699840..86c1b62ff337 100644
--- a/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/pom.xml
+++ b/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/pom.xml
@@ -30,7 +30,6 @@
shenyu-plugin-dubbo
shenyu-plugin-general-context
shenyu-plugin-grpc
- shenyu-plugin-motan
shenyu-plugin-sofa
shenyu-plugin-tars
shenyu-plugin-transform
diff --git a/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-general-context/src/main/java/org/apache/shenyu/plugin/general/context/GeneralContextPlugin.java b/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-general-context/src/main/java/org/apache/shenyu/plugin/general/context/GeneralContextPlugin.java
index 0074cef5d11d..8c270d131bf0 100644
--- a/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-general-context/src/main/java/org/apache/shenyu/plugin/general/context/GeneralContextPlugin.java
+++ b/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-general-context/src/main/java/org/apache/shenyu/plugin/general/context/GeneralContextPlugin.java
@@ -96,7 +96,7 @@ public String named() {
@Override
public boolean skip(final ServerWebExchange exchange) {
- return skipExcept(exchange, RpcTypeEnum.DUBBO, RpcTypeEnum.GRPC, RpcTypeEnum.MOTAN, RpcTypeEnum.SOFA, RpcTypeEnum.TARS);
+ return skipExcept(exchange, RpcTypeEnum.DUBBO, RpcTypeEnum.GRPC, RpcTypeEnum.SOFA, RpcTypeEnum.TARS);
}
}
diff --git a/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-motan/pom.xml b/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-motan/pom.xml
deleted file mode 100644
index 16ce97fbbc25..000000000000
--- a/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-motan/pom.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
- org.apache.shenyu
- shenyu-plugin-rpc
- 2.7.1-SNAPSHOT
-
- 4.0.0
- shenyu-plugin-motan
-
-
-
- com.weibo
- motan-core
- provided
-
-
- com.weibo
- motan-transport-netty4
- provided
-
-
- com.weibo
- motan-registry-zookeeper
- provided
-
-
- org.apache.logging.log4j
- log4j-1.2-api
- ${log4j-1.2-api.vetsion}
-
-
- com.weibo
- motan-springsupport
- provided
-
-
-
diff --git a/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-motan/src/main/java/org/apache/shenyu/plugin/motan/MotanPlugin.java b/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-motan/src/main/java/org/apache/shenyu/plugin/motan/MotanPlugin.java
deleted file mode 100644
index 43c20d66ea95..000000000000
--- a/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-motan/src/main/java/org/apache/shenyu/plugin/motan/MotanPlugin.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * 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.shenyu.plugin.motan;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.shenyu.common.constant.Constants;
-import org.apache.shenyu.common.dto.MetaData;
-import org.apache.shenyu.common.dto.RuleData;
-import org.apache.shenyu.common.dto.SelectorData;
-import org.apache.shenyu.common.enums.PluginEnum;
-import org.apache.shenyu.common.enums.RpcTypeEnum;
-import org.apache.shenyu.plugin.api.ShenyuPluginChain;
-import org.apache.shenyu.plugin.api.context.ShenyuContext;
-import org.apache.shenyu.plugin.api.result.ShenyuResultEnum;
-import org.apache.shenyu.plugin.api.result.ShenyuResultWrap;
-import org.apache.shenyu.plugin.api.utils.RequestUrlUtils;
-import org.apache.shenyu.plugin.api.utils.WebFluxResultUtils;
-import org.apache.shenyu.plugin.base.AbstractShenyuPlugin;
-import org.apache.shenyu.plugin.motan.proxy.MotanProxyService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.http.HttpStatus;
-import org.springframework.web.server.ServerWebExchange;
-import reactor.core.publisher.Mono;
-
-import java.util.Objects;
-
-/**
- * Motan plugin.
- */
-public class MotanPlugin extends AbstractShenyuPlugin {
-
- private static final Logger LOG = LoggerFactory.getLogger(MotanPlugin.class);
-
- private final MotanProxyService motanProxyService;
-
- /**
- * Instantiates a new motan plugin.
- *
- * @param motanProxyService the motan proxy service
- */
- public MotanPlugin(final MotanProxyService motanProxyService) {
- this.motanProxyService = motanProxyService;
- }
-
- @Override
- protected String getRawPath(final ServerWebExchange exchange) {
- return RequestUrlUtils.getRewrittenRawPath(exchange);
- }
-
- @Override
- @SuppressWarnings("all")
- protected Mono doExecute(final ServerWebExchange exchange, final ShenyuPluginChain chain,
- final SelectorData selector, final RuleData rule) {
- String param = exchange.getAttribute(Constants.PARAM_TRANSFORM);
- ShenyuContext shenyuContext = exchange.getAttribute(Constants.CONTEXT);
- Objects.requireNonNull(shenyuContext);
- MetaData metaData = exchange.getAttribute(Constants.META_DATA);
- if (!checkMetaData(metaData)) {
- Objects.requireNonNull(metaData);
- LOG.error("path is :{}, meta data have error.... {}", shenyuContext.getPath(), metaData);
- exchange.getResponse().setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR);
- Object error = ShenyuResultWrap.error(exchange, ShenyuResultEnum.META_DATA_ERROR);
- return WebFluxResultUtils.result(exchange, error);
- }
- if (StringUtils.isNoneBlank(metaData.getParameterTypes()) && StringUtils.isBlank(param)) {
- exchange.getResponse().setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR);
- Object error = ShenyuResultWrap.error(exchange, ShenyuResultEnum.MOTAN_HAVE_BODY_PARAM);
- return WebFluxResultUtils.result(exchange, error);
- }
- final Mono