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

Hitesh Shah commented on JCR-964:
---------------------------------

I don't have a test case or sample instructions on how to reproduce the issue.  
It looks like the issue is not what I was expecting either.  It looks like 
there's a different issue, based on the stacktraces I'm seeing on my server 
log.  Maybe this post needs to go into a different thread, but I'm kinda 
pressed for time to figure out a solution, so I'll let the administrators move 
me (thanks in advance!!).

Quick rundown of what happens:

JackRabbit is being used as a document repository at my client.  Along with the 
actual document, they also want to store metadata for the document, including 
filename, document creator, upload timestamp, document category, etc.  My 
design/implementation is to create a node for each document, with a property 
for each metadata attribute.  Only a subset of the fields are user-updatable; 
most of the fields are immutable.

Documents get created and retrieved just fine, for the most part.  However, 
every once in a while, I get an exception when I'm trying to read one of the 
user-updatable fields.  Most times, it requires a user update to trigger the 
error; though I have seen instances where the first time I try to access the 
new document node, I get the error.  But, once the error starts occuring for a 
specific property, it happens consistently for that property.

As far as I know, there is no background database activity on the JackRabbit 
tables.

Any assistance would be greatly appreciated.

Thanks!!



Here's a sample of my retrieval code:
if (node.hasProperty(DocumentRepositoryConstants.PREFIX_FILENAME))
        
vb.setFilename(node.getProperty(DocumentRepositoryConstants.PREFIX_FILENAME).getString());



Here's a sample of my insert/update code:
if (vb.getFilename() != null)
        node.setProperty(DocumentRepositoryConstants.PREFIX_FILENAME, 
vb.getFilename());




Here's the stacktrace:
org.apache.jackrabbit.core.state.ItemStateException: failed to read property 
state: 
d081fabb-9ddf-41a4-9bba-b607b11a5215/{http:\\www.blah.com\blah\jcr}filename
        at 
org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.load(DatabasePersistenceManager.java:392)
        at 
org.apache.jackrabbit.core.state.SharedItemStateManager.loadItemState(SharedItemStateManager.java:1155)
        at 
org.apache.jackrabbit.core.state.SharedItemStateManager.getNonVirtualItemState(SharedItemStateManager.java:1080)
        at 
org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState(SharedItemStateManager.java:252)
        at 
org.apache.jackrabbit.core.state.LocalItemStateManager.getPropertyState(LocalItemStateManager.java:120)
        at 
org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:152)
        at 
org.apache.jackrabbit.core.state.XAItemStateManager.getItemState(XAItemStateManager.java:226)
        at 
org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState(SessionItemStateManager.java:175)
        at 
org.apache.jackrabbit.core.ItemManager.createItemInstance(ItemManager.java:493)
        at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:324)
        at org.apache.jackrabbit.core.NodeImpl.getProperty(NodeImpl.java:2506)
        at 
MyDocumentRepositoryManager.mapNodeToViewBean(DocumentRepositoryManagerNEW.java:365)




And here's a snippet of my repository.xml configuration file:
<Repository>
        <FileSystem class="MySimpleDbFileSystem">
                <param name="driver" value="COM.ibm.db2.jdbc.app.DB2Driver" />
                <param name="url" value="jdbc:db2:MYDB" />
                <param name="user" value="USER" />
                <param name="password" value="PASSWORD" />
                <param name="schema" value="SCHEMA" />
                <param name="schemaObjectPrefix" value="JCR_WS_" />
                <param name="externalBLOBs" value="false" />
        </FileSystem>
        <Security appName="Jackrabbit">
                <AccessManager 
class="org.apache.jackrabbit.core.security.SimpleAccessManager" />
        </Security>
        <Workspaces rootPath="${rep.home}/workspaces" 
defaultWorkspace="default" />
        <Workspace name="${wsp.name}">
                <FileSystem class="MySimpleDbFileSystem">
                        <param name="driver" 
