From 383237229a71e738795f6ad58a3ad51a88ae9be5 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Wed, 19 May 2021 12:30:30 +0300 Subject: [PATCH] Fixed - RedissonNode unable to start due to ClassNotFoundException #3621 --- .../main/java/org/redisson/RedissonNode.java | 17 ++- .../redisson/config/RedissonNodeConfig.java | 89 +------------ .../config/RedissonNodeFileConfig.java | 125 ++++++++++++++++++ 3 files changed, 141 insertions(+), 90 deletions(-) create mode 100644 redisson/src/main/java/org/redisson/config/RedissonNodeFileConfig.java diff --git a/redisson/src/main/java/org/redisson/RedissonNode.java b/redisson/src/main/java/org/redisson/RedissonNode.java index 8f2024ff4..bc53a8833 100644 --- a/redisson/src/main/java/org/redisson/RedissonNode.java +++ b/redisson/src/main/java/org/redisson/RedissonNode.java @@ -28,6 +28,7 @@ import org.redisson.api.RedissonClient; import org.redisson.api.WorkerOptions; import org.redisson.client.RedisConnection; import org.redisson.config.RedissonNodeConfig; +import org.redisson.config.RedissonNodeFileConfig; import org.redisson.connection.ConnectionManager; import org.redisson.connection.MasterSlaveEntry; import org.slf4j.Logger; @@ -86,13 +87,13 @@ public final class RedissonNode { } String configPath = args[0]; - RedissonNodeConfig config = null; + RedissonNodeFileConfig config = null; try { - config = RedissonNodeConfig.fromJSON(new File(configPath)); + config = RedissonNodeFileConfig.fromJSON(new File(configPath)); } catch (IOException e) { // trying next format try { - config = RedissonNodeConfig.fromYAML(new File(configPath)); + config = RedissonNodeFileConfig.fromYAML(new File(configPath)); } catch (IOException e1) { log.error("Can't parse json config " + configPath, e); throw new IllegalArgumentException("Can't parse yaml config " + configPath, e1); @@ -198,6 +199,16 @@ public final class RedissonNode { return create(config, null); } + /** + * Create Redisson node instance with provided config + * + * @param config of RedissonNode + * @return RedissonNode instance + */ + public static RedissonNode create(RedissonNodeFileConfig config) { + return create(new RedissonNodeConfig(config), null); + } + /** * Create Redisson node instance with provided config and Redisson instance * diff --git a/redisson/src/main/java/org/redisson/config/RedissonNodeConfig.java b/redisson/src/main/java/org/redisson/config/RedissonNodeConfig.java index 8d5e6b8e8..d8374ab05 100644 --- a/redisson/src/main/java/org/redisson/config/RedissonNodeConfig.java +++ b/redisson/src/main/java/org/redisson/config/RedissonNodeConfig.java @@ -15,12 +15,6 @@ */ package org.redisson.config; -import java.io.File; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -import org.redisson.api.RedissonNodeInitializer; import org.springframework.beans.factory.BeanFactory; /** @@ -29,13 +23,10 @@ import org.springframework.beans.factory.BeanFactory; * @author Nikita Koksharov * */ -public class RedissonNodeConfig extends Config { +public class RedissonNodeConfig extends RedissonNodeFileConfig { - private int mapReduceWorkers = 0; - private RedissonNodeInitializer redissonNodeInitializer; private BeanFactory beanFactory; - private Map executorServiceWorkers = new HashMap(); - + public RedissonNodeConfig() { super(); } @@ -46,61 +37,9 @@ public class RedissonNodeConfig extends Config { public RedissonNodeConfig(RedissonNodeConfig oldConf) { super(oldConf); - this.executorServiceWorkers = new HashMap(oldConf.executorServiceWorkers); - this.redissonNodeInitializer = oldConf.redissonNodeInitializer; - this.mapReduceWorkers = oldConf.mapReduceWorkers; this.beanFactory = oldConf.beanFactory; } - /** - * MapReduce workers amount. - *

- * 0 = current_processors_amount - *

- * -1 = disable MapReduce workers - * - *

