ASF Bugzilla – Attachment 12840 Details for
Bug 24159
Log4J can create deadlock conditions (concurrent package donation)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Changes against Log4J 1.3 CVS
log4j.diff (text/plain), 3.62 KB, created by
Elias Ross
on 2004-09-22 22:11:21 UTC
(
hide
)
Description:
Changes against Log4J 1.3 CVS
Filename:
MIME Type:
Creator:
Elias Ross
Created:
2004-09-22 22:11:21 UTC
Size:
3.62 KB
patch
obsolete
>? fix.diff >? log4j >? log4j.diff >? src/java/org/apache/log4j/.AppenderSkeleton.java.swp >? src/java/org/apache/log4j/AppenderSkeleton.java.x >Index: src/java/org/apache/log4j/AppenderSkeleton.java >=================================================================== >RCS file: /home/cvspublic/logging-log4j/src/java/org/apache/log4j/AppenderSkeleton.java,v >retrieving revision 1.26 >diff -u -r1.26 AppenderSkeleton.java >--- src/java/org/apache/log4j/AppenderSkeleton.java 19 May 2004 13:15:42 -0000 1.26 >+++ src/java/org/apache/log4j/AppenderSkeleton.java 22 Sep 2004 17:37:14 -0000 >@@ -199,46 +199,51 @@ > * delegating actual logging to the subclasses specific {@link > * AppenderSkeleton#append} method. > */ >- public synchronized void doAppend(LoggingEvent event) { >+ public void doAppend(LoggingEvent event) { >+ if (!canAppend(event)) >+ return; >+ // Pre-render the message to prevent deadlock >+ event.getRenderedMessage(); >+ doAppend0(event); >+ } >+ >+ private synchronized void doAppend0(LoggingEvent event) { > if (closed) { > LogLog.error( > "Attempted to append to closed appender named [" + name + "]."); >- >- return; >- } >- >- // prevent re-entry >- if (guard) { > return; > } >- > try { >+ if (guard) >+ return; > guard = true; >+ append(event); >+ } finally { >+ guard = false; >+ } >+ } > >- if (!isAsSevereAsThreshold(event.getLevel())) { >- return; >- } >+ private synchronized boolean canAppend(LoggingEvent event) { >+ if (!isAsSevereAsThreshold(event.getLevel())) { >+ return false; >+ } > >- Filter f = this.headFilter; >+ Filter f = this.headFilter; > > FILTER_LOOP: >- while (f != null) { >- switch (f.decide(event)) { >- case Filter.DENY: >- return; >- >- case Filter.ACCEPT: >- break FILTER_LOOP; >- >- case Filter.NEUTRAL: >- f = f.getNext(); >- } >- } >+ while (f != null) { >+ switch (f.decide(event)) { >+ case Filter.DENY: >+ return false; > >- this.append(event); >- } finally { >- guard = false; >+ case Filter.ACCEPT: >+ break FILTER_LOOP; >+ >+ case Filter.NEUTRAL: >+ f = f.getNext(); >+ } > } >+ return true; > } > > /** >Index: tests/build.xml >=================================================================== >RCS file: /home/cvspublic/logging-log4j/tests/build.xml,v >retrieving revision 1.63 >diff -u -r1.63 build.xml >--- tests/build.xml 7 Sep 2004 17:16:04 -0000 1.63 >+++ tests/build.xml 22 Sep 2004 17:37:15 -0000 >@@ -724,6 +724,15 @@ > </junit> > </target> > >+ <target name="DeadlockTest" > <!-- depends="build"--> >+ <junit printsummary="yes" fork="no" haltonfailure="yes"> >+ <sysproperty key="runLen" value="100"/> >+ <classpath refid="tests.classpath"/> >+ <formatter type="plain" usefile="false"/> >+ <test name="org.apache.log4j.DeadlockTest" /> >+ </junit> >+ </target> >+ > > </project> > >Index: tests/src/java/org/apache/log4j/DeadlockTest.java >=================================================================== >RCS file: /home/cvspublic/logging-log4j/tests/src/java/org/apache/log4j/DeadlockTest.java,v >retrieving revision 1.3 >diff -u -r1.3 DeadlockTest.java >--- tests/src/java/org/apache/log4j/DeadlockTest.java 6 Mar 2004 16:36:37 -0000 1.3 >+++ tests/src/java/org/apache/log4j/DeadlockTest.java 22 Sep 2004 17:37:15 -0000 >@@ -31,8 +31,8 @@ > static long RUNLENGTH = 10000; > Logger logger = Logger.getLogger("DeadlockTest"); > >- public DeadlockTest() { >- super("DeadlockTest"); >+ public DeadlockTest(String name) { >+ super(name); > } > > protected void setUp() throws Exception {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 24159
:
9633
|
9634
|
9635
|
12840
|
17133
|
17612
|
17613
|
18997
|
18998
|
19004