Hi Andy,
I picked up a snapshot of 2.11.2 and tried running our test using these
libraries.
Adding the changes you suggested seems to have stopped the exception "
BlockException: No such block", the but we are now seeing other symptoms,
which we saw previously but not as frequently as we are now.
The change in behaviour seems to be result of the SystemTDB.NullOut = true
; as I also tried various version of the listStatements and this gave the
same results, What does the SystemTDB.NullOut=true do?
What we are now seeing is data not being returned correctly.
We initially populate the database with a Resource with 1000 Properties,
then in the ReaderThread we query the database, using the following:
StmtIterator found = model.listStatements((Resource)null,
(Property)null, (RDFNode)null);
we are expecting to get back 1000 statements when we perform the
count = found.toList().size();
however we occasionally get a batch of results that show 0 or non 1000
statements being returned, then after several more reads this goes back to
getting 1000 statements and everything continues as normal.
We need to determine why we occasionally dont get the 1000 statements
returned that we are expecting. Any advice you caould provide would be
great.
Thanks
Steve Groeger
IBM WebSphere Service Registry Development
MP 211, Hursley
Tel: (44) 1962 816911 Mobex: 279990 Mobile: 07718 517 129
Fax (44) 1962 816800
Lotus Notes: Steve Groeger/UK/IBM
Internet: [email protected]
From: Andy Seaborne <[email protected]>
To: "[email protected]" <[email protected]>,
Date: 31/01/2014 09:42
Subject: Re: BlockException: No such block
Steve,
I have tried more runs, both on disk and using an in-memory (hopefully
faster so the problem arises earlier). No luck, no more failures seen.
1/ Could help me understand the test structure some more?
ReaderWriterTest does some setup to fill the two reader graphs. The
threads are kicked off:
* the readers (2 of them), doing listStatements on their respective graphs
* the writer (1 of) doing two WRITE transactions, one to full it's graph
and one to delete all it's data.
Are the numbers of readers/writers critical?
2/ At the crash point is it always:
fromRec=0000000000000000000000000000000000000000000000000000000000000000
toRec=0000000000000001000000000000000000000000000000000000000000000000
?
This is always the listStatements of the first reader (reader 2). It's
the NodeId=0 allocated in ReaderWriterTest setup on the first triple
added - it will be the nodeid for the graph name.
3/ Could you run with the following changes:
3a/ Set SystemTDB.NullOut = true very early e.g.
public static void main(String[] args) {
SystemTDB.NullOut = true ;
3b/ model.listStatements() , not using the SimpleSelector
Sorry I haven't a test setup - all my trying to find possible better
test cases hasn't got anywhere.
Do you have other test cases that illustrate the issue?
Andy
On 29/01/14 12:26, Steve Groeger wrote:
> Andy,
>
> Adding the code as mentioned in your earlier post I get the following:
>
> RecordRangeIterator.iterator -- No such block (pageId=117440534,
>
fromRec=0000000000000000000000000000000000000000000000000000000000000000,
>
> toRec=0000000000000001000000000000000000000000000000000000000000000000)
>
>
> Thanks
> Steve Groeger
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU