Look like I needed to add a model=dataset.getDefaultModel() statement to
the commit block os that it reads:
if (cnt % 500 == 0) {
System.out.println( cnt );
dataset.commit();
dataset.begin( ReadWrite.WRITE );
model=dataset.getDefaultModel();
}
Why? I would expect that the model would track the transaction set on the
dataset.
Claude
On Mon, May 26, 2014 at 3:48 PM, Claude Warren <[email protected]> wrote:
> I have code that uses Jena-Libs 2.11.1 and executes the following block:
> (edited for brevity)
>
> dataset.begin( ReadWrite.WRITE);
>
> try {
>
> Model model = dataset.getDefaultModel();
>
> Property[] props = ( create an array of properties in Model)
>
> String dcsId = "someStringValue";
>
> int cnt = 0;
> ..... (get an iterator on a set of rows from a db table)
>
> while (rIter.hasNext())
>
> {
>
> cnt++;
>
> Row r = rIter.next();
>
> Resource eventR = model.createResource( makeURI( eventUri,
> r.getColumn(dcsId).toString()), typeURI);
>
> for (int i=0;i<cols.size();i++)
>
> {
>
> Object o = r.getColumn(i);
>
> if (props[i] != null && o != null)
>
> {
>
> String val = o.toString();
>
> if (val.length()>0)
>
> {
>
> eventR.addProperty( props[i], val); // <-- line 134 as noted
> in call stack below
>
> }
>
> }
>
> }
>
> // commit every 500 entries
>
> if (cnt % 500 == 0) {
>
> System.out.println( cnt );
>
> dataset.commit();
>
> dataset.begin( ReadWrite.WRITE );
>
> }
>
> }
>
> }
>
> }
>
> }
>
> finally {
>
> dataset.commit();
>
> }
>
>
> The table I am reading from contains several 10's of thousands of rows. I
> am basically converting from relational table to RDF graph.
>
> However, after the first 500 subjects are committed (5000 +/- triples) I
> run into the following problem while adding the 6th property to subject
> 502.
>
>
> DEBUG [main] (MySQLTableDef.java:261) - Query String: SELECT ... <--
> Initial debugging statement
>
> 500 <-- output from commit block in code above
>
> ERROR [main] (Log.java:94) - Not active: 1
>
> ERROR [main] (Log.java:94) - **** Not active: 1
>
>
> Now, I know this is a transaction error. But I think I have a
> transaction, as I restart one right after the commit after the 500th
> record. Log is made in the BlockMgrJournal.checkActive() and the call
> stack appears as follows:
> BlockMgrJournal.checkActive() line: 306
> BlockMgrJournal._promote(Block) line: 220
> BlockMgrJournal.promote(Block) line: 215
> BPTreeRecordsMgr(PageBlockMgr<T>).promote(Page) line: 110
> BPTreeRecords.promote() line: 119
> BPTreeRecords.internalInsert(Record) line: 131
> BPTreeNode.internalInsert(Record) line: 468
> BPTreeNode.internalInsert(Record) line: 468
> BPTreeNode.insert(BPTreeNode, Record) line: 212
> BPlusTree.addAndReturnOld(Record) line: 328
> BPlusTree.add(Record) line: 320
> TupleIndexRecord.performAdd(Tuple<NodeId>) line: 60
> TupleIndexRecord(TupleIndexBase).add(Tuple<NodeId>) line: 64
> TupleTable.add(Tuple<NodeId>) line: 96
> NodeTupleTableConcrete.addRow(Node...) line: 87
> TripleTable.add(Node, Node, Node) line: 58
> DatasetGraphTDB.addToDftGraph(Node, Node, Node) line: 100
> DatasetGraphTDB(DatasetGraphTriplesQuads).add(Node, Node, Node, Node)
> line: 47
> GraphTDB(GraphView).performAdd(Triple) line: 140
> GraphTDB.performAdd(Triple) line: 87
> GraphTDB(GraphBase).add(Triple) line: 202
> ModelCom.add(Resource, Property, RDFNode) line: 1159
> ModelCom.add(Resource, Property, String, String, boolean) line: 161
> ModelCom.add(Resource, Property, String) line: 149
> ResourceImpl.addProperty(Property, String) line: 241
> JenaSink.updateTable(UpdateBlock) line: 134
>
>
> Any help fixing this problem would be appreciated.
>
> Claude
> --
> I like: Like Like - The likeliest place on the web<http://like-like.xenei.com>
> LinkedIn: http://www.linkedin.com/in/claudewarren
>
--
I like: Like Like - The likeliest place on the web<http://like-like.xenei.com>
LinkedIn: http://www.linkedin.com/in/claudewarren