Bug Report: Java heap space out-of-memory when opening a table

715 views
Skip to first unread message

Michel van der Kleij

unread,
Jul 7, 2015, 5:31:42 PM7/7/15
to manydesign...@googlegroups.com

The attached table ("part"), code generated by MySQL Workbench and running on MySQL 5.5./Apache 2.4.7/Ubuntu 14.04 64-bits, caused the following problem. Any idea what could be the matter? The template is still default and I haven't done any major customisation yet. Other tables seem to run fine.


type Exception report

message ActionBean execution threw an exception.

description The server encountered an internal error that prevented it from fulfilling this request.

exception

net.sourceforge.stripes.exception.StripesServletException: ActionBean execution threw an exception.
	net.sourceforge.stripes.controller.DispatcherServlet.service(DispatcherServlet.java:183)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	net.sourceforge.stripes.controller.DynamicMappingFilter$2.doFilter(DynamicMappingFilter.java:453)
	net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:260)
	net.sourceforge.stripes.controller.DynamicMappingFilter.doFilter(DynamicMappingFilter.java:440)
	com.manydesigns.portofino.servlets.I18nFilter.doFilter(I18nFilter.java:60)
	net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:260)
	com.manydesigns.portofino.servlets.CleanupFilter.doFilter(CleanupFilter.java:47)
	com.manydesigns.portofino.servlets.DispatcherFilter.doFilter(DispatcherFilter.java:61)
	org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
	org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
	org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
	org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
	org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
	org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
	org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	com.manydesigns.elements.servlet.ElementsFilter.doHttpFilter(ElementsFilter.java:132)
	com.manydesigns.elements.servlet.ElementsFilter.doFilter(ElementsFilter.java:83)

root cause

java.lang.OutOfMemoryError: Java heap space
	java.nio.CharBuffer.allocate(CharBuffer.java:331)
	java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:777)
	java.nio.charset.Charset.decode(Charset.java:806)
	com.mysql.jdbc.StringUtils.toString(StringUtils.java:2226)
	com.mysql.jdbc.ResultSetRow.getString(ResultSetRow.java:821)
	com.mysql.jdbc.BufferRow.getString(BufferRow.java:542)
	com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5811)
	com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5688)
	com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5728)
	com.mchange.v2.c3p0.impl.NewProxyResultSet.getString(NewProxyResultSet.java:3342)
	org.hibernate.type.descriptor.sql.VarcharTypeDescriptor$2.doExtract(VarcharTypeDescriptor.java:74)
	org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64)
	org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:267)
	org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:263)
	org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253)
	org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:338)
	org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2969)
	org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1696)
	org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1628)
	org.hibernate.loader.Loader.getRow(Loader.java:1515)
	org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:726)
	org.hibernate.loader.Loader.processResultSet(Loader.java:953)
	org.hibernate.loader.Loader.doQuery(Loader.java:921)
	org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:355)
	org.hibernate.loader.Loader.doList(Loader.java:2554)
	org.hibernate.loader.Loader.doList(Loader.java:2540)
	org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370)
	org.hibernate.loader.Loader.list(Loader.java:2365)
	org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:497)
	org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387)
	org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236)
	org.hibernate.internal.SessionImpl.list(SessionImpl.java:1264)
part.sql

Alessio Stalla

unread,
Jul 8, 2015, 5:59:12 AM7/8/15
to manydesign...@googlegroups.com
I bet it's that LONGTEXT column (description_long) containing some huge string. Hibernate will want to load that to a Java string in memory no matter what. We don't support Clob fields yet, but we could in the future - we just never had the necessity to do it before.
If you don't use that column in your application, you can remove it from the mapping (portofino-model.xml), since it can be NULL. Otherwise, I'm afraid I can't come up with any workaround.

Thanks for all those test cases, man ;)

--
You received this message because you are subscribed to the Google Groups "manydesigns-portofino" group.
To unsubscribe from this group and stop receiving emails from it, send an email to manydesigns-port...@googlegroups.com.
To post to this group, send email to manydesign...@googlegroups.com.
Visit this group at http://groups.google.com/group/manydesigns-portofino.
For more options, visit https://groups.google.com/d/optout.

Michel van der Kleij

