Search in sources :

Example 91 with Supplier

use of org.apache.logging.log4j.util.Supplier in project elasticsearch by elastic.

the class MetaDataMappingService method refreshIndexMapping.

private boolean refreshIndexMapping(IndexService indexService, IndexMetaData.Builder builder) {
    boolean dirty = false;
    String index = indexService.index().getName();
    try {
        List<String> updatedTypes = new ArrayList<>();
        for (DocumentMapper mapper : indexService.mapperService().docMappers(true)) {
            final String type = mapper.type();
            if (!mapper.mappingSource().equals(builder.mapping(type).source())) {
                updatedTypes.add(type);
            }
        }
        // if a single type is not up-to-date, re-send everything
        if (updatedTypes.isEmpty() == false) {
            logger.warn("[{}] re-syncing mappings with cluster state because of types [{}]", index, updatedTypes);
            dirty = true;
            for (DocumentMapper mapper : indexService.mapperService().docMappers(true)) {
                builder.putMapping(new MappingMetaData(mapper));
            }
        }
    } catch (Exception e) {
        logger.warn((Supplier<?>) () -> new ParameterizedMessage("[{}] failed to refresh-mapping in cluster state", index), e);
    }
    return dirty;
}
Also used : DocumentMapper(org.elasticsearch.index.mapper.DocumentMapper) ArrayList(java.util.ArrayList) Supplier(org.apache.logging.log4j.util.Supplier) ParameterizedMessage(org.apache.logging.log4j.message.ParameterizedMessage) InvalidTypeNameException(org.elasticsearch.indices.InvalidTypeNameException) IOException(java.io.IOException)

Example 92 with Supplier

use of org.apache.logging.log4j.util.Supplier in project elasticsearch by elastic.

the class RoutingService method performReroute.

// visible for testing
protected void performReroute(String reason) {
    try {
        if (lifecycle.stopped()) {
            return;
        }
        if (rerouting.compareAndSet(false, true) == false) {
            logger.trace("already has pending reroute, ignoring {}", reason);
            return;
        }
        logger.trace("rerouting {}", reason);
        clusterService.submitStateUpdateTask(CLUSTER_UPDATE_TASK_SOURCE + "(" + reason + ")", new ClusterStateUpdateTask(Priority.HIGH) {

            @Override
            public ClusterState execute(ClusterState currentState) {
                rerouting.set(false);
                return allocationService.reroute(currentState, reason);
            }

            @Override
            public void onNoLongerMaster(String source) {
                rerouting.set(false);
            // no biggie
            }

            @Override
            public void onFailure(String source, Exception e) {
                rerouting.set(false);
                ClusterState state = clusterService.state();
                if (logger.isTraceEnabled()) {
                    logger.error((Supplier<?>) () -> new ParameterizedMessage("unexpected failure during [{}], current state:\n{}", source, state), e);
                } else {
                    logger.error((Supplier<?>) () -> new ParameterizedMessage("unexpected failure during [{}], current state version [{}]", source, state.version()), e);
                }
            }
        });
    } catch (Exception e) {
        rerouting.set(false);
        ClusterState state = clusterService.state();
        logger.warn((Supplier<?>) () -> new ParameterizedMessage("failed to reroute routing table, current state:\n{}", state), e);
    }
}
Also used : ClusterState(org.elasticsearch.cluster.ClusterState) ClusterStateUpdateTask(org.elasticsearch.cluster.ClusterStateUpdateTask) Supplier(org.apache.logging.log4j.util.Supplier) ParameterizedMessage(org.apache.logging.log4j.message.ParameterizedMessage)

Example 93 with Supplier

use of org.apache.logging.log4j.util.Supplier in project logging-log4j2 by apache.

the class GenerateCustomLoggerTest method testGenerateSource.

