[Mulgara-general] Connections thread safe?

Paul Gearon gearon at ieee.org
Wed Feb 27 03:57:56 UTC 2008


On Tue, Feb 26, 2008 at 9:31 PM, Life is hard, and then you die
<ronald at innovation.ch> wrote:
> On Tue, Feb 26, 2008 at 03:16:38PM -0600, Paul Gearon wrote:
>  > On Tue, Feb 26, 2008 at 1:32 PM, Alex Hall <alexhall at revelytix.com> wrote:
>  > > Are Connections in Mulgara thread-safe?  I am writing an abstraction
>  > >  layer on top of Mulgara to represent ontology models, and each "model"
>  > >  needs to have a Connection to the server that it uses to execute queries
>  > >  to get ontology metadata, list classes, etc.
>  > >
>  > >  Since the ConnectionFactory caches the Connections that it creates, if
>  > >  the models all share the same factory then they will wind up using the
>  > >  same Connection object.  This could possibly result in multiple,
>  > >  overlapping commands being executed on the same session from different
>  > >  threads.  Is this OK, or should I ensure that each model gets its own
>  > >  Connection instance?
>  >
>  > The plan was to use one factory per thread.  However, now that you
>  > raise it, it sounds like a bad idea.  I should probably put in some
>  > TLS so that a shared factory will hand out new Connections for new
>  > threads.
>
>  How about separating the concepts of factory and pooling: let the
>  ConnectionFactory be just that, a factory, which always creates a new
>  connection when asked, and create a ConnectionPool (that take a
>  ConnectionFactory as a parameter) which manages a pool of connections
>  and which uses a check-out/check-in approach (maybe use commons-pool
>  for this).

Sounds like we have a volunteer.  :-)

Paul



More information about the Mulgara-general mailing list