unread,
Jul 8, 2015, 7:28:54 AM7/8/15
to manydesign...@googlegroups.com
Awww sadly no ... I removed that column from portofino-model.xml, restarted Tomcat, verified that the column was gone in Administration -> Tables and clicked "part" again, but the same error occurred. I also notice that it's taking quite long for the error to appear. Another table which has way more data loads in no-time. Any other pointers (other than removing a bunch more columns)?

Yeah, you guys are welcome, would love to do some testing. The application is relatively complex with tables all referencing one another, so should be interesting.

Would you prefer me to drop crashes etc. directly in your mailbox or post them in the group?

Mille grazie!!

Mich.
--

Michel J.L. van der Kleij, BSc. (Hons.)
Certified Dog Trainer, Founder and Director

Aklan Animal Rescue & Rehabilitation Center (AARRC), Philippines
http://aarrc.tukcedo.nl
Stichting Albert, Netherlands
http://albert.tukcedo.nl

Email: aklanani...@gmail.com

Alessio Stalla

unread,
Jul 9, 2015, 4:10:03 AM7/9/15
to manydesign...@googlegroups.com
I don't know, really, because if a column isn't configured it isn't loaded from the database. To understand which column is giving trouble, one would have to debug it. Or you could try removing all the string columns one by one.

Michel van der Kleij

unread,
Jul 11, 2015, 9:06:59 AM7/11/15
to manydesign...@googlegroups.com
Hi Alessio,

Portofino still has me baffled. I noticed that for some columns in my horror-table, like TEXT, the XML says jdbcType="-X" whereas all others are positive numbers. Same with e.g. BOOLEAN. So I removed those fields from the "part" table. However, still no joy. I'll painstakingly try and remove fields one-by-one so possibly I'll have more to report by the end of the weekend.

The XML and SQL creation script are attached.

I also ran into something equally odd, and possible for a similar reason, but when I open "order_buy" or "order_sell" it says "This page is not correctly configured" but no Java traceback like with the "part" table in the interface, only in catalina.out.

Hope this is making sense to you somehow ...

Best regards,

Mich.

