From 86389ae8e7629ab8204d07180271baa898ed5f84 Mon Sep 17 00:00:00 2001 From: Bolek Tekielski Date: Fri, 21 Jul 2017 16:18:33 +0200 Subject: [PATCH 1/3] Added log level setting support. Version bump. --- README.md | 6 +++--- config.yml | 10 ++++++++++ gearman-client/pom.xml | 2 +- gearman-common/pom.xml | 2 +- gearman-embedded-server/pom.xml | 2 +- gearman-engine/pom.xml | 2 +- gearman-example/pom.xml | 2 +- gearman-integration/pom.xml | 2 +- gearman-server/pom.xml | 2 +- .../gearman/server/GearmanDaemon.java | 4 +--- .../config/GearmanServerConfiguration.java | 20 +++++++++++-------- pom.xml | 2 +- 12 files changed, 34 insertions(+), 22 deletions(-) create mode 100644 config.yml diff --git a/README.md b/README.md index cae24f9..a68805d 100644 --- a/README.md +++ b/README.md @@ -24,11 +24,11 @@ Getting Started Quick start: 1. Download the [latest pre-built SNAPSHOT release](https://oss.sonatype.org/content/repositories/snapshots/net/johnewart/gearman/gearman-server/) from the Sonatype snapshots repository -2. Run java -jar gearman-server-VERSION.jar +2. Run `java -jar gearman-server-VERSION.jar` 3. This will default to port 4730 and memory-only persistence, with snapshotting and the web interface listening on port 8080 -If you want to use more advanced features, see the example config.yml -files in [the gearman-server sub-project](https://github.com/johnewart/gearman-java/tree/master/gearman-server) +If you want to use more advanced features, run server with config file `java -jar gearman-server-VERSION.jar -c path_to_config_file`. +For details check example configuration files in [the gearman-server sub-project](https://github.com/johnewart/gearman-java/tree/master/gearman-server) Web Interface diff --git a/config.yml b/config.yml new file mode 100644 index 0000000..59c0af6 --- /dev/null +++ b/config.yml @@ -0,0 +1,10 @@ +port: 4730 +httpPort: 8888 +enableSSL: false +debugging: false +hostName: gearman +persistenceEngine: + engine: memory +exceptionStore: + engine: memory +logLevel: WARN \ No newline at end of file diff --git a/gearman-client/pom.xml b/gearman-client/pom.xml index e6e8fdc..451a402 100644 --- a/gearman-client/pom.xml +++ b/gearman-client/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 jar diff --git a/gearman-common/pom.xml b/gearman-common/pom.xml index 2930648..0297d3a 100644 --- a/gearman-common/pom.xml +++ b/gearman-common/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 diff --git a/gearman-embedded-server/pom.xml b/gearman-embedded-server/pom.xml index 7758079..deda623 100644 --- a/gearman-embedded-server/pom.xml +++ b/gearman-embedded-server/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 diff --git a/gearman-engine/pom.xml b/gearman-engine/pom.xml index d61bab2..4c22743 100644 --- a/gearman-engine/pom.xml +++ b/gearman-engine/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 diff --git a/gearman-example/pom.xml b/gearman-example/pom.xml index 9323f4b..363c47e 100644 --- a/gearman-example/pom.xml +++ b/gearman-example/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 diff --git a/gearman-integration/pom.xml b/gearman-integration/pom.xml index b2a1a60..46fe09e 100644 --- a/gearman-integration/pom.xml +++ b/gearman-integration/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 diff --git a/gearman-server/pom.xml b/gearman-server/pom.xml index 786e30b..bee8690 100644 --- a/gearman-server/pom.xml +++ b/gearman-server/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 gearman-server diff --git a/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java b/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java index 032b75e..f81dd24 100644 --- a/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java +++ b/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java @@ -44,10 +44,8 @@ private static GearmanServerConfiguration loadFromConfigOrGenerateDefaultConfig( serverConfiguration = yaml.loadAs(in, GearmanServerConfiguration.class); - - System.out.println(serverConfiguration.toString()); - LOG.info("Starting Gearman Server with settings from " + configFile + "..."); + LOG.info("Serveer settings: " + serverConfiguration.toString()); } catch (Exception e) { LOG.error("Can't load " + configFile + ": ", e); diff --git a/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java b/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java index dc18cee..dc67d1c 100644 --- a/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java +++ b/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java @@ -44,6 +44,7 @@ public class GearmanServerConfiguration implements ServerConfiguration { private QueueMetrics queueMetrics; private HealthCheckRegistry healthCheckRegistry; private Object configLock = new Object(); + private String logLevel = "ERROR"; public void setPort(int port) { this.port = port; @@ -61,15 +62,18 @@ public void setEnableSSL(boolean enableSSL) { this.enableSSL = enableSSL; } + public void setLogLevel(String logLevel){ + this.logLevel = logLevel; + Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + root.setLevel(Level.toLevel(this.logLevel)); + } + public void setDebugging(boolean debugging) { this.debugging = debugging; Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); - if(debugging) - { + if(debugging) { root.setLevel(Level.DEBUG); - } else { - root.setLevel(Level.ERROR); } } @@ -147,10 +151,10 @@ public JobQueueFactory getJobQueueFactory() { public JobManager getJobManager() { if(jobManager == null) { jobManager = new JobManager(getJobQueueFactory(), - getJobHandleFactory(), - getUniqueIdFactory(), - getExceptionStorageEngine(), - getQueueMetrics()); + getJobHandleFactory(), + getUniqueIdFactory(), + getExceptionStorageEngine(), + getQueueMetrics()); } return jobManager; diff --git a/pom.xml b/pom.xml index 47fe760..1e3f668 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ net.johnewart.gearman gearman-java pom - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT gearman-client gearman-server From c636ab3ed17c00ea302faf11e6006ed0b6703880 Mon Sep 17 00:00:00 2001 From: Bolek Tekielski Date: Fri, 21 Jul 2017 17:25:59 +0200 Subject: [PATCH 2/3] Added command line parsing with JCommander framework. --- .../gearman/server/config/GearmanServerConfiguration.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java b/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java index dc67d1c..9cf6d80 100644 --- a/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java +++ b/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java @@ -43,7 +43,7 @@ public class GearmanServerConfiguration implements ServerConfiguration { private MetricRegistry metricRegistry; private QueueMetrics queueMetrics; private HealthCheckRegistry healthCheckRegistry; - private Object configLock = new Object(); + private final Object configLock = new Object(); private String logLevel = "ERROR"; public void setPort(int port) { @@ -64,8 +64,10 @@ public void setEnableSSL(boolean enableSSL) { public void setLogLevel(String logLevel){ this.logLevel = logLevel; - Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); - root.setLevel(Level.toLevel(this.logLevel)); + if(!debugging) { + Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + root.setLevel(Level.toLevel(this.logLevel)); + } } public void setDebugging(boolean debugging) { From ac4f8972c9600ba34ed09ab37485a1c409f1df97 Mon Sep 17 00:00:00 2001 From: Bolek Tekielski Date: Fri, 21 Jul 2017 17:32:37 +0200 Subject: [PATCH 3/3] Added command line parsing via JCommander framework --- README.md | 1 + config.yml => cfg.yml | 0 gearman-server/pom.xml | 5 +++ .../gearman/server/GearmanDaemon.java | 36 +++++++++++++++---- 4 files changed, 35 insertions(+), 7 deletions(-) rename config.yml => cfg.yml (100%) diff --git a/README.md b/README.md index a68805d..4b5d448 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Quick start: 1. Download the [latest pre-built SNAPSHOT release](https://oss.sonatype.org/content/repositories/snapshots/net/johnewart/gearman/gearman-server/) from the Sonatype snapshots repository 2. Run `java -jar gearman-server-VERSION.jar` 3. This will default to port 4730 and memory-only persistence, with snapshotting and the web interface listening on port 8080 +4. To list avaliable options run `java -jar gearman-server-VERSION.jar --help` If you want to use more advanced features, run server with config file `java -jar gearman-server-VERSION.jar -c path_to_config_file`. For details check example configuration files in [the gearman-server sub-project](https://github.com/johnewart/gearman-java/tree/master/gearman-server) diff --git a/config.yml b/cfg.yml similarity index 100% rename from config.yml rename to cfg.yml diff --git a/gearman-server/pom.xml b/gearman-server/pom.xml index bee8690..2dab099 100644 --- a/gearman-server/pom.xml +++ b/gearman-server/pom.xml @@ -27,6 +27,11 @@ snakeyaml 1.12 + + com.beust + jcommander + 1.72 + joda-time joda-time diff --git a/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java b/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java index f81dd24..81df8a6 100644 --- a/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java +++ b/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java @@ -1,11 +1,14 @@ package net.johnewart.gearman.server; +import com.beust.jcommander.JCommander; +import com.beust.jcommander.ParameterException; import net.johnewart.gearman.server.config.DefaultServerConfiguration; import net.johnewart.gearman.server.config.GearmanServerConfiguration; import net.johnewart.gearman.server.net.ServerListener; import net.johnewart.gearman.server.web.WebListener; import org.slf4j.LoggerFactory; import org.yaml.snakeyaml.Yaml; +import com.beust.jcommander.Parameter; import java.io.InputStream; import java.nio.file.Files; @@ -14,18 +17,37 @@ public class GearmanDaemon { private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(GearmanDaemon.class); + private static class CommandLineOptions { + @Parameter(names = {"--debug", "-d"}, description = "Turn on debug mode, resulting in a more verbose log output") + boolean debug = false; + + @Parameter(names = {"--config", "-c"}, description = "Specify file to load configuration") + String configFile; + + @Parameter(names = {"--help", "-h"}, description = "Prints usage", help = true) + boolean help; + } + public static void main(String... args) { - final String configFile; + CommandLineOptions options = new CommandLineOptions(); + JCommander cmd = new JCommander(options); + cmd.setProgramName("Gearman Server"); - if (args.length != 1) { - configFile = "config.yml"; - } else { - configFile = args[0]; - } + try { + cmd.parse(args); + if(options.help) { + cmd.usage(); + System.exit(0); + } + } catch (ParameterException e) { + cmd.usage(); + System.exit(0); + } - final GearmanServerConfiguration serverConfiguration = loadFromConfigOrGenerateDefaultConfig(configFile); + final GearmanServerConfiguration serverConfiguration = loadFromConfigOrGenerateDefaultConfig(options.configFile); + serverConfiguration.setDebugging(options.debug); final ServerListener serverListener = new ServerListener(serverConfiguration); final WebListener webListener = new WebListener(serverConfiguration);