On 03/03/13 08:14, Claude Warren wrote:
> graphName = "";
> t = [<null>, <null>, <null> ]
Did you delete the old database? tdbloader2 is (currently) not
>prefix-aware so it may be that the old prefix table is being left in place.
> Try in a fresh directory.
>
>You can also just go in and delete the prefix table files, prefix*.
>
>An empty prefix table will be recreated on the next start up.
>
>
> My other question is where should I look to find the problem?
>>
>
>At guess, there was some non-transactional use of the database. A change
>to the prefix table did not get completely written (the node file changes
>were not written but the tuples part was).
>
>This could be due to an interrupted load or use of TDB non-transactionally.
>
> Andy
>
>
Your last line was spot on. It was an interrupted use of TDB
non-transactionally. The only change was that I added namespace prefixes.
I ended up removing the prefix table files and that recovered nicely.
Good - you can add the prefixes back in again.
Should TDB detect a null namespace triple and delete it, or perhaps delete
the namespace prefixes at that point? Is this an enhancement that makes
sense?
It may sort out some uses (but disappearing data is always going to be a
mystery). The underlying cause of partially written updates can
manifest is various different ways, this is just one. It is quite
possible the prefix table is broken in other ways so just deleting a bad
entry isn't a fix. And it may not be possible - it may be broken in
ways that break the fundamental structure of the table, less likely with
the prefix table because it is small, usually.
Andy