Hmm, the import operation in DIH is single threaded. Each entity has a
separate instance of DataSource for itself. I think that we may not need the
synchronization at all.
On Tue, Nov 18, 2008 at 10:22 PM, Yonik Seeley <[EMAIL PROTECTED]> wrote:
> I took a very quick peek... looks like Mark is right, there are some
> non-thread-safe practices going on there with both "conn" and
> "connLastUsed". Prob also want another check inside the sync block so
> multiple threads don't pile up at that sync block and all open a new
> connection in turn (or just put the check inside the sync block).
>
> Is a finalizer really needed? If so, hopefully the connection is
> resistant to close() being called on it more than once?
>
> -Yonik
>
>
> On Tue, Nov 18, 2008 at 11:27 AM, Noble Paul നോബിള് नोब्ळ्
> <[EMAIL PROTECTED]> wrote:
> > it is not . conn is protected throughout
> >
> > On Tue, Nov 18, 2008 at 9:48 PM, Mark Miller <[EMAIL PROTECTED]>
> wrote:
> >> But if your going to sync a variable, you can't read/write it outside of
> >> proper synchronization. Maybe I am just not following the code...
> >>
> >> Noble Paul ??????? ?????? wrote:
> >>>
> >>> one JdbcDataSource has only one connection the connection object/the
> >>> connLastUsed etc needs to be protected.
> >>>
> >>>
> >>>
> >>> On Tue, Nov 18, 2008 at 9:24 PM, Mark Miller <[EMAIL PROTECTED]>
> >>> wrote:
> >>>
> >>>>
> >>>> JdbcDataSource looks like it has a little funkiness going on. Why is
> >>>> there a
> >>>> synchronize block there? Can multiple threads call getConnection
> >>>> concurrently? If they can, this is not thread safe anyway. If they
> can't,
> >>>> why is factory.call (or is it the close?) being protected with a sync?
> >>>>
> >>>> private Connection getConnection() throws Exception {
> >>>> long currTime = System.currentTimeMillis();
> >>>> if (currTime - connLastUsed > CONN_TIME_OUT) {
> >>>> synchronized (this) {
> >>>> Connection tmpConn = factory.call();
> >>>> close();
> >>>> connLastUsed = System.currentTimeMillis();
> >>>> return conn = tmpConn;
> >>>> }
> >>>>
> >>>> } else {
> >>>> connLastUsed = currTime;
> >>>> return conn;
> >>>> }
> >>>> }
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >
> >
> >
> > --
> > --Noble Paul
> >
>
--
Regards,
Shalin Shekhar Mangar.