Bug #8071
Prov relationship can't be indexed on CN
100%
Description
We just found that the prv relationship can't be index on CN. But it can be indexed on Metacat.
History
#1 Updated by Jing Tao over 7 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
The failure reason was that RdfXmlSubprocessor couldn't access the triple store. When the triple store is initialized, it will create the store at the location either specified by a property or the default value ./tdb. Since we didn't set the property, somehow cn looked at the location "/tdb" and failed because the access permission issue.
I added a new property file and it specifies the location on /var/dataone/index/tdb. I also modified the postinst of dataone-cn-index by adding the code to create directory. The new code was depolyed to cn-dev and it worked.
The change was committed to the 2.3 branches as well.
#2 Updated by Jing Tao over 7 years ago
- Status changed from Closed to In Progress
- % Done changed from 100 to 30
We experienced a null exception when the prov subprocessor indexes the rdf doc:
java.lang.NullPointerException
at com.hp.hpl.jena.tdb.base.file.BufferChannelFile.size(BufferChannelFile.java:133)
at com.hp.hpl.jena.tdb.transaction.Journal.size(Journal.java:294)
at com.hp.hpl.jena.tdb.transaction.JournalControl.replay(JournalControl.java:238)
at com.hp.hpl.jena.tdb.transaction.JournalControl.replay(JournalControl.java:232)
at com.hp.hpl.jena.tdb.transaction.TransactionManager.processDelayedReplayQueue(TransactionManager.java:560)
at com.hp.hpl.jena.tdb.transaction.TransactionManager.closedown(TransactionManager.java:281)
at com.hp.hpl.jena.tdb.StoreConnection.expel(StoreConnection.java:201)
at com.hp.hpl.jena.tdb.StoreConnection.release(StoreConnection.java:187)
at com.hp.hpl.jena.tdb.sys.TDBMaker.releaseLocation(TDBMaker.java:62)
at com.hp.hpl.jena.tdb.TDBFactory._release(TDBFactory.java:116)
at com.hp.hpl.jena.tdb.TDBFactory.release(TDBFactory.java:84)
at org.dataone.cn.indexer.annotation.RdfXmlSubprocessor.process(RdfXmlSubprocessor.java:261)
at org.dataone.cn.indexer.annotation.RdfXmlSubprocessor.processDocument(RdfXmlSubprocessor.java:119)
at org.dataone.cn.indexer.SolrIndexService.processObject(SolrIndexService.java:231)
at org.dataone.cn.indexer.SolrIndexService.insertIntoIndex(SolrIndexService.java:304)
at org.dataone.cn.index.processor.IndexTaskUpdateProcessor.process(IndexTaskUpdateProcessor.java:50)
at org.dataone.cn.index.processor.IndexTaskProcessor.processTask(IndexTaskProcessor.java:286)
at org.dataone.cn.index.processor.IndexTaskProcessor.access$000(IndexTaskProcessor.java:80)
at org.dataone.cn.index.processor.IndexTaskProcessor$1.run(IndexTaskProcessor.java:263)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
#3 Updated by Jing Tao over 7 years ago
Another exception:
cn-index-processor-daemon.log.1-java.lang.NullPointerException
cn-index-processor-daemon.log.1- at com.hp.hpl.jena.tdb.nodetable.NodeTableCache._idForNode(NodeTableCache.java:125)
cn-index-processor-daemon.log.1- at com.hp.hpl.jena.tdb.nodetable.NodeTableCache.getNodeIdForNode(NodeTableCache.java:79)
cn-index-processor-daemon.log.1- at com.hp.hpl.jena.tdb.nodetable.NodeTableWrapper.getNodeIdForNode(NodeTableWrapper.java:49)
cn-index-processor-daemon.log.1- at com.hp.hpl.jena.tdb.nodetable.NodeTableInline.getNodeIdForNode(NodeTableInline.java:59)
cn-index-processor-daemon.log.1- at com.hp.hpl.jena.tdb.nodetable.NodeTupleTableConcrete.idForNode(NodeTupleTableConcrete.java:189)
cn-index-processor-daemon.log.1- at com.hp.hpl.jena.tdb.nodetable.NodeTupleTableConcrete.findAsNodeIds(NodeTupleTableConcrete.java:142)
cn-index-processor-daemon.log.1- at com.hp.hpl.jena.tdb.store.DatasetGraphTDB._containsGraph(DatasetGraphTDB.java:150)
cn-index-processor-daemon.log.1- at com.hp.hpl.jena.tdb.store.DatasetGraphTDB.containsGraph(DatasetGraphTDB.java:142)
cn-index-processor-daemon.log.1- at com.hp.hpl.jena.sparql.core.DatasetGraphTrackActive.containsGraph(DatasetGraphTrackActive.java:86)
cn-index-processor-daemon.log.1- at com.hp.hpl.jena.sparql.core.DatasetImpl.containsNamedModel(DatasetImpl.java:227)
cn-index-processor-daemon.log.1- at org.dataone.cn.indexer.annotation.RdfXmlSubprocessor.process(RdfXmlSubprocessor.java:201)
cn-index-processor-daemon.log.1- at org.dataone.cn.indexer.annotation.RdfXmlSubprocessor.processDocument(RdfXmlSubprocessor.java:119)
cn-index-processor-daemon.log.1- at org.dataone.cn.indexer.SolrIndexService.processObject(SolrIndexService.java:231)
cn-index-processor-daemon.log.1- at org.dataone.cn.indexer.SolrIndexService.insertIntoIndex(SolrIndexService.java:304)
cn-index-processor-daemon.log.1- at org.dataone.cn.index.processor.IndexTaskUpdateProcessor.process(IndexTaskUpdateProcessor.java:50)
cn-index-processor-daemon.log.1- at org.dataone.cn.index.processor.IndexTaskProcessor.processTask(IndexTaskProcessor.java:286)
cn-index-processor-daemon.log.1- at org.dataone.cn.index.processor.IndexTaskProcessor.access$000(IndexTaskProcessor.java:80)
cn-index-processor-daemon.log.1- at org.dataone.cn.index.processor.IndexTaskProcessor$1.run(IndexTaskProcessor.java:263)
cn-index-processor-daemon.log.1- at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
#4 Updated by Jing Tao over 7 years ago
In the original implementation, the backend directory was share by the all the resourcemap. It worked for the single processing thread. However, we use multiple to index resource map, this causes the issue. Now we use a dedicated directory for each object, the exceptions was gone. We also make sure the directories will be removed when process is done: the remove is in the final statement; the directories are set deleteOnExit.
#5 Updated by Jing Tao over 7 years ago
- Status changed from In Progress to Closed
- % Done changed from 30 to 100