This is an automated email from the ASF dual-hosted git repository.
liuhongyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new 5be0bf6d74 [type:fix] fix(logging-clickhouse): avoid unnecessary
config refresh when clickhouse config unchanged. (#5984)
5be0bf6d74 is described below
commit 5be0bf6d7422bfc478ce122800f5c21960681352
Author: yqw570994511 <[email protected]>
AuthorDate: Mon Mar 31 14:27:10 2025 +0800
[type:fix] fix(logging-clickhouse): avoid unnecessary config refresh when
clickhouse config unchanged. (#5984)
Co-authored-by: yuqianwei <qq120405>
Co-authored-by: aias00 <[email protected]>
---
.../config/ClickHouseLogCollectConfig.java | 30 ++++++++++++
.../LoggingClickHousePluginDataHandlerTest.java | 57 +++++++++++++++++++---
2 files changed, 79 insertions(+), 8 deletions(-)
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/config/ClickHouseLogCollectConfig.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/config/ClickHouseLogCollectConfig.java
index e66336ed53..1a70d9d96a 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/config/ClickHouseLogCollectConfig.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/config/ClickHouseLogCollectConfig.java
@@ -19,6 +19,7 @@ package org.apache.shenyu.plugin.logging.clickhouse.config;
import org.apache.shenyu.plugin.logging.common.config.GenericGlobalConfig;
+import java.util.Objects;
import java.util.Optional;
/**
@@ -206,6 +207,35 @@ public class ClickHouseLogCollectConfig {
public void setDatabase(final String database) {
this.database = database;
}
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return Boolean.TRUE;
+ }
+ if (Objects.isNull(o) || getClass() != o.getClass()) {
+ return Boolean.FALSE;
+ }
+ ClickHouseLogConfig that = (ClickHouseLogConfig) o;
+
+ return Objects.equals(getHost(), that.getHost())
+ && Objects.equals(getPort(), that.getPort())
+ && Objects.equals(getUsername(), that.getUsername())
+ && Objects.equals(getPassword(), that.getPassword())
+ && Objects.equals(getDatabase(), that.getDatabase())
+ && Objects.equals(getClusterName(), that.getClusterName())
+ && Objects.equals(getEngine(), that.getEngine())
+ && Objects.equals(getTtl(), that.getTtl())
+ && Objects.equals(getSampleRate(), that.getSampleRate())
+ && Objects.equals(getBufferQueueSize(),
that.getBufferQueueSize())
+ && Objects.equals(getMaxResponseBody(),
that.getMaxResponseBody())
+ && Objects.equals(getMaxRequestBody(),
that.getMaxRequestBody());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(host, port, username, password, database,
clusterName, engine, ttl);
+ }
}
}
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/handler/LoggingClickHousePluginDataHandlerTest.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/handler/LoggingClickHousePluginDataHandlerTest.java
index c94e34896b..2b952472e0 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/handler/LoggingClickHousePluginDataHandlerTest.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/handler/LoggingClickHousePluginDataHandlerTest.java
@@ -18,31 +18,38 @@
package org.apache.shenyu.plugin.logging.clickhouse.handler;
import org.apache.shenyu.common.dto.PluginData;
+import org.apache.shenyu.common.utils.Singleton;
+import
org.apache.shenyu.plugin.logging.clickhouse.config.ClickHouseLogCollectConfig;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mockito;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.mockito.junit.jupiter.MockitoSettings;
+import org.mockito.quality.Strictness;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
/**
* The Test Case For ClickHousePluginDataHandler.
*/
+@ExtendWith(MockitoExtension.class)
+@MockitoSettings(strictness = Strictness.LENIENT)
public final class LoggingClickHousePluginDataHandlerTest {
private LoggingClickHousePluginDataHandler
loggingClickHousePluginDataHandler;
@BeforeEach
public void setUp() {
- loggingClickHousePluginDataHandler = new
LoggingClickHousePluginDataHandler();
+ loggingClickHousePluginDataHandler = Mockito.spy(new
LoggingClickHousePluginDataHandler());
}
@Test
public void testHandlerPlugin() {
- PluginData pluginData = new PluginData();
-
pluginData.setConfig("{\"host\":\"127.0.0.1\",\"port\":\"8123\",\"database\":\"shenyu-gateway\",\"username\":\"foo\",\"password\":\"bar\",
\"ttl\":\"30\"}");
- pluginData.setEnabled(true);
- pluginData.setId("37");
- pluginData.setName("loggingClickHouse");
- pluginData.setRole("Logging");
- pluginData.setSort(195);
+ PluginData pluginData = createPluginData();
loggingClickHousePluginDataHandler.handlerPlugin(pluginData);
Assertions.assertNull(null);
}
@@ -52,4 +59,38 @@ public final class LoggingClickHousePluginDataHandlerTest {
Assertions.assertEquals(loggingClickHousePluginDataHandler.pluginNamed(),
"loggingClickHouse");
}
+ @Test
+ void testHandlerPluginUpdateSameConfig() {
+ ClickHouseLogCollectConfig.ClickHouseLogConfig existingConfig =
createValidConfig();
+ Singleton.INST.single(existingConfig.getClass(), existingConfig);
+
+ PluginData pluginData = createPluginData();
+
+ loggingClickHousePluginDataHandler.handlerPlugin(pluginData);
+
+ verify(loggingClickHousePluginDataHandler,
never()).doRefreshConfig(any());
+ }
+
+ private ClickHouseLogCollectConfig.ClickHouseLogConfig createValidConfig()
{
+ ClickHouseLogCollectConfig.ClickHouseLogConfig config = new
ClickHouseLogCollectConfig.ClickHouseLogConfig();
+ config.setHost("127.0.0.1");
+ config.setPort("8123");
+ config.setDatabase("shenyu-gateway");
+ config.setUsername("foo");
+ config.setPassword("bar");
+ config.setTtl("30");
+ return config;
+ }
+
+ private PluginData createPluginData() {
+ PluginData pluginData = new PluginData();
+
pluginData.setConfig("{\"host\":\"127.0.0.1\",\"port\":\"8123\",\"database\":\"shenyu-gateway\",\"username\":\"foo\",\"password\":\"bar\",
\"ttl\":\"30\"}");
+ pluginData.setEnabled(true);
+ pluginData.setId("37");
+ pluginData.setName("loggingClickHouse");
+ pluginData.setRole("Logging");
+ pluginData.setSort(195);
+ return pluginData;
+ }
+
}