jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hannonpi <...@wasabicowboy.com>
Subject Re: [jira] Created: (JCR-1050) Remove synchronization from JNDI data sources
Date Wed, 08 Aug 2007 00:20:11 GMT

See reply threaded below. Perhaps this should be moved into the Jira ticket?

-paddy


Thomas Mueller-6 wrote:
> 
> Hi,
> 
> I'm not sure if I understand this request for improvement.
> 
>> Using datasources
> 
> So you suggest to use DataSource.getConnection(..) instead of
> DriverManager.getConnection(..)? How do you get / create the
> datasource object, using JNDI? What about embedded applications where
> JNDI is not available?
> 
> <response>
> I attached code to the ticket. Basically, this assumes that one is running
> inside an application server container. I am not suggesting this be the
> only driver, just that the JNDI drive should be built in such a way as to
> make use of the facilities provided by JEE containers (datasources, jta,
> etc).
> </response>
> 
>> one should be able to rely on the application server to manage
>> PreparedStatement caches
> 
> Do you suggest to create a new PreparedStatement for each request?
> 
> <response>
> Yes, let the datasource or DB handle caching the PreparedStatements rather
> than holding them in an internal map.
> </response>
> 
>> therefore pre-creating and holding onto the connection for long periods
>> of time should not be needed.
> 
> Could you explain the advantages of 'not holding onto the connection'?
> I know that MySQL closes connections after 8 hours idle time, are
> there any other advantages?
> 
> <response>
> Why hold onto resources one is not using? Let other threads take them.
> </response>
> 
>> This relates to improvement JCR-313, however, that change did not address
>> the benefits one could see in using an application server controlled
>> datasource.
> 
> What are those benefits?
> 
> <response>
> Less code in jackrabbit for managing transactions and less synchronization
> leading to less potential threading conflicts. 
> </response>
> 
>> Even if jackrabbit does aim to use an embedded database such a system
>> could be configured to use datasources and
> 
>> could benefit from the removal of the synchronization.
> 
> In what way would removal of the synchronization be a benefit? Do you
> think it would be faster without synchronization? How would you make
> sure statements are executed in the right order?
> 
> <response>
> Our experience over the last year or so of using CQ and CRX has lead us to
> believe that synchronization has serious performance penalties in high
> traffic situations. In general I would think that the fewer synchronized
> parts the better. This is not a request to entirely do away with
> synchronized blocks. However, looking at the DB drivers it seemed that the
> sole purpose of such blocks was to handle the fact that statements and
> connections where held open for long periods by the driver. I would assume
> that allowing multiple threads to read would have serious performance
> implications and that allowing the container and db to manage transactions
> one could decide on the transaction isolation level outside of the core
> code to deal with dirty reads etc.
> </response>
> 
> Thanks,
> Thomas
> 
> 

-- 
View this message in context: http://www.nabble.com/-jira--Created%3A-%28JCR-1050%29-Remove-synchronization-from-JNDI-data-sources-tf4203578.html#a12044986
Sent from the Jackrabbit - Dev mailing list archive at Nabble.com.


Mime
View raw message