Repository: asterixdb Updated Branches: refs/heads/master d753479fe -> 1a936956d
[NO ISSUE] Trace AsterixHyracksIntegrationUtil to console; fix NC effective map precedence Change-Id: Ied091c2ab17f631df84eab40143180b3a9be09ed Reviewed-on: https://asterix-gerrit.ics.uci.edu/2363 Tested-by: Jenkins <[email protected]> Reviewed-by: Murtadha Hubail <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/1a936956 Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/1a936956 Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/1a936956 Branch: refs/heads/master Commit: 1a936956d08177675b6928ef8bca33042a1b186c Parents: d753479 Author: Michael Blow <[email protected]> Authored: Mon Feb 5 13:40:30 2018 -0500 Committer: Michael Blow <[email protected]> Committed: Mon Feb 5 13:56:55 2018 -0800 ---------------------------------------------------------------------- .../common/AsterixHyracksIntegrationUtil.java | 9 ++++--- .../control/common/config/ConfigManager.java | 15 +++++------ .../apache/hyracks/test/support/TestUtils.java | 28 ++++++++++++++++++++ 3 files changed, 41 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/asterixdb/blob/1a936956/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java index ae82ea7..ee96d00 100644 --- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java +++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java @@ -55,6 +55,7 @@ import org.apache.hyracks.control.common.controllers.CCConfig; import org.apache.hyracks.control.common.controllers.ControllerConfig; import org.apache.hyracks.control.common.controllers.NCConfig; import org.apache.hyracks.control.nc.NodeControllerService; +import org.apache.hyracks.test.support.TestUtils; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -97,12 +98,13 @@ public class AsterixHyracksIntegrationUtil { * @param args unused */ public static void main(String[] args) throws Exception { + TestUtils.redirectLoggingToConsole(); AsterixHyracksIntegrationUtil integrationUtil = new AsterixHyracksIntegrationUtil(); try { integrationUtil.run(Boolean.getBoolean("cleanup.start"), Boolean.getBoolean("cleanup.shutdown"), System.getProperty("external.lib", ""), System.getProperty("conf.path", DEFAULT_CONF_FILE)); } catch (Exception e) { - LOGGER.log(Level.WARN, "Unexpected exception", e); + LOGGER.fatal("Unexpected exception", e); System.exit(1); } } @@ -125,7 +127,7 @@ public class AsterixHyracksIntegrationUtil { } final List<NodeControllerService> nodeControllers = new ArrayList<>(); for (String nodeId : nodeNames) { - // mark this NC as virtual in the CC's config manager, so he doesn't try to contact NCService... + // mark this NC as virtual, so that the CC doesn't try to start via NCService... configManager.set(nodeId, NCConfig.Option.NCSERVICE_PORT, NCConfig.NCSERVICE_PORT_DISABLED); final INCApplication ncApplication = createNCApplication(); ConfigManager ncConfigManager; @@ -363,7 +365,8 @@ public class AsterixHyracksIntegrationUtil { private static Path getProjectPath() { final String targetDir = "asterix-app"; final BiPredicate<Path, BasicFileAttributes> matcher = - (path, attributes) -> path.getFileName().toString().equals(targetDir) && path.toFile().isDirectory(); + (path, attributes) -> path.getFileName().toString().equals(targetDir) && path.toFile().isDirectory() + && path.toFile().list((d, n) -> n.equals("pom.xml")).length == 1; final Path currentPath = Paths.get(System.getProperty("user.dir")); try (Stream<Path> pathStream = Files.find(currentPath, 10, matcher)) { return pathStream.findFirst().orElse(currentPath); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/1a936956/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigManager.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigManager.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigManager.java index fd8c116..baff800 100644 --- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigManager.java +++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigManager.java @@ -454,12 +454,10 @@ public class ConfigManager implements IConfigManager, Serializable { private Map<IOption, Object> getNodeEffectiveMap(String nodeId) { ensureNode(nodeId); - CompositeMap<IOption, Object> nodeEffectiveMap = new CompositeMap<>(); - nodeEffectiveMap.setMutator(new NoOpMapMutator()); - nodeEffectiveMap.addComposited(nodeSpecificDefinedMap.get(nodeId)); - nodeEffectiveMap.addComposited(nodeSpecificDefaultMap.get(nodeId)); - nodeEffectiveMap.addComposited(definedMap); - return nodeEffectiveMap; + return new CompositeMap<>( + Stream.of(nodeSpecificDefinedMap.get(nodeId), nodeSpecificDefaultMap.get(nodeId), definedMap) + .toArray(Map[]::new), + new NoOpMapMutator()); } public Ini toIni(boolean includeDefaults) { @@ -570,8 +568,9 @@ public class ConfigManager implements IConfigManager, Serializable { } @Override - public void resolveCollision(CompositeMap<IOption, Object> compositeMap, Map<IOption, Object> map, - Map<IOption, Object> map1, Collection<IOption> collection) { + public void resolveCollision(CompositeMap<IOption, Object> composite, Map<IOption, Object> existing, + Map<IOption, Object> added, Collection<IOption> intersect) { + LOGGER.debug("resolveCollision: {}, {}, {}, {}", composite, existing, added, intersect); // no-op } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/1a936956/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestUtils.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestUtils.java b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestUtils.java index 1814e85..d7578af 100644 --- a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestUtils.java +++ b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestUtils.java @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.Executors; import org.apache.hyracks.api.application.INCServiceContext; @@ -41,6 +42,10 @@ import org.apache.hyracks.api.io.IODeviceHandle; import org.apache.hyracks.api.job.JobId; import org.apache.hyracks.control.nc.io.DefaultDeviceResolver; import org.apache.hyracks.control.nc.io.IOManager; +import org.apache.logging.log4j.core.Appender; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.ConsoleAppender; +import org.apache.logging.log4j.core.config.Configuration; public class TestUtils { public static IHyracksTaskContext create(int frameSize) { @@ -140,4 +145,27 @@ public class TestUtils { } return ncNameToNcInfos; } + + public static void redirectLoggingToConsole() { + final LoggerContext context = LoggerContext.getContext(false); + final Configuration config = context.getConfiguration(); + + Appender appender = config.getAppender("Console"); + if (appender == null) { + Optional<Appender> result = + config.getAppenders().values().stream().filter(a -> a instanceof ConsoleAppender).findFirst(); + if (!result.isPresent()) { + System.err.println( + "ERROR: cannot find appender named 'Console'; unable to find alternate ConsoleAppender!"); + } else { + appender = result.get(); + System.err.println("ERROR: cannot find appender named 'Console'; using alternate ConsoleAppender named " + + appender.getName()); + } + } + if (appender != null) { + config.getRootLogger().addAppender(appender, null, null); + context.updateLoggers(); + } + } }