Hibernate: select company0_.`code` as code1_14_, company0_.`name` as name2_14_, company0_.`masterholding_id` as masterho3_14_, company0_.`VAT_code` as VAT_code4_14_ from `channelfor`.`company` company0_
Hibernate: select company0_.`code` as code1_14_, company0_.`name` as name2_14_, company0_.`masterholding_id` as masterho3_14_, company0_.`VAT_code` as VAT_code4_14_ from `channelfor`.`company` company0_
Hibernate: select currency0_.`code` as code1_18_, currency0_.`name` as name2_18_ from `channelfor`.`currency` currency0_
Hibernate: select order_sell0_.`id` as id1_25_, order_sell0_.`number` as number2_25_, order_sell0_.`project_number` as project_3_25_, order_sell0_.`description` as descript4_25_, order_sell0_.`shipped_via` as shipped_5_25_, order_sell0_.`date_ordered` as date_ord6_25_, order_sell0_.`date_delivered` as date_del7_25_, order_sell0_.`order_total` as order_to8_25_, order_sell0_.`currency_code` as currency9_25_, order_sell0_.`fob_point_code` as fob_poi10_25_, order_sell0_.`packing_slip` as packing11_25_, order_sell0_.`seller_cf_identifier` as seller_12_25_, order_sell0_.`salesperson_cf_identifier` as salespe13_25_, order_sell0_.`invoice_company_code` as invoice14_25_, order_sell0_.`deliver_to_company_code` as deliver15_25_, order_sell0_.`date_search_confirmation` as date_se16_25_, order_sell0_.`date_mail_quotation` as date_ma17_25_, order_sell0_.`date_po_received` as date_po18_25_, order_sell0_.`date_order_confirmation` as date_or19_25_ from `channelfor`.`order_sell` order_sell0_ order by order_sell0_.`id` DESC limit ?
2015-07-11 15:04:26,209 ERROR c.m.portofino.persistence.QueryUtils     Error running query
org.hibernate.exception.GenericJDBCException: could not execute query
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.doList(Loader.java:2557) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.doList(Loader.java:2540) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.list(Loader.java:2365) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:497) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1264) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at com.manydesigns.portofino.persistence.QueryUtils.runHqlQuery(QueryUtils.java:586) [portofino-database-4.1.3.jar:4.1.3]
    at com.manydesigns.portofino.persistence.QueryUtils.getObjects(QueryUtils.java:421) [portofino-database-4.1.3.jar:4.1.3]
    at com.manydesigns.portofino.pageactions.crud.CrudAction.loadObjects(CrudAction.java:267) [portofino-crud-4.1.3.jar:4.1.3]
    at com.manydesigns.portofino.pageactions.crud.AbstractCrudAction.executeSearch(AbstractCrudAction.java:342) [portofino-crud-4.1.3.jar:4.1.3]
    at com.manydesigns.portofino.pageactions.crud.AbstractCrudAction.doSearch(AbstractCrudAction.java:304) [portofino-crud-4.1.3.jar:4.1.3]
    at com.manydesigns.portofino.pageactions.crud.AbstractCrudAction.execute(AbstractCrudAction.java:264) [portofino-crud-4.1.3.jar:4.1.3]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_79]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_79]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_79]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_79]
    at net.sourceforge.stripes.controller.DispatcherHelper$6.intercept(DispatcherHelper.java:456) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158) [stripes-1.5.8.jar:1.5.8]
    at com.manydesigns.portofino.interceptors.GuardsInterceptor.intercept(GuardsInterceptor.java:61) [portofino-base-4.1.3.jar:4.1.3]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.DispatcherHelper.invokeEventHandler(DispatcherHelper.java:454) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.DispatcherServlet.invokeEventHandler(DispatcherServlet.java:278) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.DispatcherServlet.service(DispatcherServlet.java:160) [stripes-1.5.8.jar:1.5.8]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) [servlet-api.jar:na]
    at net.sourceforge.stripes.controller.DynamicMappingFilter$2.doFilter(DynamicMappingFilter.java:453) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:260) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.DynamicMappingFilter.doFilter(DynamicMappingFilter.java:440) [stripes-1.5.8.jar:1.5.8]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at com.manydesigns.portofino.servlets.I18nFilter.doFilter(I18nFilter.java:60) [portofino-base-4.1.3.jar:4.1.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:260) [stripes-1.5.8.jar:1.5.8]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at com.manydesigns.portofino.servlets.CleanupFilter.doFilter(CleanupFilter.java:47) [portofino-database-4.1.3.jar:4.1.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at com.manydesigns.portofino.servlets.DispatcherFilter.doFilter(DispatcherFilter.java:61) [portofino-pageactions-4.1.3.jar:4.1.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) [shiro-web-1.2.3.jar:1.2.3]
    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) [shiro-web-1.2.3.jar:1.2.3]
    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) [shiro-core-1.2.3.jar:1.2.3]
    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) [shiro-core-1.2.3.jar:1.2.3]
    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) [shiro-core-1.2.3.jar:1.2.3]
    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) [shiro-web-1.2.3.jar:1.2.3]
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.2.3.jar:1.2.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at com.manydesigns.elements.servlet.ElementsFilter.doHttpFilter(ElementsFilter.java:132) [elements-4.1.3.jar:4.1.3]
    at com.manydesigns.elements.servlet.ElementsFilter.doFilter(ElementsFilter.java:83) [elements-4.1.3.jar:4.1.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) [catalina.jar:7.0.62]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) [catalina.jar:7.0.62]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) [catalina.jar:7.0.62]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) [catalina.jar:7.0.62]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) [catalina.jar:7.0.62]
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) [catalina.jar:7.0.62]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) [catalina.jar:7.0.62]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) [catalina.jar:7.0.62]
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) [tomcat-coyote.jar:7.0.62]
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) [tomcat-coyote.jar:7.0.62]
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) [tomcat-coyote.jar:7.0.62]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_79]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_79]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-coyote.jar:7.0.62]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]
Caused by: java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Date
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1094) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:997) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:983) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:928) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.ResultSetRow.getDateFast(ResultSetRow.java:141) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.ByteArrayRow.getDateFast(ByteArrayRow.java:238) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.ResultSetImpl.getDate(ResultSetImpl.java:2206) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.ResultSetImpl.getDate(ResultSetImpl.java:2168) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.ResultSetImpl.getDate(ResultSetImpl.java:2233) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mchange.v2.c3p0.impl.NewProxyResultSet.getDate(NewProxyResultSet.java:3212) ~[c3p0-0.9.1.1.jar:0.9.1.1]
    at org.hibernate.type.descriptor.sql.DateTypeDescriptor$2.doExtract(DateTypeDescriptor.java:75) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:267) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:263) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:338) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2969) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1696) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1628) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.getRow(Loader.java:1515) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:726) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.processResultSet(Loader.java:953) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.doQuery(Loader.java:921) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:355) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.doList(Loader.java:2554) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    ... 74 common frames omitted
