On 05/11/12 12:45, Mario Ds Briggs wrote:
Laurent's question on SDB usage reminded me of another question i had for a
while...

  What is the pattern for handling obtaining/releasing the connection for
each request that comes into FUSEKI in the case of DB backed stores ?

   From what we have seen, the same Dataset instance is used for each
request and therefore if the connection is tied to the Dataset, there is a
problem when there is concurrently running requests. What we have done with
DB2  in case of Fuseki is that we create a dummy Dataset and in the
    -  begin() method of the dummy Dataset, create the real dataset by
giving it its own separate connection. It also ties the real dataset to the
current threadID
    - all other methods first obtain the real dataset using the current
threadID and delegate to the real dataset
    - end() method, releases the connection

Roughly, that is what TDB does.  See DatasetGraphTransaction.

There is a real-one-transaction datasetgraph switched by thread. Its all within TDB - Fuseki does not need to do anything special - it just gets the top datasetgraph calls DatasetGraph operations all on thread per HTTP request inside one transaction.

(I would not do it as a Dataset - use the DatasetGraph)

        Andy


Mario



Reply via email to