[ 
https://issues.apache.org/jira/browse/JCR-1050?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12520258
 ] 

Stefan Guggisberg commented on JCR-1050:
----------------------------------------

discussion on the dev list: 

---------- Forwarded message ----------
From: hannonpi <[EMAIL PROTECTED]>
Date: Aug 8, 2007 2:20 AM
Subject: Re: [jira] Created: (JCR-1050) Remove synchronization from JNDI data 
sources
To: dev@jackrabbit.apache.org



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.

> Remove synchronization from JNDI data sources
> ---------------------------------------------
>
>                 Key: JCR-1050
>                 URL: https://issues.apache.org/jira/browse/JCR-1050
>             Project: Jackrabbit
>          Issue Type: Improvement
>          Components: core
>            Reporter: Padraic Hannon
>         Attachments: JNDI_Datasource_Changes.diff
>
>
> Using datasources one should be able to rely on the application server to 
> manage PreparedStatement caches therefore pre-creating and holding onto the 
> connection for long periods of time should not be needed. This relates to 
> improvement JCR-313, however, that change did not address the benefits one 
> could see in using an application server controlled datasource. 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. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to