- * Default is 0 - * - * @param mapReduceWorkers workers for MapReduce - * @return config - */ - public RedissonNodeConfig setMapReduceWorkers(int mapReduceWorkers) { - this.mapReduceWorkers = mapReduceWorkers; - return this; - } - public int getMapReduceWorkers() { - return mapReduceWorkers; - } - - /** - * Executor service workers amount per service name - * - * @param workers mapping - * @return config - */ - public RedissonNodeConfig setExecutorServiceWorkers(Map workers) { - this.executorServiceWorkers = workers; - return this; - } - public Map getExecutorServiceWorkers() { - return executorServiceWorkers; - } - - /** - * Redisson node initializer - * - * @param redissonNodeInitializer object - * @return config - */ - public RedissonNodeConfig setRedissonNodeInitializer(RedissonNodeInitializer redissonNodeInitializer) { - this.redissonNodeInitializer = redissonNodeInitializer; - return this; - } - public RedissonNodeInitializer getRedissonNodeInitializer() { - return redissonNodeInitializer; - } - public BeanFactory getBeanFactory() { return beanFactory; } @@ -115,28 +54,4 @@ public class RedissonNodeConfig extends Config { this.beanFactory = beanFactory; } - /** - * Read config object stored in JSON format from File - * - * @param file object - * @return config - * @throws IOException error - */ - public static RedissonNodeConfig fromJSON(File file) throws IOException { - ConfigSupport support = new ConfigSupport(); - return support.fromJSON(file, RedissonNodeConfig.class); - } - - /** - * Read config object stored in YAML format from File - * - * @param file object - * @return config - * @throws IOException error - */ - public static RedissonNodeConfig fromYAML(File file) throws IOException { - ConfigSupport support = new ConfigSupport(); - return support.fromYAML(file, RedissonNodeConfig.class); - } - } diff --git a/redisson/src/main/java/org/redisson/config/RedissonNodeFileConfig.java b/redisson/src/main/java/org/redisson/config/RedissonNodeFileConfig.java new file mode 100644 index 000000000..75f465a43 --- /dev/null +++ b/redisson/src/main/java/org/redisson/config/RedissonNodeFileConfig.java @@ -0,0 +1,125 @@ +/** + * Copyright (c) 2013-2021 Nikita Koksharov + * + * Licensed 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.redisson.config; + +import org.redisson.api.RedissonNodeInitializer; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +/** + * Redisson Node file configuration + * + * @author Nikita Koksharov + * + */ +public class RedissonNodeFileConfig extends Config { + + private int mapReduceWorkers = 0; + private RedissonNodeInitializer redissonNodeInitializer; + private Map executorServiceWorkers = new HashMap<>(); + + public RedissonNodeFileConfig() { + super(); + } + + public RedissonNodeFileConfig(Config oldConf) { + super(oldConf); + } + + public RedissonNodeFileConfig(RedissonNodeFileConfig oldConf) { + super(oldConf); + this.executorServiceWorkers = new HashMap<>(oldConf.executorServiceWorkers); + this.redissonNodeInitializer = oldConf.redissonNodeInitializer; + this.mapReduceWorkers = oldConf.mapReduceWorkers; + } + + /** + * MapReduce workers amount. + *

+ * 0 = current_processors_amount + *

+ * -1 = disable MapReduce workers + * + *

+ * Default is 0 + * + * @param mapReduceWorkers workers for MapReduce + * @return config + */ + public RedissonNodeFileConfig setMapReduceWorkers(int mapReduceWorkers) { + this.mapReduceWorkers = mapReduceWorkers; + return this; + } + public int getMapReduceWorkers() { + return mapReduceWorkers; + } + + /** + * Executor service workers amount per service name + * + * @param workers mapping + * @return config + */ + public RedissonNodeFileConfig setExecutorServiceWorkers(Map workers) { + this.executorServiceWorkers = workers; + return this; + } + public Map getExecutorServiceWorkers() { + return executorServiceWorkers; + } + + /** + * Redisson node initializer + * + * @param redissonNodeInitializer object + * @return config + */ + public RedissonNodeFileConfig setRedissonNodeInitializer(RedissonNodeInitializer redissonNodeInitializer) { + this.redissonNodeInitializer = redissonNodeInitializer; + return this; + } + public RedissonNodeInitializer getRedissonNodeInitializer() { + return redissonNodeInitializer; + } + + /** + * Read config object stored in JSON format from File + * + * @param file object + * @return config + * @throws IOException error + */ + public static RedissonNodeFileConfig fromJSON(File file) throws IOException { + ConfigSupport support = new ConfigSupport(); + return support.fromJSON(file, RedissonNodeFileConfig.class); + } + + /** + * Read config object stored in YAML format from File + * + * @param file object + * @return config + * @throws IOException error + */ + public static RedissonNodeFileConfig fromYAML(File file) throws IOException { + ConfigSupport support = new ConfigSupport(); + return support.fromYAML(file, RedissonNodeFileConfig.class); + } + +} -- GitLab