Repository: incubator-eagle Updated Branches: refs/heads/master 6e7236501 -> 2306c43a5
[EAGLE-543] Fix eagle server default config, fix eagle server deve dependency # JIRA https://issues.apache.org/jira/browse/EAGLE-543 # Changes * Add loaded application providers brief info log. * Fix ApplicationProviderClass bug * Remove duplicated dependency * Add eagle server request log config Author: Hao Chen <h...@apache.org> Closes #436 from haoch/FixServerLoggingConfig. Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/2306c43a Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/2306c43a Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/2306c43a Branch: refs/heads/master Commit: 2306c43a5d2e9e73feb3d0514f279d193d7cfebd Parents: 6e72365 Author: Hao Chen <h...@apache.org> Authored: Sun Sep 18 14:59:16 2016 +0800 Committer: Hao Chen <h...@apache.org> Committed: Sun Sep 18 14:59:16 2016 +0800 ---------------------------------------------------------------------- .../impl/ApplicationProviderSPILoader.java | 10 ++- .../impl/ApplicationProviderServiceImpl.java | 2 +- .../app/spi/ApplicationXMLDescriptorLoader.java | 2 +- .../eagle-metadata/eagle-metadata-jdbc/pom.xml | 4 - eagle-server-assembly/src/main/bin/eagle-env.sh | 2 + eagle-server-assembly/src/main/conf/server.yml | 15 +++- eagle-server/pom.xml | 3 + .../apache/eagle/server/ServerApplication.java | 4 +- .../eagle/server/module/GuiceBundleLoader.java | 84 +++++++++++++++++++ .../eagle/server/module/GuideBundleLoader.java | 85 -------------------- .../eagle/server/GuiceBundleLoaderTest.java | 28 +++++++ .../eagle/server/GuideBundleLoaderTest.java | 28 ------- 12 files changed, 142 insertions(+), 125 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2306c43a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderSPILoader.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderSPILoader.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderSPILoader.java index 1e0421a..bd96e28 100644 --- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderSPILoader.java +++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderSPILoader.java @@ -16,11 +16,11 @@ */ package org.apache.eagle.app.service.impl; +import com.typesafe.config.Config; import org.apache.eagle.app.config.ApplicationProviderConfig; import org.apache.eagle.app.service.ApplicationProviderLoader; import org.apache.eagle.app.spi.ApplicationProvider; import org.apache.eagle.app.utils.DynamicJarPathFinder; -import com.typesafe.config.Config; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -82,9 +82,15 @@ public class ApplicationProviderSPILoader extends ApplicationProviderLoader { providerConfig.setJarPath(jarFileSupplier.apply(applicationProvider)); applicationProvider.prepare(providerConfig, getConfig()); registerProvider(applicationProvider); + LOG.warn("Loaded {}:{} ({}) from {}", + applicationProvider.getApplicationDesc().getType(), + applicationProvider.getApplicationDesc().getVersion(), + applicationProvider.getApplicationDesc().getName(), + providerConfig.getJarPath() + ); } } catch (Throwable ex) { - LOG.warn("Failed to register application provider", ex); + LOG.error("Failed to register application provider", ex); throw new IllegalStateException(ex); } } http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2306c43a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderServiceImpl.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderServiceImpl.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderServiceImpl.java index d85b6cc..f93a4d4 100644 --- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderServiceImpl.java +++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderServiceImpl.java @@ -117,7 +117,7 @@ public class ApplicationProviderServiceImpl implements ApplicationProviderServic LOG.warn("Unable to load dependency {} -> {}", applicationDesc.getType(), dependency, ex); } else { LOG.error("Failed to load dependency {} -> {}", applicationDesc.getType(), dependency, ex); - throw new IllegalStateException("Failed to load application providers due to dependency missing", ex); + throw new IllegalStateException("Failed to load application providers due to dependency missing " + applicationDesc.getType() + " -> " + dependency, ex); } } } http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2306c43a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/ApplicationXMLDescriptorLoader.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/ApplicationXMLDescriptorLoader.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/ApplicationXMLDescriptorLoader.java index bdc8a3a..2e8dbc3 100644 --- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/ApplicationXMLDescriptorLoader.java +++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/ApplicationXMLDescriptorLoader.java @@ -48,7 +48,7 @@ class ApplicationXMLDescriptorLoader implements ApplicationDescLoader { public ApplicationDesc getApplicationDesc() { String descriptorPath = generateXMLDescriptorPath(); ApplicationDesc applicationDesc = new ApplicationDesc(); - applicationDesc.setProviderClass(this.getClass()); + applicationDesc.setProviderClass(this.providerClass); ApplicationProviderDescConfig descWrapperConfig = ApplicationProviderDescConfig.loadFromXML(this.getClass(), descriptorPath); applicationDesc.setType(descWrapperConfig.getType()); applicationDesc.setVersion(descWrapperConfig.getVersion()); http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2306c43a/eagle-core/eagle-metadata/eagle-metadata-jdbc/pom.xml ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-metadata/eagle-metadata-jdbc/pom.xml b/eagle-core/eagle-metadata/eagle-metadata-jdbc/pom.xml index ab1e0bf..940d697 100644 --- a/eagle-core/eagle-metadata/eagle-metadata-jdbc/pom.xml +++ b/eagle-core/eagle-metadata/eagle-metadata-jdbc/pom.xml @@ -39,10 +39,6 @@ <artifactId>commons-dbcp</artifactId> </dependency> <dependency> - <groupId>com.h2database</groupId> - <artifactId>h2</artifactId> - </dependency> - <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2306c43a/eagle-server-assembly/src/main/bin/eagle-env.sh ---------------------------------------------------------------------- diff --git a/eagle-server-assembly/src/main/bin/eagle-env.sh b/eagle-server-assembly/src/main/bin/eagle-env.sh index 7c900ad..cbe307b 100644 --- a/eagle-server-assembly/src/main/bin/eagle-env.sh +++ b/eagle-server-assembly/src/main/bin/eagle-env.sh @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +export EAGLE_SERVER_JMX_PORT=9999 + # EAGLE Environment Variables export EAGLE_HOME=$(dirname $0)/.. export EAGLE_CLASSPATH=$EAGLE_HOME/conf http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2306c43a/eagle-server-assembly/src/main/conf/server.yml ---------------------------------------------------------------------- diff --git a/eagle-server-assembly/src/main/conf/server.yml b/eagle-server-assembly/src/main/conf/server.yml index 8bea2c2..5ea8b31 100644 --- a/eagle-server-assembly/src/main/conf/server.yml +++ b/eagle-server-assembly/src/main/conf/server.yml @@ -13,6 +13,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Dropwizard Configuration: +# http://www.dropwizard.io/0.7.1/docs/manual/configuration.html + server: applicationConnectors: - type: http @@ -20,6 +23,15 @@ server: adminConnectors: - type: http port: 9091 + requestLog: + appenders: + - type: file + currentLogFilename: log/eagle-server-access.log + threshold: ALL + archive: true + archivedLogFilenamePattern: log/eagle-server-access-%d.log + archivedFileCount: 5 + timeZone: UTC logging: level: INFO @@ -30,5 +42,4 @@ logging: archive: true archivedLogFilenamePattern: log/eagle-server-%d.log archivedFileCount: 5 - timeZone: UTC - logFormat: # TODO \ No newline at end of file + timeZone: UTC \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2306c43a/eagle-server/pom.xml ---------------------------------------------------------------------- diff --git a/eagle-server/pom.xml b/eagle-server/pom.xml index 7881b4c..bae8ea2 100644 --- a/eagle-server/pom.xml +++ b/eagle-server/pom.xml @@ -152,6 +152,9 @@ <profiles> <profile> <id>dev</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> <!-- ========================================================================================================= TODO: Decouple following specific application related dependencies into independent module: eagle-develop http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2306c43a/eagle-server/src/main/java/org/apache/eagle/server/ServerApplication.java ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/java/org/apache/eagle/server/ServerApplication.java b/eagle-server/src/main/java/org/apache/eagle/server/ServerApplication.java index e495e77..c22591f 100644 --- a/eagle-server/src/main/java/org/apache/eagle/server/ServerApplication.java +++ b/eagle-server/src/main/java/org/apache/eagle/server/ServerApplication.java @@ -20,7 +20,7 @@ import org.apache.eagle.alert.coordinator.CoordinatorListener; import org.apache.eagle.alert.resource.SimpleCORSFiler; import org.apache.eagle.log.base.taggedlog.EntityJsonModule; import org.apache.eagle.log.base.taggedlog.TaggedLogAPIEntity; -import org.apache.eagle.server.module.GuideBundleLoader; +import org.apache.eagle.server.module.GuiceBundleLoader; import com.sun.jersey.api.core.PackagesResourceConfig; import io.dropwizard.Application; @@ -36,7 +36,7 @@ import javax.servlet.DispatcherType; class ServerApplication extends Application<ServerConfig> { @Override public void initialize(Bootstrap<ServerConfig> bootstrap) { - bootstrap.addBundle(GuideBundleLoader.load()); + bootstrap.addBundle(GuiceBundleLoader.load()); bootstrap.addBundle(new AssetsBundle("/assets", "/", "index.html", "/")); } http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2306c43a/eagle-server/src/main/java/org/apache/eagle/server/module/GuiceBundleLoader.java ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/java/org/apache/eagle/server/module/GuiceBundleLoader.java b/eagle-server/src/main/java/org/apache/eagle/server/module/GuiceBundleLoader.java new file mode 100644 index 0000000..a8359f7 --- /dev/null +++ b/eagle-server/src/main/java/org/apache/eagle/server/module/GuiceBundleLoader.java @@ -0,0 +1,84 @@ +/* + * 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 + * <p/> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p/> + * 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.eagle.server.module; + +import com.google.inject.Module; +import com.hubspot.dropwizard.guice.GuiceBundle; +import com.typesafe.config.Config; +import com.typesafe.config.ConfigFactory; +import org.apache.eagle.app.module.ApplicationExtensionLoader; +import org.apache.eagle.app.service.ApplicationProviderService; +import org.apache.eagle.app.service.impl.ApplicationProviderServiceImpl; +import org.apache.eagle.common.module.GlobalScope; +import org.apache.eagle.common.module.ModuleRegistry; +import org.apache.eagle.metadata.persistence.MetadataStore; +import org.apache.eagle.metadata.persistence.MetadataStoreModuleFactory; +import org.apache.eagle.server.ServerConfig; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +public class GuiceBundleLoader { + private static final Logger LOGGER = LoggerFactory.getLogger(GuiceBundleLoader.class); + + public static GuiceBundle<ServerConfig> load(List<Module> modules) { + /* + We use tow injectors, one is Dropwizard injector, the other injector is to instantiate ApplicationProvider and + load sub modules from applications + so we need make Config and ApplicationProviderServiceImpl to have a global instance across multiple injectors + */ + + // Eagle server module + Config config = ConfigFactory.load(); + ApplicationProviderService appProviderSvc = new ApplicationProviderServiceImpl(config); + ServerModule serveBaseModule = new ServerModule(appProviderSvc); + + // load application specific modules + ModuleRegistry registry = ApplicationExtensionLoader.load(serveBaseModule); + + // add application specific modules + MetadataStore metadataStoreModule = MetadataStoreModuleFactory.getModule(); + List<Module> metadataExtensions = metadataStoreModule.getModules(registry); + int extensionNum = 0; + GuiceBundle.Builder<ServerConfig> builder = GuiceBundle.newBuilder(); + if (metadataExtensions != null) { + extensionNum = metadataExtensions.size(); + metadataExtensions.forEach(builder::addModule); + } + LOGGER.warn("Loaded {} modules (scope: metadataStore)", extensionNum); + + List<Module> globalExtensions = registry.getModules(GlobalScope.class); + extensionNum = 0; + if (globalExtensions != null) { + extensionNum = globalExtensions.size(); + globalExtensions.forEach(builder::addModule); + } + LOGGER.warn("Loaded {} modules (scope: global)", extensionNum); + + if (modules != null) { + modules.forEach(builder::addModule); + } + return builder.addModule(serveBaseModule) + .setConfigClass(ServerConfig.class) + .build(); + } + + public static GuiceBundle<ServerConfig> load() { + return load(null); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2306c43a/eagle-server/src/main/java/org/apache/eagle/server/module/GuideBundleLoader.java ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/java/org/apache/eagle/server/module/GuideBundleLoader.java b/eagle-server/src/main/java/org/apache/eagle/server/module/GuideBundleLoader.java deleted file mode 100644 index 51f23b0..0000000 --- a/eagle-server/src/main/java/org/apache/eagle/server/module/GuideBundleLoader.java +++ /dev/null @@ -1,85 +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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.server.module; - -import org.apache.eagle.app.module.ApplicationExtensionLoader; -import org.apache.eagle.app.service.ApplicationProviderService; -import org.apache.eagle.app.service.impl.ApplicationProviderServiceImpl; -import org.apache.eagle.common.module.GlobalScope; -import org.apache.eagle.common.module.ModuleRegistry; -import org.apache.eagle.metadata.persistence.MetadataStore; -import org.apache.eagle.metadata.persistence.MetadataStoreModuleFactory; -import org.apache.eagle.server.ServerConfig; - -import com.google.inject.Module; -import com.hubspot.dropwizard.guice.GuiceBundle; -import com.typesafe.config.Config; -import com.typesafe.config.ConfigFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; - -public class GuideBundleLoader { - private static final Logger LOGGER = LoggerFactory.getLogger(GuideBundleLoader.class); - - public static GuiceBundle<ServerConfig> load(List<Module> modules) { - /* - We use tow injectors, one is Dropwizard injector, the other injector is to instantiate ApplicationProvider and - load sub modules from applications - so we need make Config and ApplicationProviderServiceImpl to have a global instance across multiple injectors - */ - - // Eagle server module - Config config = ConfigFactory.load(); - ApplicationProviderService appProviderSvc = new ApplicationProviderServiceImpl(config); - ServerModule serveBaseModule = new ServerModule(appProviderSvc); - - // load application specific modules - ModuleRegistry registry = ApplicationExtensionLoader.load(serveBaseModule); - - // add application specific modules - MetadataStore metadataStoreModule = MetadataStoreModuleFactory.getModule(); - List<Module> metadataExtensions = metadataStoreModule.getModules(registry); - int extensionNum = 0; - GuiceBundle.Builder<ServerConfig> builder = GuiceBundle.newBuilder(); - if (metadataExtensions != null) { - extensionNum = metadataExtensions.size(); - metadataExtensions.forEach(builder::addModule); - } - LOGGER.warn("Loaded {} modules (scope: metadataStore)", extensionNum); - - List<Module> globalExtensions = registry.getModules(GlobalScope.class); - extensionNum = 0; - if (globalExtensions != null) { - extensionNum = globalExtensions.size(); - globalExtensions.forEach(builder::addModule); - } - LOGGER.warn("Loaded {} modules (scope: global)", extensionNum); - - if (modules != null) { - modules.forEach(builder::addModule); - } - return builder.addModule(serveBaseModule) - .setConfigClass(ServerConfig.class) - .build(); - } - - public static GuiceBundle<ServerConfig> load() { - return load(null); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2306c43a/eagle-server/src/test/java/org/apache/eagle/server/GuiceBundleLoaderTest.java ---------------------------------------------------------------------- diff --git a/eagle-server/src/test/java/org/apache/eagle/server/GuiceBundleLoaderTest.java b/eagle-server/src/test/java/org/apache/eagle/server/GuiceBundleLoaderTest.java new file mode 100644 index 0000000..a5c4933 --- /dev/null +++ b/eagle-server/src/test/java/org/apache/eagle/server/GuiceBundleLoaderTest.java @@ -0,0 +1,28 @@ +/* + * 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 + * <p/> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p/> + * 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.eagle.server; + +import com.hubspot.dropwizard.guice.GuiceBundle; +import org.apache.eagle.server.module.GuiceBundleLoader; +import org.junit.Test; + +public class GuiceBundleLoaderTest { + @Test + public void testLoad() { + GuiceBundle<ServerConfig> bundle = GuiceBundleLoader.load(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2306c43a/eagle-server/src/test/java/org/apache/eagle/server/GuideBundleLoaderTest.java ---------------------------------------------------------------------- diff --git a/eagle-server/src/test/java/org/apache/eagle/server/GuideBundleLoaderTest.java b/eagle-server/src/test/java/org/apache/eagle/server/GuideBundleLoaderTest.java deleted file mode 100644 index b9b6fcf..0000000 --- a/eagle-server/src/test/java/org/apache/eagle/server/GuideBundleLoaderTest.java +++ /dev/null @@ -1,28 +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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.server; - -import com.hubspot.dropwizard.guice.GuiceBundle; -import org.apache.eagle.server.module.GuideBundleLoader; -import org.junit.Test; - -public class GuideBundleLoaderTest { - @Test - public void testLoad() { - GuiceBundle<ServerConfig> bundle = GuideBundleLoader.load(); - } -}