james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hasan Ceylan" <hcey...@biletix.com>
Subject RE: JDBC Repository - Thoughts
Date Wed, 13 Apr 2005 19:52:44 GMT
Thanks for the promt answer. 
My remarks are marked with HC: in the beginning

-----Original Message-----
From: Danny Angus [mailto:danny.angus@gmail.com]
Sent: Wed 4/13/2005 3:44 PM
To: James Developers List
Subject: Re: JDBC Repository - Thoughts
On 4/13/05, Hasan Ceylan <hceylan@biletix.com> wrote:
> Hello,
> I have recently downloaded and inspected james. I would like to congratulate the hard
work and effort
> put into the product by all developers.
> Howeever,
> I have found some points in JDBC Repository that needs some care.
> Correct me if I am wrong in following
> - James does not have a database connection pooling impl.

Yes it does it uses dbcp from jakarta commons.

HC: I am not so much knowledgable on dbcp I should look into that.
What I did was just uncommenting the mysql inbox in the sample configuration file...

> - When you connect to james pop3 server
>     a) It first fetches all the message headers
>     b) Then it fetches the message details for each of the message.

This is pretty much the way that POP3 works, there is no requirement
for messages to be returned just because the list is requested.

HC: I agree. It is an enforcement of the protocol. But fecthing the full message in the second

phase is done by one select at a time for each of the message in the table. These can be bundled
into group of tens or hundreds. This can even be a parameter in the configuration. But while

reading ahead the 5000+ mail into memory, clients timeout waiting for the first one to be

returned the to the client so timeout counter resets to zero.

On socket exhaustion this is client sockets to MYSQL server.

> Sockets exhaust in the OS (OK you can enlarge the client socket port window and reduce
the time_wait value)
What sockets? db connection or pop3 connection?

> Takes hell a lot of time just to open the folder and causes the client to timeout.
If you mean it takes time to download the mail using pop3 I would
suggest that this is a limitation of the protocol. It is a serial
protocol only permitting one connection per account at any time and
one command to be issued at a time on that connection.
> Since most of the web mails and some humanbeings prefer the keep the messages in the
repository until its deleted permanantly, this way of implementation lowers the usability
of james.

Sadly James is following the pop3 protocol, we would be wrong to load
all of the mail from the database into memory if all that was
requested was the list. and pop3 only allows one message to be
retrieved at a time, by name or sequence number.

We could try some kind of read-ahead optimisation, perhaps to allow
James to have the next message, or set of messages, cached ready to
send when the next pop3 RETR command is recieved. but this would
require that we could guess what message was going to be requested.

HC: I think, select -> send -> select -> send would solve the %90 problem  
taking 1/10th of development effort comparing to the above suggestion.

HC: You haven't commented on the second part of mail which is about
using dynamic email addresses to respond to transaction based requests.
Any thoughts?

Hasan Ceylan

To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org

View raw message