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

Reply via email to