On Thu, Apr 10, 2008 at 6:31 PM, Vincent Massol <[EMAIL PROTECTED]> wrote:
> Hi JV,
>
> Are you sure about this patch?
>
> It looks like it's adding a synchronize() that was not there before
> and thus all threads will be waiting on this synchronize. Since
> checkHibernate is called for all database access I'm worried this
> could lead to performance issues.
The synchronized is done only when the sessionFactory has not been
created (and it's created once).
> Has this been tested for performance with a tool like JMeter to
> simulate multiple users?
XWiki.org is currently running with this patch.
> If the session factory is only created once then maybe it should be
> created on app init?
>
> Thanks
> -Vincent
>
>
>
> On Apr 10, 2008, at 6:21 PM, jvdrean (SVN) wrote:
>
> > Author: jvdrean
> > Date: 2008-04-10 18:21:07 +0200 (Thu, 10 Apr 2008)
> > New Revision: 9071
> >
> > Modified:
> > xwiki-platform/core/branches/xwiki-core-1.3/xwiki-core/src/main/
> > java/com/xpn/xwiki/store/XWikiHibernateBaseStore.java
> > Log:
> > XWIKI-2300 : HibernateStore synchronization problem
> >
> > Applied patch by Raffaello Pelagalli without modification. Added
> > comment.
> >
> > Modified: xwiki-platform/core/branches/xwiki-core-1.3/xwiki-core/src/
> > main/java/com/xpn/xwiki/store/XWikiHibernateBaseStore.java
> > ===================================================================
> > --- xwiki-platform/core/branches/xwiki-core-1.3/xwiki-core/src/main/
> > java/com/xpn/xwiki/store/XWikiHibernateBaseStore.java 2008-04-10
> > 14:45:54 UTC (rev 9070)
> > +++ xwiki-platform/core/branches/xwiki-core-1.3/xwiki-core/src/main/
> > java/com/xpn/xwiki/store/XWikiHibernateBaseStore.java 2008-04-10
> > 16:21:07 UTC (rev 9071)
> > @@ -510,13 +510,18 @@
> > */
> > public void checkHibernate(XWikiContext context) throws
> > HibernateException
> > {
> > -
> > + // Note : double locking is not a recommended pattern and
> > is not guaranteed to work on all
> > + // machines. See for example
> http://www.ibm.com/developerworks/java/library/j-dcl.html
> > if (getSessionFactory() == null) {
> > - initHibernate();
> > -
> > - /* Check Schema */
> > - if (getSessionFactory() != null) {
> > - updateSchema(context);
> > + synchronized(this) {
> > + if (getSessionFactory() == null) {
> > +
> > + initHibernate();
> > + /* Check Schema */
> > + if (getSessionFactory() != null) {
> > + updateSchema(context);
> > + }
> > + }
> > }
> > }
> > }
> >
> > _______________________________________________
> > notifications mailing list
> > [EMAIL PROTECTED]
> > http://lists.xwiki.org/mailman/listinfo/notifications
>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>
--
Jean-Vincent Drean
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs