X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.simple%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Flog4j%2FSlcExecutionAppender.java;h=96d6ed9fad29744e53aacecc08e68da4904427a7;hb=525af6a9f3372fa609225fc6da9ecd8e95c9c025;hp=f8930fff8f9ae344d9c1f4014c9e18611c8eab33;hpb=9b2422e7198df6f34282a805058dd5f497417318;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java index f8930fff8..96d6ed9fa 100644 --- a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java +++ b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java @@ -17,6 +17,7 @@ package org.argeo.slc.log4j; import java.util.Date; +import java.util.concurrent.BlockingQueue; import org.apache.log4j.AppenderSkeleton; import org.apache.log4j.Level; @@ -110,8 +111,16 @@ public class SlcExecutionAppender extends AppenderSkeleton { try { dispatching.set(true); - ((ProcessThreadGroup) currentThread.getThreadGroup()) - .getSteps().add(step); + BlockingQueue steps = ((ProcessThreadGroup) currentThread + .getThreadGroup()).getSteps(); + if (steps.remainingCapacity() == 0) { + stdOut("WARNING: execution steps queue is full, skipping step: " + + step); + // FIXME understand why it block indefinitely: the queue + // should be emptied by the logging thread + } else { + steps.add(step); + } } finally { dispatching.set(false); } @@ -134,7 +143,7 @@ public class SlcExecutionAppender extends AppenderSkeleton { // } /** For development purpose, since using regular logging is not easy here */ - private static void stdOut(Object obj) { + static void stdOut(Object obj) { System.out.println(obj); }