I have now tried to downgrade to 2.2.0, and I cannot reproduce the effect there (only tried filerepositories on this version).
I also tried using Derby/db on trunk, and saw "just" the delay. I will try out your patch. --Søren On Wednesday 07 September 2005 11:30, Stefano Bagnara wrote: > > > Can you try downgrading to 2.2.0 and verify wether the > > > > issue is there > > > > > or not? > > > > Will do that today. > > > > > Can you try using db/derby to check wether the issue is > > > > there or not? > > > > > > Sure. > > I'm testing a patch to both JDBC and Avalon repositories. > It seems working better than before. I'll run my stress-tests and > eventually commit the code so you can test it, too! > > Stefano > > ------ > > > Index: > james/src/java/org/apache/james/mailrepository/AvalonMailRepository.java > =================================================================== > --- > james/src/java/org/apache/james/mailrepository/AvalonMailRepository.java > (revision 233041) > +++ > james/src/java/org/apache/james/mailrepository/AvalonMailRepository.java > (working copy) > @@ -205,6 +205,7 @@ > // synchronized (this) { > // notifyAll(); > // } > + notify(); > return true; > } else { > return false; > Index: > james/src/java/org/apache/james/mailrepository/JDBCMailRepository.java > =================================================================== > --- james/src/java/org/apache/james/mailrepository/JDBCMailRepository.java > (revision 233041) > +++ james/src/java/org/apache/james/mailrepository/JDBCMailRepository.java > (working copy) > @@ -494,7 +494,7 @@ > * > * @return true if successfully released the lock, false otherwise > */ > - public synchronized boolean unlock(String key) { > + public boolean unlock(String key) { > if (lock.unlock(key)) { > if ((DEEP_DEBUG) && (getLogger().isDebugEnabled())) { > StringBuffer debugBuffer = > @@ -508,6 +508,7 @@ > getLogger().debug(debugBuffer.toString()); > } > // notifyAll(); > + notify(); > return true; > } else { > return false; > @@ -521,7 +522,7 @@ > * > * @return true if successfully obtained the lock, false otherwise > */ > - public synchronized boolean lock(String key) { > + public boolean lock(String key) { > if (lock.lock(key)) { > if ((DEEP_DEBUG) && (getLogger().isDebugEnabled())) { > StringBuffer debugBuffer = > @@ -546,7 +547,17 @@ > */ > public void store(MailImpl mc) throws MessagingException { > Connection conn = null; > + boolean wasLocked = true; > + String key = mc.getName(); > try { > + synchronized(this) { > + wasLocked = lock.isLocked(key); > + > + if (!wasLocked) { > + //If it wasn't locked, we want a lock during the > store > + lock.lock(key); > + } > + } > conn = datasource.getConnection(); > > //Need to determine whether need to insert this record, or > update it. > @@ -775,6 +786,10 @@ > throw new MessagingException("Exception caught while storing > mail Container: " + e); > } finally { > theJDBCUtil.closeJDBCConnection(conn); > + if (!wasLocked) { > + //If it wasn't locked, we need to now unlock > + lock.unlock(key); > + } > } > } > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] -- Søren Hilmer, M.Sc. R&D manager Phone: +45 72 30 64 00 TietoEnator IT+ A/S Fax: +45 72 30 64 02 Ved Lunden 12 Direct: +45 72 30 64 57 DK-8230 Åbyhøj Email: soren.hilmer <at> tietoenator.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]