2015-07-11 15:04:26,211 WARN  c.m.p.p.crud.AbstractCrudAction          Crud not correctly configured
org.hibernate.exception.GenericJDBCException: could not execute query
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.doList(Loader.java:2557) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.doList(Loader.java:2540) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.list(Loader.java:2365) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:497) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1264) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at com.manydesigns.portofino.persistence.QueryUtils.runHqlQuery(QueryUtils.java:586) ~[portofino-database-4.1.3.jar:4.1.3]
    at com.manydesigns.portofino.persistence.QueryUtils.getObjects(QueryUtils.java:421) ~[portofino-database-4.1.3.jar:4.1.3]
    at com.manydesigns.portofino.pageactions.crud.CrudAction.loadObjects(CrudAction.java:267) ~[portofino-crud-4.1.3.jar:4.1.3]
    at com.manydesigns.portofino.pageactions.crud.AbstractCrudAction.executeSearch(AbstractCrudAction.java:342) [portofino-crud-4.1.3.jar:4.1.3]
    at com.manydesigns.portofino.pageactions.crud.AbstractCrudAction.doSearch(AbstractCrudAction.java:304) [portofino-crud-4.1.3.jar:4.1.3]
    at com.manydesigns.portofino.pageactions.crud.AbstractCrudAction.execute(AbstractCrudAction.java:264) [portofino-crud-4.1.3.jar:4.1.3]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_79]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_79]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_79]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_79]
    at net.sourceforge.stripes.controller.DispatcherHelper$6.intercept(DispatcherHelper.java:456) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158) [stripes-1.5.8.jar:1.5.8]
    at com.manydesigns.portofino.interceptors.GuardsInterceptor.intercept(GuardsInterceptor.java:61) [portofino-base-4.1.3.jar:4.1.3]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.DispatcherHelper.invokeEventHandler(DispatcherHelper.java:454) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.DispatcherServlet.invokeEventHandler(DispatcherServlet.java:278) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.DispatcherServlet.service(DispatcherServlet.java:160) [stripes-1.5.8.jar:1.5.8]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) [servlet-api.jar:na]
    at net.sourceforge.stripes.controller.DynamicMappingFilter$2.doFilter(DynamicMappingFilter.java:453) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:260) [stripes-1.5.8.jar:1.5.8]
    at net.sourceforge.stripes.controller.DynamicMappingFilter.doFilter(DynamicMappingFilter.java:440) [stripes-1.5.8.jar:1.5.8]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at com.manydesigns.portofino.servlets.I18nFilter.doFilter(I18nFilter.java:60) [portofino-base-4.1.3.jar:4.1.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:260) [stripes-1.5.8.jar:1.5.8]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at com.manydesigns.portofino.servlets.CleanupFilter.doFilter(CleanupFilter.java:47) [portofino-database-4.1.3.jar:4.1.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at com.manydesigns.portofino.servlets.DispatcherFilter.doFilter(DispatcherFilter.java:61) [portofino-pageactions-4.1.3.jar:4.1.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) [shiro-web-1.2.3.jar:1.2.3]
    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) [shiro-web-1.2.3.jar:1.2.3]
    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) [shiro-core-1.2.3.jar:1.2.3]
    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) [shiro-core-1.2.3.jar:1.2.3]
    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) [shiro-core-1.2.3.jar:1.2.3]
    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) [shiro-web-1.2.3.jar:1.2.3]
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.2.3.jar:1.2.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at com.manydesigns.elements.servlet.ElementsFilter.doHttpFilter(ElementsFilter.java:132) [elements-4.1.3.jar:4.1.3]
    at com.manydesigns.elements.servlet.ElementsFilter.doFilter(ElementsFilter.java:83) [elements-4.1.3.jar:4.1.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.62]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) [catalina.jar:7.0.62]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) [catalina.jar:7.0.62]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) [catalina.jar:7.0.62]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) [catalina.jar:7.0.62]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) [catalina.jar:7.0.62]
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) [catalina.jar:7.0.62]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) [catalina.jar:7.0.62]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) [catalina.jar:7.0.62]
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) [tomcat-coyote.jar:7.0.62]
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) [tomcat-coyote.jar:7.0.62]
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) [tomcat-coyote.jar:7.0.62]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_79]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_79]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-coyote.jar:7.0.62]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]
Caused by: java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Date
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1094) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:997) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:983) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:928) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.ResultSetRow.getDateFast(ResultSetRow.java:141) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.ByteArrayRow.getDateFast(ByteArrayRow.java:238) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.ResultSetImpl.getDate(ResultSetImpl.java:2206) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.ResultSetImpl.getDate(ResultSetImpl.java:2168) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mysql.jdbc.ResultSetImpl.getDate(ResultSetImpl.java:2233) ~[mysql-connector-java-5.1.32.jar:na]
    at com.mchange.v2.c3p0.impl.NewProxyResultSet.getDate(NewProxyResultSet.java:3212) ~[c3p0-0.9.1.1.jar:0.9.1.1]
    at org.hibernate.type.descriptor.sql.DateTypeDescriptor$2.doExtract(DateTypeDescriptor.java:75) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:267) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:263) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:338) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2969) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1696) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1628) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.getRow(Loader.java:1515) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:726) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.processResultSet(Loader.java:953) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.doQuery(Loader.java:921) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:355) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.loader.Loader.doList(Loader.java:2554) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
    ... 74 common frames omitted
