it would be easier to review if you send a diff -u
there is a reason why we like diffs compared to random blocks of code.

On 29/04/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> When james is configured with many processors then the spooling processing
> is really slow.
> 
> It takes a minimum of 1 minute per processor to fully spool a single email.
> 
> JDBCSpoolRepository has a 60 seconds wait, and the spool threads only
> complete 1 processor and return the mail to the spool.
> 
> Looking at process() in the JamesSpoolManager I removed the "return" before
> the catch and moved the last logging line inside the catch block.
> 
> I think this is conceptually correct but I would like to know your opinion
> about.
> 
> Here is my modified process():
> 
> protected void process(MailImpl mail) {
>   while (true) {
>     String processorName = mail.getState();
>     if (processorName.equals(Mail.GHOST)) {
>       //This message should disappear
>       return;
>     }
>     try {
>       LinearProcessor processor
>         = (LinearProcessor)processors.get(processorName);
>       if (processor == null) {
>         StringBuffer exceptionMessageBuffer =
>           new StringBuffer(128)
>             .append("Unable to find processor ")
>             .append(processorName)
>             .append(" requested for processing of ")
>             .append(mail.getName());
>         String exceptionMessage = exceptionMessageBuffer.toString();
>         getLogger().debug(exceptionMessage);
>         mail.setState(Mail.ERROR);
>         throw new MailetException(exceptionMessage);
>       }
>       StringBuffer logMessageBuffer = null;
>       if (getLogger().isDebugEnabled()) {
>         logMessageBuffer =
>           new StringBuffer(64)
>               .append("Processing ")
>               .append(mail.getName())
>               .append(" through ")
>               .append(processorName);
>         getLogger().debug(logMessageBuffer.toString());
>       }
>       processor.service(mail);
>       if (getLogger().isDebugEnabled()) {
>         logMessageBuffer =
>           new StringBuffer(128)
>               .append("Processed ")
>               .append(mail.getName())
>               .append(" through ")
>               .append(processorName);
>         getLogger().debug(logMessageBuffer.toString());
>         getLogger().debug("Result was " + mail.getState());
>       }
>       // removing this return could create loops in processing.
>       // btw this speed up processing.
>       // return;
>     } catch (Throwable e) {
>       // This is a strange error situation that shouldn't ordinarily
>       // happen
>       StringBuffer exceptionBuffer =
>         new StringBuffer(64)
>             .append("Exception in processor <")
>             .append(processorName)
>             .append(">");
>       getLogger().error(exceptionBuffer.toString(), e);
>       if (processorName.equals(Mail.ERROR)) {
>         // We got an error on the error processor...
>         // kill the message
>         mail.setState(Mail.GHOST);
>         mail.setErrorMessage(e.getMessage());
>       } else {
>         //We got an error... send it to the requested processor
>         if (!(e instanceof MessagingException)) {
>           //We got an error... send it to the error processor
>           mail.setState(Mail.ERROR);
>         }
>         mail.setErrorMessage(e.getMessage());
>       }
>       if (getLogger().isErrorEnabled()) {
>         StringBuffer logMessageBuffer =
>           new StringBuffer(128)
>               .append("An error occurred processing ")
>               .append(mail.getName())
>               .append(" through ")
>               .append(processorName);
>         getLogger().error(logMessageBuffer.toString());
>         getLogger().error("Result was " + mail.getState());
>       }
>     }
>   }
> }
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to