Hello,
I have a situation with a very strange behavior which I cannot explain by
myself:

I have 3 different applications, all running in different Java processes,
but all on the same computer.

Whenever I update an existing record with Jena TDB then these updates are
only recognized by the same application. The other applications either do
not recognize the update at all, or only sporadically.

Here is a detailed description:

   - Process A is a very simple unit test. I read the Jena record TDB
   dataset (TDBFactory.createDataset(directory), and the current values. Let's
   say the field 'A.b' of record 'A' has the value 'xxx'. I update the value
   to 'yyy' and persist the change with a commit() followed by end(). During
   the same run I re-read the record and as supposed the value of 'A.b' =
   'yyy'.
   - When I restart Process A the value of 'A.b' is still 'yyy'.
   - However, when I start the second application (let's say B), which is a
   Wicket-Webapp running with Jetty, the value is still 'xxx'.

I tried quite a lot of things: Besides using TDB transactions properly, I
also take care that after each commit() the transaction is ended with
end(). Also, read-transactions are opened with .begin(ReadWrite.READ).
Additionally, I added TDB.sync(tdbDataSet); although I am not sure if this
is necessary when using transactions properly.

I am quite confused how this behaviour can appear. A little explanation of
the underlying transaction handling would be very helpful. Maybe any of you
has an idea what the reason may be?

I also checked the Jena TDB files and can tell you that after updating the
single record, the following files are updated (I don't know if this is
helpful):
* journal.jrnl
* node2id
* nodes.dat
* nodes.dat-jrnl (0 bytes)
* prefixes.dat-jrnl (0 bytes)

I apprechiate any help.
Best, Andreas

Reply via email to