Hi Christian,
incoming read operations will be blocked as soon as a write operation is queued, or executed, by any client. Our Wiki entry on transaction management may give you some helpful information [1]; if you feel the information is incomplete, you are invited to edit our Wiki!
We are currently working on pushing down the locking concept to databases (instead of processes); as soon as this works, you will be able to write to one database and access another one in parallel (provided that the XQuery optimizer will find out which databases will be touched by a given query).
Hope this helps, Christian
[1] http://docs.basex.org/wiki/Transaction_Management ___________________________________
On Tue, May 22, 2012 at 2:57 PM, Manuel Bernhardt bernhardt.manuel@gmail.com wrote:
Hi Christian,
I just witnessed this again now. There was one processing resulting in a "streaming query" (though I think there would not have been a big difference if it would have been a cached one) over 90000 records, and we uploaded a few small collections after starting that one. Additionally I issued a "list" statement from another client.
What happened next is that:
- the process with the long query went on
- the uploads were blocked (in queue)
- my call on the console was blocked (in queue)
- once the long query was done, all other operations proceeded
So it looks as though there is some kind of read lock on the server level...? Am I perhaps doing something wrong when starting the long query - e.g. should it be started within some kind of transaction or special context?
Thanks,
Manuel
On Tue, May 22, 2012 at 12:18 AM, Christian Grün christian.gruen@gmail.com wrote:
[....] There is one thing I noticed however, and that I had noticed earlier on as well when a big collection was being processed: any attempt to talk with the server seems not to be working, i.e. even when I try to connect via the command-line basexadmin and run a command such as "list" or "open db foo", I do not get a reply. [....]
I'm not quite sure what's the problem. Some questions I get in mind:
-- does the problem occur with a single client? -- does "no reply" mean that your client request is being blocked, or that the returned result is empty? -- can you access your database via the standalone interfaces?
Just in case.. Feel free to send a small Java example that demonstrates the issue. Christian