@Test
public void testGenerateSource() throws Exception {
    final String CLASSNAME = "org.myorg.MyCustomLogger";
    // generate custom logger source
    final List<String> values = Arrays.asList("DEFCON1=350 DEFCON2=450 DEFCON3=550".split(" "));
    final List<Generate.LevelInfo> levels = Generate.LevelInfo.parse(values, Generate.CustomLogger.class);
    final String src = Generate.generateSource(CLASSNAME, levels, Generate.Type.CUSTOM);
    final File f = new File("target/test-classes/org/myorg/MyCustomLogger.java");
    f.getParentFile().mkdirs();
    try (final FileOutputStream out = new FileOutputStream(f)) {
        out.write(src.getBytes(Charset.defaultCharset()));
    }
    // set up compiler
    final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
    final DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
    final List<String> errors = new ArrayList<>();
    try (final StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null)) {
        final Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(f));
        // compile generated source
        compiler.getTask(null, fileManager, diagnostics, null, null, compilationUnits).call();
        // check we don't have any compilation errors
        for (final Diagnostic<? extends JavaFileObject> diagnostic : diagnostics.getDiagnostics()) {
            if (diagnostic.getKind() == Diagnostic.Kind.ERROR) {
                errors.add(String.format("Compile error: %s%n", diagnostic.getMessage(Locale.getDefault())));
            }
        }
    }
    assertTrue(errors.toString(), errors.isEmpty());
    // load the compiled class
    final Class<?> cls = Class.forName(CLASSNAME);
    // check that all factory methods exist and are static
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", new Class[0]).getModifiers()));
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", new Class[] { Class.class }).getModifiers()));
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", new Class[] { Object.class }).getModifiers()));
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", new Class[] { String.class }).getModifiers()));
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", Class.class, MessageFactory.class).getModifiers()));
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", Object.class, MessageFactory.class).getModifiers()));
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", String.class, MessageFactory.class).getModifiers()));
    // check that all log methods exist
    final String[] logMethods = { "defcon1", "defcon2", "defcon3" };
    for (final String name : logMethods) {
        cls.getDeclaredMethod(name, Marker.class, Message.class, Throwable.class);
        cls.getDeclaredMethod(name, Marker.class, Object.class, Throwable.class);
        cls.getDeclaredMethod(name, Marker.class, String.class, Throwable.class);
        cls.getDeclaredMethod(name, Marker.class, Message.class);
        cls.getDeclaredMethod(name, Marker.class, Object.class);
        cls.getDeclaredMethod(name, Marker.class, String.class);
        cls.getDeclaredMethod(name, Message.class);
        cls.getDeclaredMethod(name, Object.class);
        cls.getDeclaredMethod(name, String.class);
        cls.getDeclaredMethod(name, Message.class, Throwable.class);
        cls.getDeclaredMethod(name, Object.class, Throwable.class);
        cls.getDeclaredMethod(name, String.class, Throwable.class);
        cls.getDeclaredMethod(name, String.class, Object[].class);
        cls.getDeclaredMethod(name, Marker.class, String.class, Object[].class);
        // 2.4 lambda support
        cls.getDeclaredMethod(name, Marker.class, MessageSupplier.class);
        cls.getDeclaredMethod(name, Marker.class, MessageSupplier.class, Throwable.class);
        cls.getDeclaredMethod(name, Marker.class, String.class, Supplier[].class);
        cls.getDeclaredMethod(name, Marker.class, Supplier.class);
        cls.getDeclaredMethod(name, Marker.class, Supplier.class, Throwable.class);
        cls.getDeclaredMethod(name, MessageSupplier.class);
        cls.getDeclaredMethod(name, MessageSupplier.class, Throwable.class);
        cls.getDeclaredMethod(name, String.class, Supplier[].class);
        cls.getDeclaredMethod(name, Supplier.class);
        cls.getDeclaredMethod(name, Supplier.class, Throwable.class);
    }
    // now see if it actually works...
    final Method create = cls.getDeclaredMethod("create", new Class[] { String.class });
    final Object customLogger = create.invoke(null, "X.Y.Z");
    int n = 0;
    for (final String name : logMethods) {
        final Method method = cls.getDeclaredMethod(name, String.class);
        method.invoke(customLogger, "This is message " + n++);
    }
    final TestLogger underlying = (TestLogger) LogManager.getLogger("X.Y.Z");
    final List<String> lines = underlying.getEntries();
    for (int i = 0; i < lines.size(); i++) {
        assertEquals(" " + levels.get(i).name + " This is message " + i, lines.get(i));
    }
}
Also used : MessageFactory(org.apache.logging.log4j.message.MessageFactory) ArrayList(java.util.ArrayList) JavaCompiler(javax.tools.JavaCompiler) Method(java.lang.reflect.Method) TestLogger(org.apache.logging.log4j.TestLogger) JavaFileObject(javax.tools.JavaFileObject) FileOutputStream(java.io.FileOutputStream) StandardJavaFileManager(javax.tools.StandardJavaFileManager) DiagnosticCollector(javax.tools.DiagnosticCollector) BeforeClass(org.junit.BeforeClass) JavaFileObject(javax.tools.JavaFileObject) MessageSupplier(org.apache.logging.log4j.util.MessageSupplier) Supplier(org.apache.logging.log4j.util.Supplier) File(java.io.File) Test(org.junit.Test)

