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