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.

Reply via email to