Example 94 with Supplier

use of org.apache.logging.log4j.util.Supplier in project logging-log4j2 by apache.

the class GenerateExtendedLoggerTest method testGenerateSource.

@Test
public void testGenerateSource() throws Exception {
    final String CLASSNAME = "org.myorg.MyExtendedLogger";
    // generate custom logger source
    final List<String> values = Arrays.asList("DIAG=350 NOTICE=450 VERBOSE=550".split(" "));
    final List<Generate.LevelInfo> levels = Generate.LevelInfo.parse(values, Generate.ExtendedLogger.class);
    final String src = Generate.generateSource(CLASSNAME, levels, Generate.Type.EXTEND);
    final File f = new File("target/test-classes/org/myorg/MyExtendedLogger.java");
    f.getParentFile().mkdirs();
    try (final FileOutputStream out = new FileOutputStream(f)) {
        out.write(src.getBytes(Charset.defaultCharset()));
    }
    // set up compiler
    final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
    final DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
    final List<String> errors = new ArrayList<>();
    try (final StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null)) {
        final Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(f));
        // compile generated source
        compiler.getTask(null, fileManager, diagnostics, null, null, compilationUnits).call();
        // check we don't have any compilation errors
        for (final Diagnostic<? extends JavaFileObject> diagnostic : diagnostics.getDiagnostics()) {
            if (diagnostic.getKind() == Diagnostic.Kind.ERROR) {
                errors.add(String.format("Compile error: %s%n", diagnostic.getMessage(Locale.getDefault())));
            }
        }
    }
    assertTrue(errors.toString(), errors.isEmpty());
    // load the compiled class
    final Class<?> cls = Class.forName(CLASSNAME);
    // check that all factory methods exist and are static
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", new Class[0]).getModifiers()));
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", new Class[] { Class.class }).getModifiers()));
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", new Class[] { Object.class }).getModifiers()));
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", new Class[] { String.class }).getModifiers()));
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", Class.class, MessageFactory.class).getModifiers()));
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", Object.class, MessageFactory.class).getModifiers()));
    assertTrue(Modifier.isStatic(cls.getDeclaredMethod("create", String.class, MessageFactory.class).getModifiers()));
    // check that the extended log methods exist
    final String[] extendedMethods = { "diag", "notice", "verbose" };
    for (final String name : extendedMethods) {
        cls.getDeclaredMethod(name, Marker.class, Message.class, Throwable.class);
        cls.getDeclaredMethod(name, Marker.class, Object.class, Throwable.class);
        cls.getDeclaredMethod(name, Marker.class, String.class, Throwable.class);
        cls.getDeclaredMethod(name, Marker.class, Message.class);
        cls.getDeclaredMethod(name, Marker.class, Object.class);
        cls.getDeclaredMethod(name, Marker.class, String.class);
        cls.getDeclaredMethod(name, Message.class);
        cls.getDeclaredMethod(name, Object.class);
        cls.getDeclaredMethod(name, String.class);
        cls.getDeclaredMethod(name, Message.class, Throwable.class);
        cls.getDeclaredMethod(name, Object.class, Throwable.class);
        cls.getDeclaredMethod(name, String.class, Throwable.class);
        cls.getDeclaredMethod(name, String.class, Object[].class);
        cls.getDeclaredMethod(name, Marker.class, String.class, Object[].class);
        // 2.4 lambda support
        cls.getDeclaredMethod(name, Marker.class, MessageSupplier.class);
        cls.getDeclaredMethod(name, Marker.class, MessageSupplier.class, Throwable.class);
        cls.getDeclaredMethod(name, Marker.class, String.class, Supplier[].class);
        cls.getDeclaredMethod(name, Marker.class, Supplier.class);
        cls.getDeclaredMethod(name, Marker.class, Supplier.class, Throwable.class);
        cls.getDeclaredMethod(name, MessageSupplier.class);
        cls.getDeclaredMethod(name, MessageSupplier.class, Throwable.class);
        cls.getDeclaredMethod(name, String.class, Supplier[].class);
        cls.getDeclaredMethod(name, Supplier.class);
        cls.getDeclaredMethod(name, Supplier.class, Throwable.class);
    }
    // now see if it actually works...
    final Method create = cls.getDeclaredMethod("create", new Class[] { String.class });
    final Object extendedLogger = create.invoke(null, "X.Y.Z");
    int n = 0;
    for (final String name : extendedMethods) {
        final Method method = cls.getDeclaredMethod(name, String.class);
        method.invoke(extendedLogger, "This is message " + n++);
    }
    // This logger extends o.a.l.log4j.spi.ExtendedLogger,
    // so all the standard logging methods can be used as well
    final ExtendedLogger logger = (ExtendedLogger) extendedLogger;
    logger.trace("trace message");
    logger.debug("debug message");
    logger.info("info message");
    logger.warn("warn message");
    logger.error("error message");
    logger.fatal("fatal message");
    final TestLogger underlying = (TestLogger) LogManager.getLogger("X.Y.Z");
    final List<String> lines = underlying.getEntries();
    for (int i = 0; i < lines.size() - 6; i++) {
        assertEquals(" " + levels.get(i).name + " This is message " + i, lines.get(i));
    }
    // test that the standard logging methods still work
    int i = lines.size() - 6;
    assertEquals(" TRACE trace message", lines.get(i++));
    assertEquals(" DEBUG debug message", lines.get(i++));
    assertEquals(" INFO info message", lines.get(i++));
    assertEquals(" WARN warn message", lines.get(i++));
    assertEquals(" ERROR error message", lines.get(i++));
    assertEquals(" FATAL fatal message", lines.get(i++));
}
Also used : ArrayList(java.util.ArrayList) JavaFileObject(javax.tools.JavaFileObject) Generate(org.apache.logging.log4j.core.tools.Generate) StandardJavaFileManager(javax.tools.StandardJavaFileManager) DiagnosticCollector(javax.tools.DiagnosticCollector) MessageSupplier(org.apache.logging.log4j.util.MessageSupplier) Supplier(org.apache.logging.log4j.util.Supplier) MessageFactory(org.apache.logging.log4j.message.MessageFactory) JavaCompiler(javax.tools.JavaCompiler) Method(java.lang.reflect.Method) TestLogger(org.apache.logging.log4j.TestLogger) ExtendedLogger(org.apache.logging.log4j.spi.ExtendedLogger) FileOutputStream(java.io.FileOutputStream) BeforeClass(org.junit.BeforeClass) JavaFileObject(javax.tools.JavaFileObject) File(java.io.File) Test(org.junit.Test)