value="COM.ibm.db2.jdbc.app.DB2Driver" />
                        <param name="url" value="jdbc:db2:MYDB" />
                        <param name="user" value="USER" />
                        <param name="password" value="PASSWORD" />
                        <param name="schema" value="SCHEMA" />
                        <param name="schemaObjectPrefix" value="JCR_WS_" />
                        <param name="externalBLOBs" value="false" />
                </FileSystem>
                <PersistenceManager class="MySimpleDbPersistenceManager">
                        <param name="driver" 
value="COM.ibm.db2.jdbc.app.DB2Driver" />
                        <param name="url" value="jdbc:db2:MYDB" />
                        <param name="user" value="USER" />
                        <param name="password" value="PASSWORD" />
                        <param name="schema" value="SCHEMA" />
                        <param name="schemaObjectPrefix" value="JCR_WS_" />
                        <param name="externalBLOBs" value="false" />
                </PersistenceManager>
        </Workspace>
        
        <!-- Versioning section -->
</Repository>

> Cannot rebuild corrupt or missing search index from DataSource
> --------------------------------------------------------------
>
>                 Key: JCR-964
>                 URL: https://issues.apache.org/jira/browse/JCR-964
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: indexing
>    Affects Versions: 1.3
>            Reporter: Noah Vihinen
>            Priority: Blocker
>
> If the search index becomes corrupt, and the auto-repair process cannot fix 
> the search index (which is common in our experience), there is no way to 
> recover the jackrabbit instance.  The only possible work-around is when 
> you're working with a cluster, and you manually copy an intact index from one 
> of the other clusters.  It hasn't been determined whether this leads to other 
> issues though.
> Given a Jackrabbit repository, shouldn't it be possible to start the 
> repository on top of that single data source in the absence of a search 
> index, and have the search index rebuilt from the information in the DB?
> Below is the stack trace we get when restarting a repository with no search 
> index.
> 15:32:13,622 ERROR RepositoryImpl:389 - [main] Failed to initialize workspace 
> 'default'
> javax.jcr.RepositoryException: Error indexing root node: 
> a7479d92-4b59-4f44-978a-06da1ec7b8d1: Error indexing root node: 
> a7479d92-4b59-4f44-978a-06da1ec7b8d1: Error indexing root node: 
> a7479d92-4b59-4f44-978a-06da1ec7b8d1
>         at 
> org.apache.jackrabbit.core.SearchManager.initializeQueryHandler(SearchManager.java:476)
>         at 
> org.apache.jackrabbit.core.SearchManager.<init>(SearchManager.java:231)
>         at 
> org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.getSearchManager(RepositoryImpl.java:1643)
>         at 
> org.apache.jackrabbit.core.RepositoryImpl.initWorkspace(RepositoryImpl.java:633)
>         at 
> org.apache.jackrabbit.core.RepositoryImpl.initStartupWorkspaces(RepositoryImpl.java:386)
>         at 
> org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:293)
>         at 
> org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:584)
>         at 
> org.apache.jackrabbit.core.jndi.BindableRepository.createRepository(BindableRepository.java:174)
>         at 
> org.apache.jackrabbit.core.jndi.BindableRepository.init(BindableRepository.java:138)
>         at 
> org.apache.jackrabbit.core.jndi.BindableRepository.create(BindableRepository.java:125)
>         at 
> org.apache.jackrabbit.core.jndi.BindableRepositoryFactory.createInstance(BindableRepositoryFactory.java:59)
>         at 
> org.apache.jackrabbit.core.jndi.BindableRepositoryFactory.getObjectInstance(BindableRepositoryFactory.java:81)
>         at 
> org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:140)
>         at 
> javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
>         at org.apache.naming.NamingContext.lookup(NamingContext.java:793)
>         at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
>         at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
>         at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
>         at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
>         at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
>         at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
>         at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
>         at org.apache.naming.SelectorContext.lookup(SelectorContext.java:137)
>         at javax.naming.InitialContext.lookup(InitialContext.java:351)

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