MySQLWorkbench_Schema.sql
portofino-model.xml

Michel van der Kleij

unread,
Jul 12, 2015, 7:55:07 AM7/12/15
to manydesign...@googlegroups.com
Hi Alessio,

I did get some time to play with it today, and you may not guess what the problem is with the "part" table ... the foreign keys! I removed all the keys from the model file and that resulted in a working "parts" table. Then I deleted and re-added each foreign key from scratch, i.e. this means those "-X" TEXT fields etc. were left in place, until it started working again. It was this key:

<foreignKey onDelete="importedKeyNoAction" onUpdate="importedKeyNoAction" toSchema="mycompany" toTable="PMA_part" hql="from pma_part" name="fk_part_PMA_part1" toDatabase="mycompany">
    <references>
        <reference fromColumn="PMA_part_number" toColumn="number"/>
    </references>
</foreignKey>

So the next step would be to find out what's wrong with that key or table, apart from the fact it has 676242 entries ...

Alessio Stalla

unread,
Jul 15, 2015, 8:58:15 AM7/15/15
to manydesign...@googlegroups.com
Well, that's hardly unexpected. Foreign keys automatically produce selection providers, helper objects that fill selection lists and ensure only allowed values are selected. Their present implementation is inefficient for tables with a large number of records, as they load them all in memory, hence the error you saw. You can disable a selection provider from the page's configuration. Granted, you should not see an exception, that's something worth improving.

Michel van der Kleij

unread,
Jul 15, 2015, 9:34:23 AM7/15/15
to manydesign...@googlegroups.com
Aha, yes indeed that seems like a logical explanation. The trouble is that the customer requires auto-completion and these selection fields, so we do need them. Any workaround? I could try find the maximum length of the key and adjust the database definition.

Stiil, I wonder why you'd get an exception though, I have no idea how Java does it but can't you just "request/allocate" memory which basically never fails until you run out of physical memory (the good, old malloc() in C)? And I would guess that an estimated 68Mb to fit all the keys in (they're a 100 char VARCHAR) shouldn't be a problem for my 8Gb laptop that I use for testing ...

Alessio Stalla

unread,
Jul 15, 2015, 10:59:58 AM7/15/15
to manydesign...@googlegroups.com
There's not a single right answer. Given that:
 - the JVM has a fixed maximum heap size set at launch time, it won't use all the available physical memory
 - selection providers automatically created from foreign keys load the whole table in memory, not just the key

You can raise the maximum heap size and keep everything as-is.
If that's too memory hungry, you can create a custom SQL selection provider to only load the key and the label, not the whole row.
If it's still too slow to issue the query for every user and page load, you can cache the query results to only issue the query the first time. There are provisions to do so easily but it's not documented.
If you really need efficient autocompletion, for the time being you'll have to code it yourself, disabling the selection provider for that row. Twitter Typeahead is included already.
Reply all
Reply to author
Forward
0 new messages