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" <ralph.go...@dslextreme.com> wrote:

    Ok. I’m waiting on feedback on this before I start a release.
    
    Ralph
    
    

Senior Software Developer
daan.hoogl...@shapeblue.com
www.shapeblue.com
 
 

> On Nov 11, 2017, at 7:14 AM, Remko Popma <remko.po...@gmail.com> wrote:
    > 
    > I’ll take a look tomorrow. 
    > 
    > 
    > 
    >> On Nov 10, 2017, at 22:47, Ralph Goers <rgo...@apache.org> 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, rgo...@apache.org 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 <rgo...@apache.org>
    >>> Authored: Fri Nov 10 06:46:11 2017 -0700
    >>> Committer: Ralph Goers <rgo...@apache.org>
    >>> 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