github-advanced-security[bot] commented on code in PR #16287:
URL:
https://github.com/apache/dolphinscheduler/pull/16287#discussion_r1671590455
##########
dolphinscheduler-registry/dolphinscheduler-registry-plugins/dolphinscheduler-registry-jdbc/src/main/java/org/apache/dolphinscheduler/plugin/registry/jdbc/JdbcRegistryProperties.java:
##########
@@ -17,31 +17,73 @@
package org.apache.dolphinscheduler.plugin.registry.jdbc;
+import org.apache.dolphinscheduler.common.utils.NetUtils;
+
import java.time.Duration;
import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
+import org.springframework.validation.Errors;
+import org.springframework.validation.Validator;
+import org.springframework.validation.annotation.Validated;
import com.zaxxer.hikari.HikariConfig;
@Data
+@Slf4j
+@Validated
@Configuration
@ConditionalOnProperty(prefix = "registry", name = "type", havingValue =
"jdbc")
@ConfigurationProperties(prefix = "registry")
-public class JdbcRegistryProperties {
-
- /**
- * Used to schedule refresh the ephemeral data/ lock.
- */
- private Duration termRefreshInterval = Duration.ofSeconds(2);
- /**
- * Used to calculate the expire time,
- * e.g. if you set 2, and latest two refresh error, then the ephemeral
data/lock will be expire.
- */
- private int termExpireTimes = 3;
+public class JdbcRegistryProperties implements Validator {
+
+ private static final Duration MIN_HEARTBEAT_REFRESH_INTERVAL =
Duration.ofSeconds(1);
+
+ @Value("${server.port}")
+ private int serverPort;
+
+ private String jdbcRegistryClientName;
+
+ private Duration heartbeatRefreshInterval = Duration.ofSeconds(3);
+ private Duration sessionTimeout = Duration.ofSeconds(60);
private HikariConfig hikariConfig;
+ @Override
+ public boolean supports(Class<?> clazz) {
+ return JdbcRegistryProperties.class.isAssignableFrom(clazz);
+ }
+
+ @Override
+ public void validate(Object target, Errors errors) {
+ JdbcRegistryProperties jdbcRegistryProperties =
(JdbcRegistryProperties) target;
+ if
(jdbcRegistryProperties.getHeartbeatRefreshInterval().compareTo(MIN_HEARTBEAT_REFRESH_INTERVAL)
< 0) {
+ errors.rejectValue("heartbeatRefreshInterval",
"heartbeatRefreshInterval",
+ "heartbeatRefreshInterval must be greater than 1s");
+ }
+
+ if (jdbcRegistryProperties.getSessionTimeout().toMillis() < 3
+ *
jdbcRegistryProperties.getHeartbeatRefreshInterval().toMillis()) {
+ errors.rejectValue("sessionTimeout", "sessionTimeout",
+ "sessionTimeout must be greater than 3 *
heartbeatRefreshInterval");
+ }
+ jdbcRegistryClientName = NetUtils.getHost() + ":" + serverPort;
+ print();
+
+ }
+
+ private void print() {
+ String config =
+
"\n****************************JdbcRegistryProperties**************************************"
+
+ "\n jdbcRegistryClientName -> " +
jdbcRegistryClientName +
+ "\n heartbeatRefreshInterval -> " +
heartbeatRefreshInterval +
+ "\n sessionTimeout -> " + sessionTimeout +
+ "\n hikariConfig -> " + hikariConfig +
+
"\n****************************JdbcRegistryProperties**************************************";
+ log.info(config);
Review Comment:
## Log Injection
This log entry depends on a [user-provided value](1).
[Show more
details](https://github.com/apache/dolphinscheduler/security/code-scanning/4238)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]