On 19.04.2012 00:02, Dave wrote:
Hi everyone. First time poster. I thought I'd share my experiences and
findings on the SMTPAppender issues.
I've been struggling to get the STMPAppender working consistently ever
since version 0.9.29. I've noticed on this mailing list that it might
have been related to JDK 1.5. So I've upgraded our environment to JDK
1.6 (along with upgrading logback to 1.0.1) and every seemed to be
working fine.
Then a few days ago, I didn't receive an e-mail from a STMPAppender
event that I knew for sure I was supposed to get. I isolated and
reproduced the event 10 consecutive times, with about 2 seconds between
events. When I checked my email log, I only received 9 messages.
I ran the test again, and got all 10 messages as expected. Tried again
once more, and again got 10 messages. I decided to run my test one more
time before I put it to rest, but this time I got 9 messages.
After browsing the mailing lists for this issue, I saw Ceki's sample
code (posted March 5) testing the ExecutorService. I clipped it out and
tried it on my machine (running jdk1.6.0_31). I've found that this too
was giving inconsistent results. Out of the three processes it suppose
to execute, I get results of 3,3,1,0,0,3,3,1,3 .... I was surprised to
see it not execute any processes at times. When running on JDK 1.5, I'm
unable to get any results.
As you mentioned, setting ThreadPoolExecutor's corePoolSizeto 0 does not
work in JDK 1.5. Thank you for investigating this issue. As for
incomplete transmission under JDK 1.6, I am unable to reproduce the
problem unless System.exit() is invoked to exit the program.
Here is the application I am using.
package ch.qos.logback.classic.issue.lbclassic232;
import ch.qos.logback.core.Context;
import ch.qos.logback.core.ContextBase;
public class Barebones {
public static void main(String[] args) {
Context context = new ContextBase();
for(int i = 0; i < 3; i++) {
SenderRunnable senderRunnable = new SenderRunnable(""+i);
context.getExecutorService().execute(senderRunnable);
}
System.out.println("done");
//System.exit(0);
}
static class SenderRunnable implements Runnable {
String id;
SenderRunnable(String id) {
this.id = id;
}
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
System.out.println("SenderRunnable " +id);
}
}
}
Now that the problem affecting JDK 1.5 has been identified a fix on the
way. This should fix http://jira.qos.ch/browse/LBCLASSIC-323
Anyways, that's my 0.02 cents that I can offer on this. If there's any
other help I can offer pleas let me know
Dave, thank you for investigating this problem. Much appreciated.
-dave
--
Ceki
http://twitter.com/#!/ceki
_______________________________________________
Logback-user mailing list
[email protected]
http://mailman.qos.ch/mailman/listinfo/logback-user