Aggregations

Supplier (org.apache.logging.log4j.util.Supplier)94 ParameterizedMessage (org.apache.logging.log4j.message.ParameterizedMessage)91 IOException (java.io.IOException)55 ElasticsearchException (org.elasticsearch.ElasticsearchException)27 ArrayList (java.util.ArrayList)25 ClusterState (org.elasticsearch.cluster.ClusterState)21 DiscoveryNode (org.elasticsearch.cluster.node.DiscoveryNode)21 TimeValue (org.elasticsearch.common.unit.TimeValue)14 HashMap (java.util.HashMap)12 Map (java.util.Map)11 Settings (org.elasticsearch.common.settings.Settings)11 TransportException (org.elasticsearch.transport.TransportException)11 List (java.util.List)10 ExecutionException (java.util.concurrent.ExecutionException)10 Index (org.elasticsearch.index.Index)10 CountDownLatch (java.util.concurrent.CountDownLatch)9 NotMasterException (org.elasticsearch.cluster.NotMasterException)8 ClusterStateUpdateResponse (org.elasticsearch.cluster.ack.ClusterStateUpdateResponse)8 ClusterBlockException (org.elasticsearch.cluster.block.ClusterBlockException)8 NoSuchFileException (java.nio.file.NoSuchFileException)7