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]