Hi, thanks for the suggestion, but we are aware of that, and we have turned it off on EclipseLink to even the playingfield.
Today we found a new problem with OpenJPA. When running the following method we get a similar type of performance hit and an Exception after the first run. Note: This exception is the same one we get when running the ManyToMany test in a loop. The method: public void insertDeliveryCompany(int iterations) throws Exception{ log.setMethod(iterations); for (int i = 0; i < 10; i++) { // DeliveryCompany med contactinfo, adress, areacode og country IDeliveryCompanyDAO dcDao = daoFactory.getDeliveryCompanyDAO(); DeliveryCompany deliveryCompany; ArrayList<DeliveryCompany> deliveryCompanies = new ArrayList<DeliveryCompany>(); // Fyller DeliveryCompany listen for(int interval = 0; interval < iterations; interval++){ // Region Region region = new Region(); region.setRegion("insertDeliveryCompanyRegion"); // Country Country country = new Country(); country.setCountry("insertDeliveryCompanyCountry"); country.setRegion(region); // AreaCode AreaCode areaCode = new AreaCode(); areaCode.setArea("insertDeliveryCompanyAreaCode"); areaCode.setCountry(country); // Address Address address = new Address(); address.setAddress("insertDeliveryCompanyAddress"); address.setAreaCode(areaCode); // ContactInfo ContactInfo contactInfo = new ContactInfo(); contactInfo.setAddress(address); contactInfo.setEmail("insertDeliveryCompanyEmail"); contactInfo.setPhoneNr("insertDeliveryCompanyPhoneNr"); // Fyller DeliveryCompany listen deliveryCompany = new DeliveryCompany(); deliveryCompany.setCompanyName("insertDeliveryCompany"); deliveryCompany.setContactInfo(contactInfo); deliveryCompanies.add(deliveryCompany); } log.registerStart(); daoFactory.beginTransaction(); for (int j = 1; j <= iterations; j++) { dcDao.save(deliveryCompanies.get(j-1)); log.registerIteration(j + 1); } daoFactory.commitTransaction(); // daoFactory.resetEntityManager(); log.registerEnd(); } log.endMethod(); } And the console dump: 94 OpenJPAPU INFO [main] openjpa.Runtime - Starting OpenJPA 1.2.0 172 OpenJPAPU INFO [main] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary". OPENJPA (insertDeliveryCompany): 43500 0 OpenJPAPU INFO [main] openjpa.Runtime - Starting OpenJPA 1.2.0 0 OpenJPAPU INFO [main] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary". <openjpa-1.2.0-r422266:683325 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: Communications link failure Last packet sent to the server was 0 ms ago. at org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4238) at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4203) at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102) at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:88) at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:64) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:868) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.getConnection(JDBCStoreManager.java:229) at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:371) at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:325) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.getInitializeStateResult(JDBCStoreManager.java:441) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:321) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:277) at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111) at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57) at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:852) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:774) at org.apache.openjpa.kernel.BrokerImpl.isDetached(BrokerImpl.java:4286) at org.apache.openjpa.kernel.SingleFieldManager.persist(SingleFieldManager.java:257) at org.apache.openjpa.kernel.StateManagerImpl.cascadePersist(StateManagerImpl.java:2893) at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2457) at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2280) at org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java:1021) at org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:645) at project.ojpa.dao.DeliveryCompanyDAO.save(DeliveryCompanyDAO.java:55) at project.tests.InsertManager.insertDeliveryCompany(InsertManager.java:233) at project.client.AnalyticsClient.main(AnalyticsClient.java:67) Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure Last packet sent to the server was 0 ms ago. at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1070) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2120) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:298) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282) at org.apache.openjpa.jdbc.schema.SimpleDriverDataSource.getConnection(SimpleDriverDataSource.java:81) at org.apache.openjpa.jdbc.schema.SimpleDriverDataSource.getConnection(SimpleDriverDataSource.java:76) at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:113) at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:93) at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:113) at org.apache.openjpa.jdbc.schema.DataSourceFactory$DefaultsDataSource.getConnection(DataSourceFactory.java:305) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connectInternal(JDBCStoreManager.java:879) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:864) ... 21 more Caused by: com.mysql.jdbc.CommunicationsException: The driver was unable to create a connection due to an inability to establish the client portion of a socket. This is usually caused by a limit on the number of sockets imposed by the operating system. This limit is usually configurable. For Unix-based platforms, see the manual page for the 'ulimit' command. Kernel or system reconfiguration may also be required. For Windows-based platforms, see Microsoft Knowledge Base Article 196271 (Q196271). at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1070) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:335) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2043) ... 32 more Caused by: java.net.BindException: Address already in use: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284) ... 33 more Kevin Sutter wrote: > > One other interesting bit of information... I just heard that EclipseLink > runs with a data cache enabled by default, while OpenJPA and Hibernate do > not. Although this setting may not get us completely out of this > ManyToMany > performance hole, it is something to be aware of as these performance > benchmarks are done... > -- View this message in context: http://n2.nabble.com/Slow-performance-with-OpenJPA-when-selecting-from-a-ManyToMany-relation.-tp2466994p2501684.html Sent from the OpenJPA Users mailing list archive at Nabble.com.