[ 
https://issues.apache.org/jira/browse/JCR-1322?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vijai Kalyan updated JCR-1322:
------------------------------

    Affects Version/s:     (was: 1.3.3)
                       1.4

You are correct. The revision number should be 1.4. Our local version is 1.3.3 
patched with the various changes.

I am referring to the following lines in DatabaseJournal.java 
(http://svn.apache.org/repos/asf/jackrabbit/tags/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/DatabaseJournal.java)

        updateGlobalStmtSQL =
                "update " + schemaObjectPrefix + "GLOBAL_REVISION " +
                "set revision_id = revision_id + 1";
        selectGlobalStmtSQL =
                "select revision_id " +

Note the lower case column names for 'revision_id'. These are created in upper 
case however.

> Cluster information is not persisted to database when connected to case 
> sensitive MS SQL Server 2005
> ----------------------------------------------------------------------------------------------------
>
>                 Key: JCR-1322
>                 URL: https://issues.apache.org/jira/browse/JCR-1322
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: clustering
>    Affects Versions: 1.4
>         Environment: Microsoft SQL Server 2005 on Windows Server. Database is 
> setup to be case-sensitive.
>            Reporter: Vijai Kalyan
>
> After a call to Session::save, we observed that cluster information was not 
> written to the ${schemaObjectPrefix}JOURNAL and 
> ${schemaObjectPrefix}GLOBAL_REVISION tables. We tested against Oracle 10 
> database servers and MS Sql Server 2005 servers. The problem was noticed only 
> with MS Sql Server 2005. 
> Initially, the problem was masked since the test was written as part of our 
> unit test environment and the exceptions generated by JDBC were not showing 
> up in the logs. A separate test with was carried out as shown by the code 
> below
> <pre>
> import java.io.FileInputStream;
> import javax.jcr.Node;
> import javax.jcr.Repository;
> import javax.jcr.Session;
> import javax.jcr.SimpleCredentials;
> import org.apache.jackrabbit.core.TransientRepository;
> import org.apache.jackrabbit.core.config.RepositoryConfig;
> public class Main
> {
>     public static void main(String[] args)
>         throws Exception
>     {
>         System.setProperty("org.apache.jackrabbit.core.cluster.node_id", 
> "testid");
>         
>         RepositoryConfig config = RepositoryConfig.create(new 
> FileInputStream("repository.xml"), "repository");
>         
>         Repository repository = new TransientRepository();
>         
>         Session session = repository.login(new SimpleCredentials("username", 
> "password".toCharArray()));
>         
>         Node root = session.getRootNode();
>         
>         root.addNode("node1");
>         root.addNode("node2");
>         root.addNode("node3");
>         
>         session.save();
>     }
> }
> </pre>
> The configuration file used to configure the repository is attached.
> After debugging this, we obtained the exceptions that were previously not 
> visible. Note that, JackRabbit continues to run (is that because the cluster 
> code is running in a separate thread?) even after this exception. The problem 
> was that the 'revision_id' field did not exist. The mssql.ddl schema file 
> sets up the table names in capitals. However, at least two of the SQL 
> statements in DatabaseJournal use lower case table names. For example:-
> <pre>
>         updateGlobalStmt = con.prepareStatement(
>                 "update " + schemaObjectPrefix + "global_revision " +
>                 "set revision_id = revision_id + 1");
>         selectGlobalStmt = con.prepareStatement(
>                 "select revision_id " +
>                 "from " + schemaObjectPrefix + "global_revision");
> </pre>
> An additional error is that the mssql.ddl file is missing the following:
> <pre>
> # Inserting the one and only revision counter record now helps avoiding race 
> conditions
> insert into ${schemaObjectPrefix}GLOBAL_REVISION VALUES(0)
> </pre>
> Fixing the above two issues, fixed the problem with MS SQL Server 2005.

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