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

Dominique Pfister commented on JCR-927:
---------------------------------------

Hi Jukka,

I'm currently processing Hemanta's input and adapting the DatabaseJournal 
class. Unconditionally reestablishing the connection and retrying a statement 
if some error occurs does not make sense in every circumstance: e.g. if a 
journal record is appended, the sequence of method calls is as follows:

doLock(): will increment the global revision and lock the global revision 
table. 
append(): will use that incremented global revision to actually insert a record.

if a connection is dropped in between, retrying to insert a record WITHOUT the 
global revision table still being locked may lead to inconsistencies. I 
therefore tend to apply some more defensive strategy here.

With respect to the JNDI datasource feature, I'd like to include this feature 
directly inside the DatabaseJournal class, where the user may either specify 
url/driver or datasource as arguments. I prefer this to the separate class 
construct.

Kind regards
Dominique

> DatabaseJournal needs connection reestablishment logic
> ------------------------------------------------------
>
>                 Key: JCR-927
>                 URL: https://issues.apache.org/jira/browse/JCR-927
>             Project: Jackrabbit
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.3
>            Reporter: Hemanta Gupta
>            Priority: Minor
>         Attachments: JNDIDatabaseJournal.java
>
>
> The DB based file system and persistence manager implementations have logic 
> for connection reestablishment in case the DB server bounces while the 
> repository is running, but the DB based journal implementation doesn't.

-- 
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