2012-09-24 17:26, Vincent Massol skrev:
Hi devs,
I was trying to make XEM work with HSQLDB and... I have succeeded :)
The only problem I have is that DBCP doesn't seem to work with Hibernate. For some
weird reasons when we do a SET SCHEMA it makes calls to fail afterwards. In any case if I
configure Hibernate to not use DBCP all work just fine.
Funny coincidence! I was just trying to get it to work with
PostgreSQL. It mostly works, as already commented on the Jira issue.
The only thing that seems to work unreliably is the initial template
creation. It seems likely that it is the same issue.
But having looked into this I'm a bit worried about the current XEM
implementation. I'm not an expert on Hibernate, but to me it seems that
entities are expected to be bound to specific tables at initialization
time. So I'm wondering, does Hibernate really support changing the
mappings by switching databases or schemas underneath? What prevents it
from generating prepared queries for accessing the entities, which will
be resolved against the initial database/schema, and continue to use
these even after the database or schema changes?
+1 for your action plan.
Best Regards,
/Andreas
I've googled around and found that there are lots of people complaining about DBCP.
I've googled for what connection pooling library to use and I've found that most
people are recommending BoneCP (
http://jolbox.com/).
See:
*
http://stackoverflow.com/questions/5640146/java-jdbc-connection-pool-librar…
*
http://www.jorambarrez.be/blog/2012/04/30/dbcp_vs_c3p0_bonecp/
*
http://stackoverflow.com/questions/8057110/java-database-connection-pool-bo…
The other thing is that we currently have some 300 line of code that we shouldn't
have at all and that we need in XWiki just for handling DBCP (see
com.xpn.xwiki.store.DBCPConnectionProvider).
The pro of BoneCP is that it seems to be the fastest, see
http://jolbox.com/benchmarks.html
So here's what I'd like to propose:
* We move DBCPConnectionProvider to a legacy module
* We bundle the bonecp jar by default
* We configure our hibernate.cfg.xml by default to use boneCP:
<property name="bonecp.idleMaxAge">240</property>
<property name="bonecp.idleConnectionTestPeriod">60</property>
<property name="bonecp.partitionCount">3</property>
<property name="bonecp.acquireIncrement">10</property>
<property
name="bonecp.maxConnectionsPerPartition">60</property>
<property
name="bonecp.minConnectionsPerPartition">20</property>
<property name="bonecp.statementsCacheSize">50</property>
<property name="bonecp.releaseHelperThreads">3</property>
<property
name="connection.provider_class">com.jolbox.bonecp.provider.BoneCPConnectionProvider</property>
What this means:
* Existing users of XWiki will not have to change anything, it'll still work
* New users will use bonecp without knowing
* Existing users can migrate to bonecp just by changing one line in their
hibernate.cfg.xml file
I'd love to do this for 4.3 but we're already quite advanced in the 4.x cycle.
That said it's just a one line change in hibernate.cfg.xml in case of problem to go
back to DBCP so we could do this for 4.3 which leaves us 4.3, 4.4 and 4.5 to test this
out. And if later on we find an issue we'll always be able to release a 4.5.1 that has
this one line change to go back to DBCP.
WDYT?
Here's my +1 for this action plan.
Thanks
-Vincent
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs