Release candidates are only available on the Apache staging repository. The 
download information will be in the email for the release candidate.

Ralph


> On Nov 11, 2017, at 10:59 AM, Daan Hoogland <[email protected]> 
> wrote:
> 
> As a matter of interest, can we test release candidates from maven central at 
> apache or do I need to build and install locally to test?
> 
> thanks
> 
> On 11/11/2017, 18:32, "Ralph Goers" <[email protected]> wrote:
> 
>    Ok. I’m waiting on feedback on this before I start a release.
> 
>    Ralph
> 
> 
> 
> Senior Software Developer
> [email protected]
> www.shapeblue.com
> 
> 
> 
>> On Nov 11, 2017, at 7:14 AM, Remko Popma <[email protected]> wrote:
>> 
>> I’ll take a look tomorrow. 
>> 
>> 
>> 
>>> On Nov 10, 2017, at 22:47, Ralph Goers <[email protected]> wrote:
>>> 
>>> Please review this commit as I want to make sure I didn’t make any mistakes.
>>> 
>>> Ralph
>>> 
>>> 
>>>> On Nov 10, 2017, at 6:46 AM, [email protected] wrote:
>>>> 
>>>> Repository: logging-log4j2
>>>> Updated Branches:
>>>> refs/heads/master 0dca987fc -> aad2f132b
>>>> 
>>>> 
>>>> LOG4J2-2106 Reduce locking when checking for rollover
>>>> 
>>>> 
>>>> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
>>>> Commit: 
>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/aad2f132
>>>> Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/aad2f132
>>>> Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/aad2f132
>>>> 
>>>> Branch: refs/heads/master
>>>> Commit: aad2f132b27f9e2667c2b43fb58ce59e3914edb3
>>>> Parents: 0dca987
>>>> Author: Ralph Goers <[email protected]>
>>>> Authored: Fri Nov 10 06:46:11 2017 -0700
>>>> Committer: Ralph Goers <[email protected]>
>>>> Committed: Fri Nov 10 06:46:11 2017 -0700
>>>> 
>>>> ----------------------------------------------------------------------
>>>> .../appender/rolling/RollingFileManager.java | 57 +++++++++++++-------
>>>> .../rolling/SizeBasedTriggeringPolicy.java      |  2 +-
>>>> .../rolling/TimeBasedTriggeringPolicy.java      |  2 +-
>>>> src/changes/changes.xml                         |  3 ++
>>>> 4 files changed, 42 insertions(+), 22 deletions(-)
>>>> ----------------------------------------------------------------------
>>>> 
>>>> 
>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/aad2f132/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
>>>> ----------------------------------------------------------------------
>>>> diff --git 
>>>> a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
>>>>  
>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
>>>> index 6ccfe7b..ff7bf6d 100644
>>>> --- 
>>>> a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
>>>> +++ 
>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
>>>> @@ -29,6 +29,9 @@ import java.util.concurrent.Semaphore;
>>>> import java.util.concurrent.ThreadPoolExecutor;
>>>> import java.util.concurrent.TimeUnit;
>>>> import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
>>>> +import java.util.concurrent.locks.Lock;
>>>> +import java.util.concurrent.locks.ReadWriteLock;
>>>> +import java.util.concurrent.locks.ReentrantReadWriteLock;
>>>> 
>>>> import org.apache.logging.log4j.core.Layout;
>>>> import org.apache.logging.log4j.core.LifeCycle;
>>>> @@ -65,6 +68,9 @@ public class RollingFileManager extends FileManager {
>>>>  private volatile boolean initialized = false;
>>>>  private volatile String fileName;
>>>>  private final FileExtension fileExtension;
>>>> +    private final ReadWriteLock updateLock = new ReentrantReadWriteLock();
>>>> +    private final Lock readLock = updateLock.readLock();
>>>> +    private final Lock writeLock = updateLock.writeLock();
>>>> 
>>>>  /* This executor pool will create a new Thread for every work async 
>>>> action to be performed. Using it allows
>>>>     us to make sure all the Threads are completed when the Manager is 
>>>> stopped. */
>>>> @@ -247,9 +253,14 @@ public class RollingFileManager extends FileManager {
>>>>   * Determines if a rollover should occur.
>>>>   * @param event The LogEvent.
>>>>   */
>>>> -    public synchronized void checkRollover(final LogEvent event) {
>>>> -        if (triggeringPolicy.isTriggeringEvent(event)) {
>>>> -            rollover();
>>>> +    public void checkRollover(final LogEvent event) {
>>>> +        readLock.lock();
>>>> +        try {
>>>> +            if (triggeringPolicy.isTriggeringEvent(event)) {
>>>> +                rollover();
>>>> +            }
>>>> +        } finally {
>>>> +            readLock.unlock();
>>>>      }
>>>>  }
>>>> 
>>>> @@ -333,25 +344,31 @@ public class RollingFileManager extends FileManager {
>>>>  }
>>>> 
>>>>  public void setTriggeringPolicy(final TriggeringPolicy triggeringPolicy) {
>>>> -        triggeringPolicy.initialize(this);
>>>> -        final TriggeringPolicy policy = this.triggeringPolicy;
>>>> -        int count = 0;
>>>> -        boolean policyUpdated = false;
>>>> -        do {
>>>> -            ++count;
>>>> -        } while (!(policyUpdated = 
>>>> triggeringPolicyUpdater.compareAndSet(this, this.triggeringPolicy, 
>>>> triggeringPolicy))
>>>> -                && count < MAX_TRIES);
>>>> -        if (policyUpdated) {
>>>> -            if (triggeringPolicy instanceof LifeCycle) {
>>>> -                ((LifeCycle) triggeringPolicy).start();
>>>> -            }
>>>> -            if (policy instanceof LifeCycle) {
>>>> -                ((LifeCycle) policy).stop();
>>>> +        writeLock.lock();
>>>> +        try {
>>>> +            triggeringPolicy.initialize(this);
>>>> +            final TriggeringPolicy policy = this.triggeringPolicy;
>>>> +            int count = 0;
>>>> +            boolean policyUpdated = false;
>>>> +            do {
>>>> +                ++count;
>>>>          }
>>>> -        } else {
>>>> -            if (triggeringPolicy instanceof LifeCycle) {
>>>> -                ((LifeCycle) triggeringPolicy).stop();
>>>> +            while (!(policyUpdated = 
>>>> triggeringPolicyUpdater.compareAndSet(this, this.triggeringPolicy, 
>>>> triggeringPolicy))
>>>> +                    && count < MAX_TRIES);
>>>> +            if (policyUpdated) {
>>>> +                if (triggeringPolicy instanceof LifeCycle) {
>>>> +                    ((LifeCycle) triggeringPolicy).start();
>>>> +                }
>>>> +                if (policy instanceof LifeCycle) {
>>>> +                    ((LifeCycle) policy).stop();
>>>> +                }
>>>> +            } else {
>>>> +                if (triggeringPolicy instanceof LifeCycle) {
>>>> +                    ((LifeCycle) triggeringPolicy).stop();
>>>> +                }
>>>>          }
>>>> +        } finally {
>>>> +            writeLock.unlock();
>>>>      }
>>>>  }
>>>> 
>>>> 
>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/aad2f132/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/SizeBasedTriggeringPolicy.java
>>>> ----------------------------------------------------------------------
>>>> diff --git 
>>>> a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/SizeBasedTriggeringPolicy.java
>>>>  
>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/SizeBasedTriggeringPolicy.java
>>>> index f77d571..81069fa 100644
>>>> --- 
>>>> a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/SizeBasedTriggeringPolicy.java
>>>> +++ 
>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/SizeBasedTriggeringPolicy.java
>>>> @@ -73,7 +73,7 @@ public class SizeBasedTriggeringPolicy extends 
>>>> AbstractTriggeringPolicy {
>>>>   * @return true if a rollover should take place, false otherwise.
>>>>   */
>>>>  @Override
>>>> -    public boolean isTriggeringEvent(final LogEvent event) {
>>>> +    public synchronized boolean isTriggeringEvent(final LogEvent event) {
>>>>      final boolean triggered = manager.getFileSize() > maxFileSize;
>>>>      if (triggered) {
>>>>          manager.getPatternProcessor().updateTime();
>>>> 
>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/aad2f132/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java
>>>> ----------------------------------------------------------------------
>>>> diff --git 
>>>> a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java
>>>>  
>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java
>>>> index 7f6ac79..953e186 100644
>>>> --- 
>>>> a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java
>>>> +++ 
>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java
>>>> @@ -122,7 +122,7 @@ public final class TimeBasedTriggeringPolicy extends 
>>>> AbstractTriggeringPolicy {
>>>>   * @return true if a rollover should occur.
>>>>   */
>>>>  @Override
>>>> -    public boolean isTriggeringEvent(final LogEvent event) {
>>>> +    public synchronized boolean isTriggeringEvent(final LogEvent event) {
>>>>      if (manager.getFileSize() == 0) {
>>>>          return false;
>>>>      }
>>>> 
>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/aad2f132/src/changes/changes.xml
>>>> ----------------------------------------------------------------------
>>>> diff --git a/src/changes/changes.xml b/src/changes/changes.xml
>>>> index d54484a..2bcefb2 100644
>>>> --- a/src/changes/changes.xml
>>>> +++ b/src/changes/changes.xml
>>>> @@ -31,6 +31,9 @@
>>>>       - "remove" - Removed
>>>>  -->
>>>>  <release version="2.10.0" date="2017-MM-DD" description="GA Release 
>>>> 2.10.0">
>>>> +      <action issue="LOG4J2-2106" dev="rogers" type="fix">
>>>> +        Reduce locking when checking for rollover.
>>>> +      </action>
>>>>    <action issue="LOG4J2-2103" dev="mikes" type="add">
>>>>      XML encoding for PatternLayout.
>>>>    </action>
>>>> 
>>>> 
>>> 
>>> 
>> 
> 
> 
> 
> 


Reply via email to