I like unix endings because there's only one byte instead of two.

On 12 April 2016 at 14:02, Gary Gregory <[email protected]> wrote:

> Sure, pick one.
>
> Gary
>
> On Tue, Apr 12, 2016 at 12:01 PM, Matt Sicker <[email protected]> wrote:
>
>> It would be nice to standardize on a single line ending format at some
>> point, but it would be such a huge commit.
>>
>> On 12 April 2016 at 13:51, Gary Gregory <[email protected]> wrote:
>>
>>> I'm so annoyed and apologize for this all lines changed commit. I only
>>> renamed a variable.
>>>
>>> Gary
>>>
>>> ---------- Forwarded message ----------
>>> From: <[email protected]>
>>> Date: Tue, Apr 12, 2016 at 11:47 AM
>>> Subject: logging-log4j2 git commit: I always use "Millis" as the post
>>> fix to avoid any confusion.
>>> To: [email protected]
>>>
>>>
>>> Repository: logging-log4j2
>>> Updated Branches:
>>>   refs/heads/master c55ace781 -> eb32b2f77
>>>
>>>
>>> I always use "Millis" as the post fix to avoid any confusion.
>>>
>>> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
>>> Commit:
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/eb32b2f7
>>> Tree:
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/eb32b2f7
>>> Diff:
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/eb32b2f7
>>>
>>> Branch: refs/heads/master
>>> Commit: eb32b2f77634609a98c9940fac8e28b7e0d20f38
>>> Parents: c55ace7
>>> Author: ggregory <[email protected]>
>>> Authored: Tue Apr 12 11:47:03 2016 -0700
>>> Committer: ggregory <[email protected]>
>>> Committed: Tue Apr 12 11:47:03 2016 -0700
>>>
>>> ----------------------------------------------------------------------
>>>  .../logging/log4j/core/async/DisruptorUtil.java | 296
>>> +++++++++----------
>>>  1 file changed, 148 insertions(+), 148 deletions(-)
>>> ----------------------------------------------------------------------
>>>
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/eb32b2f7/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
>>> index 4faa174..3ce30f0 100644
>>> ---
>>> a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
>>> +++
>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
>>> @@ -1,148 +1,148 @@
>>> -/*
>>> - * 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
>>> - *
>>> - *      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.apache.logging.log4j.core.async;
>>> -
>>> -import java.util.concurrent.Callable;
>>> -import java.util.concurrent.ExecutorService;
>>> -import java.util.concurrent.Future;
>>> -import java.util.concurrent.TimeUnit;
>>> -
>>> -import com.lmax.disruptor.*;
>>> -import org.apache.logging.log4j.Logger;
>>> -import org.apache.logging.log4j.core.util.Constants;
>>> -import org.apache.logging.log4j.core.util.Integers;
>>> -import org.apache.logging.log4j.status.StatusLogger;
>>> -import org.apache.logging.log4j.util.LoaderUtil;
>>> -import org.apache.logging.log4j.util.PropertiesUtil;
>>> -
>>> -/**
>>> - * Utility methods for getting Disruptor related configuration.
>>> - */
>>> -final class DisruptorUtil {
>>> -    private static final Logger LOGGER = StatusLogger.getLogger();
>>> -    private static final int RINGBUFFER_MIN_SIZE = 128;
>>> -    private static final int RINGBUFFER_DEFAULT_SIZE = 256 * 1024;
>>> -    private static final int RINGBUFFER_NO_GC_DEFAULT_SIZE = 4 * 1024;
>>> -
>>> -    private DisruptorUtil() {
>>> -    }
>>> -
>>> -    static long getTimeout(final String propertyName, final long
>>> defaultTimeout) {
>>> -        return
>>> PropertiesUtil.getProperties().getLongProperty(propertyName,
>>> defaultTimeout);
>>> -    }
>>> -
>>> -    static WaitStrategy createWaitStrategy(final String propertyName) {
>>> -        final String key = propertyName.startsWith("AsyncLogger.")
>>> -                ? "AsyncLogger.Timeout"
>>> -                : "AsyncLoggerConfig.Timeout";
>>> -        final long timeout = DisruptorUtil.getTimeout(key, 10L);
>>> -        return createWaitStrategy(propertyName, timeout);
>>> -    }
>>> -
>>> -    static WaitStrategy createWaitStrategy(final String propertyName,
>>> final long timeoutMs) {
>>> -        final String strategy =
>>> PropertiesUtil.getProperties().getStringProperty(propertyName);
>>> -        if (strategy != null) {
>>> -            LOGGER.trace("property {}={}", propertyName, strategy);
>>> -            if ("Sleep".equalsIgnoreCase(strategy)) {
>>> -                return new SleepingWaitStrategy();
>>> -            } else if ("Yield".equalsIgnoreCase(strategy)) {
>>> -                return new YieldingWaitStrategy();
>>> -            } else if ("Block".equalsIgnoreCase(strategy)) {
>>> -                return new BlockingWaitStrategy();
>>> -            } else if ("BusySpin".equalsIgnoreCase(strategy)) {
>>> -                return new BusySpinWaitStrategy();
>>> -            } else if ("Timeout".equalsIgnoreCase(strategy)) {
>>> -                return new TimeoutBlockingWaitStrategy(timeoutMs,
>>> TimeUnit.MILLISECONDS);
>>> -            }
>>> -        }
>>> -        return new TimeoutBlockingWaitStrategy(timeoutMs,
>>> TimeUnit.MILLISECONDS);
>>> -    }
>>> -
>>> -    static int calculateRingBufferSize(final String propertyName) {
>>> -        int ringBufferSize = Constants.ENABLE_THREADLOCALS ?
>>> RINGBUFFER_NO_GC_DEFAULT_SIZE : RINGBUFFER_DEFAULT_SIZE;
>>> -        final String userPreferredRBSize =
>>> PropertiesUtil.getProperties().getStringProperty(propertyName,
>>> -                String.valueOf(ringBufferSize));
>>> -        try {
>>> -            int size = Integer.parseInt(userPreferredRBSize);
>>> -            if (size < RINGBUFFER_MIN_SIZE) {
>>> -                size = RINGBUFFER_MIN_SIZE;
>>> -                LOGGER.warn("Invalid RingBufferSize {}, using minimum
>>> size {}.", userPreferredRBSize,
>>> -                        RINGBUFFER_MIN_SIZE);
>>> -            }
>>> -            ringBufferSize = size;
>>> -        } catch (final Exception ex) {
>>> -            LOGGER.warn("Invalid RingBufferSize {}, using default size
>>> {}.", userPreferredRBSize, ringBufferSize);
>>> -        }
>>> -        return Integers.ceilingNextPowerOfTwo(ringBufferSize);
>>> -    }
>>> -
>>> -    static ExceptionHandler<RingBufferLogEvent>
>>> getAsyncLoggerExceptionHandler() {
>>> -        final String cls =
>>> PropertiesUtil.getProperties().getStringProperty("AsyncLogger.ExceptionHandler");
>>> -        if (cls == null) {
>>> -            return new DefaultAsyncLoggerExceptionHandler();
>>> -        }
>>> -        try {
>>> -            @SuppressWarnings("unchecked")
>>> -            final Class<? extends ExceptionHandler<RingBufferLogEvent>>
>>> klass =
>>> -                (Class<? extends ExceptionHandler<RingBufferLogEvent>>)
>>> LoaderUtil.loadClass(cls);
>>> -            return klass.newInstance();
>>> -        } catch (final Exception ignored) {
>>> -            LOGGER.debug("Invalid AsyncLogger.ExceptionHandler value:
>>> error creating {}: ", cls, ignored);
>>> -            return new DefaultAsyncLoggerExceptionHandler();
>>> -        }
>>> -    }
>>> -
>>> -    static
>>> ExceptionHandler<AsyncLoggerConfigDisruptor.Log4jEventWrapper>
>>> getAsyncLoggerConfigExceptionHandler() {
>>> -        final String cls =
>>> PropertiesUtil.getProperties().getStringProperty("AsyncLoggerConfig.ExceptionHandler");
>>> -        if (cls == null) {
>>> -            return new DefaultAsyncLoggerConfigExceptionHandler();
>>> -        }
>>> -        try {
>>> -            @SuppressWarnings("unchecked")
>>> -            final Class<? extends
>>> ExceptionHandler<AsyncLoggerConfigDisruptor.Log4jEventWrapper>> klass =
>>> -                    (Class<? extends
>>> ExceptionHandler<AsyncLoggerConfigDisruptor.Log4jEventWrapper>>)
>>> LoaderUtil.loadClass(cls);
>>> -            return klass.newInstance();
>>> -        } catch (final Exception ignored) {
>>> -            LOGGER.debug("Invalid AsyncLoggerConfig.ExceptionHandler
>>> value: error creating {}: ", cls, ignored);
>>> -            return new DefaultAsyncLoggerConfigExceptionHandler();
>>> -        }
>>> -    }
>>> -
>>> -    /**
>>> -     * Returns the thread ID of the background appender thread. This
>>> allows us to detect Logger.log() calls initiated
>>> -     * from the appender thread, which may cause deadlock when the
>>> RingBuffer is full. (LOG4J2-471)
>>> -     *
>>> -     * @param executor runs the appender thread
>>> -     * @return the thread ID of the background appender thread
>>> -     */
>>> -    public static long getExecutorThreadId(final ExecutorService
>>> executor) {
>>> -        Future<Long> result = executor.submit(new Callable<Long>() {
>>> -            @Override
>>> -            public Long call() {
>>> -                return Thread.currentThread().getId();
>>> -            }
>>> -        });
>>> -        try {
>>> -            return result.get();
>>> -        } catch (final Exception ex) {
>>> -            final String msg = "Could not obtain executor thread Id. "
>>> -                    + "Giving up to avoid the risk of application
>>> deadlock.";
>>> -            throw new IllegalStateException(msg, ex);
>>> -        }
>>> -    }
>>> -}
>>> +/*
>>> + * 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
>>> + *
>>> + *      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.apache.logging.log4j.core.async;
>>> +
>>> +import java.util.concurrent.Callable;
>>> +import java.util.concurrent.ExecutorService;
>>> +import java.util.concurrent.Future;
>>> +import java.util.concurrent.TimeUnit;
>>> +
>>> +import com.lmax.disruptor.*;
>>> +import org.apache.logging.log4j.Logger;
>>> +import org.apache.logging.log4j.core.util.Constants;
>>> +import org.apache.logging.log4j.core.util.Integers;
>>> +import org.apache.logging.log4j.status.StatusLogger;
>>> +import org.apache.logging.log4j.util.LoaderUtil;
>>> +import org.apache.logging.log4j.util.PropertiesUtil;
>>> +
>>> +/**
>>> + * Utility methods for getting Disruptor related configuration.
>>> + */
>>> +final class DisruptorUtil {
>>> +    private static final Logger LOGGER = StatusLogger.getLogger();
>>> +    private static final int RINGBUFFER_MIN_SIZE = 128;
>>> +    private static final int RINGBUFFER_DEFAULT_SIZE = 256 * 1024;
>>> +    private static final int RINGBUFFER_NO_GC_DEFAULT_SIZE = 4 * 1024;
>>> +
>>> +    private DisruptorUtil() {
>>> +    }
>>> +
>>> +    static long getTimeout(final String propertyName, final long
>>> defaultTimeout) {
>>> +        return
>>> PropertiesUtil.getProperties().getLongProperty(propertyName,
>>> defaultTimeout);
>>> +    }
>>> +
>>> +    static WaitStrategy createWaitStrategy(final String propertyName) {
>>> +        final String key = propertyName.startsWith("AsyncLogger.")
>>> +                ? "AsyncLogger.Timeout"
>>> +                : "AsyncLoggerConfig.Timeout";
>>> +        final long timeout = DisruptorUtil.getTimeout(key, 10L);
>>> +        return createWaitStrategy(propertyName, timeout);
>>> +    }
>>> +
>>> +    static WaitStrategy createWaitStrategy(final String propertyName,
>>> final long timeoutMillis) {
>>> +        final String strategy =
>>> PropertiesUtil.getProperties().getStringProperty(propertyName);
>>> +        if (strategy != null) {
>>> +            LOGGER.trace("property {}={}", propertyName, strategy);
>>> +            if ("Sleep".equalsIgnoreCase(strategy)) {
>>> +                return new SleepingWaitStrategy();
>>> +            } else if ("Yield".equalsIgnoreCase(strategy)) {
>>> +                return new YieldingWaitStrategy();
>>> +            } else if ("Block".equalsIgnoreCase(strategy)) {
>>> +                return new BlockingWaitStrategy();
>>> +            } else if ("BusySpin".equalsIgnoreCase(strategy)) {
>>> +                return new BusySpinWaitStrategy();
>>> +            } else if ("Timeout".equalsIgnoreCase(strategy)) {
>>> +                return new TimeoutBlockingWaitStrategy(timeoutMillis,
>>> TimeUnit.MILLISECONDS);
>>> +            }
>>> +        }
>>> +        return new TimeoutBlockingWaitStrategy(timeoutMillis,
>>> TimeUnit.MILLISECONDS);
>>> +    }
>>> +
>>> +    static int calculateRingBufferSize(final String propertyName) {
>>> +        int ringBufferSize = Constants.ENABLE_THREADLOCALS ?
>>> RINGBUFFER_NO_GC_DEFAULT_SIZE : RINGBUFFER_DEFAULT_SIZE;
>>> +        final String userPreferredRBSize =
>>> PropertiesUtil.getProperties().getStringProperty(propertyName,
>>> +                String.valueOf(ringBufferSize));
>>> +        try {
>>> +            int size = Integer.parseInt(userPreferredRBSize);
>>> +            if (size < RINGBUFFER_MIN_SIZE) {
>>> +                size = RINGBUFFER_MIN_SIZE;
>>> +                LOGGER.warn("Invalid RingBufferSize {}, using minimum
>>> size {}.", userPreferredRBSize,
>>> +                        RINGBUFFER_MIN_SIZE);
>>> +            }
>>> +            ringBufferSize = size;
>>> +        } catch (final Exception ex) {
>>> +            LOGGER.warn("Invalid RingBufferSize {}, using default size
>>> {}.", userPreferredRBSize, ringBufferSize);
>>> +        }
>>> +        return Integers.ceilingNextPowerOfTwo(ringBufferSize);
>>> +    }
>>> +
>>> +    static ExceptionHandler<RingBufferLogEvent>
>>> getAsyncLoggerExceptionHandler() {
>>> +        final String cls =
>>> PropertiesUtil.getProperties().getStringProperty("AsyncLogger.ExceptionHandler");
>>> +        if (cls == null) {
>>> +            return new DefaultAsyncLoggerExceptionHandler();
>>> +        }
>>> +        try {
>>> +            @SuppressWarnings("unchecked")
>>> +            final Class<? extends ExceptionHandler<RingBufferLogEvent>>
>>> klass =
>>> +                (Class<? extends ExceptionHandler<RingBufferLogEvent>>)
>>> LoaderUtil.loadClass(cls);
>>> +            return klass.newInstance();
>>> +        } catch (final Exception ignored) {
>>> +            LOGGER.debug("Invalid AsyncLogger.ExceptionHandler value:
>>> error creating {}: ", cls, ignored);
>>> +            return new DefaultAsyncLoggerExceptionHandler();
>>> +        }
>>> +    }
>>> +
>>> +    static
>>> ExceptionHandler<AsyncLoggerConfigDisruptor.Log4jEventWrapper>
>>> getAsyncLoggerConfigExceptionHandler() {
>>> +        final String cls =
>>> PropertiesUtil.getProperties().getStringProperty("AsyncLoggerConfig.ExceptionHandler");
>>> +        if (cls == null) {
>>> +            return new DefaultAsyncLoggerConfigExceptionHandler();
>>> +        }
>>> +        try {
>>> +            @SuppressWarnings("unchecked")
>>> +            final Class<? extends
>>> ExceptionHandler<AsyncLoggerConfigDisruptor.Log4jEventWrapper>> klass =
>>> +                    (Class<? extends
>>> ExceptionHandler<AsyncLoggerConfigDisruptor.Log4jEventWrapper>>)
>>> LoaderUtil.loadClass(cls);
>>> +            return klass.newInstance();
>>> +        } catch (final Exception ignored) {
>>> +            LOGGER.debug("Invalid AsyncLoggerConfig.ExceptionHandler
>>> value: error creating {}: ", cls, ignored);
>>> +            return new DefaultAsyncLoggerConfigExceptionHandler();
>>> +        }
>>> +    }
>>> +
>>> +    /**
>>> +     * Returns the thread ID of the background appender thread. This
>>> allows us to detect Logger.log() calls initiated
>>> +     * from the appender thread, which may cause deadlock when the
>>> RingBuffer is full. (LOG4J2-471)
>>> +     *
>>> +     * @param executor runs the appender thread
>>> +     * @return the thread ID of the background appender thread
>>> +     */
>>> +    public static long getExecutorThreadId(final ExecutorService
>>> executor) {
>>> +        Future<Long> result = executor.submit(new Callable<Long>() {
>>> +            @Override
>>> +            public Long call() {
>>> +                return Thread.currentThread().getId();
>>> +            }
>>> +        });
>>> +        try {
>>> +            return result.get();
>>> +        } catch (final Exception ex) {
>>> +            final String msg = "Could not obtain executor thread Id. "
>>> +                    + "Giving up to avoid the risk of application
>>> deadlock.";
>>> +            throw new IllegalStateException(msg, ex);
>>> +        }
>>> +    }
>>> +}
>>>
>>>
>>>
>>>
>>> --
>>> E-Mail: [email protected] | [email protected]
>>> Java Persistence with Hibernate, Second Edition
>>> <http://www.manning.com/bauer3/>
>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>> Spring Batch in Action <http://www.manning.com/templier/>
>>> Blog: http://garygregory.wordpress.com
>>> Home: http://garygregory.com/
>>> Tweet! http://twitter.com/GaryGregory
>>>
>>
>>
>>
>> --
>> Matt Sicker <[email protected]>
>>
>
>
>
> --
> E-Mail: [email protected] | [email protected]
> Java Persistence with Hibernate, Second Edition
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>



-- 
Matt Sicker <[email protected]>

Reply via email to