OK, I just tried to limit it to 100M. After deploying the new war file to tomcat I thought it would be goof to just make this call: RecommenderServlet?userID=1&debug=true
So, I get the following error:

*exception*

javax.servlet.ServletException: 
org.apache.mahout.cf.taste.common.TasteException: 
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No 
operations allowed after connection closed.
        
org.apache.mahout.cf.taste.web.RecommenderServlet.init(RecommenderServlet.java:76)
        
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        java.lang.Thread.run(Thread.java:662)

*root cause*

org.apache.mahout.cf.taste.common.TasteException: 
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No 
operations allowed after connection closed.
        
org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel.getNumThings(AbstractJDBCDataModel.java:590)
        
org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel.getNumItems(AbstractJDBCDataModel.java:545)
        
org.apache.mahout.cf.taste.impl.recommender.slopeone.MemoryDiffStorage.<init>(MemoryDiffStorage.java:101)
        
org.muehlbachler.filmspiration.recommender.FilmspirationRecommender.createRecommender(FilmspirationRecommender.java:65)
        
org.muehlbachler.filmspiration.recommender.FilmspirationRecommender.<init>(FilmspirationRecommender.java:45)
        sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        java.lang.Class.newInstance0(Class.java:355)
        java.lang.Class.newInstance(Class.java:308)
        
org.apache.mahout.cf.taste.web.RecommenderSingleton.<init>(RecommenderSingleton.java:51)
        
org.apache.mahout.cf.taste.web.RecommenderSingleton.initializeIfNeeded(RecommenderSingleton.java:42)
        
org.apache.mahout.cf.taste.web.RecommenderServlet.init(RecommenderServlet.java:74)
        
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        java.lang.Thread.run(Thread.java:662)

*root cause*

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No 
operations allowed after connection closed.
        sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
        com.mysql.jdbc.Util.getInstance(Util.java:382)
        com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
        com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
        com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
        com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
        
com.mysql.jdbc.ConnectionImpl.throwConnectionClosedException(ConnectionImpl.java:1213)
        com.mysql.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:1200)
        com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4203)
        
org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:295)
        
org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:318)
        
org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel.getNumThings(AbstractJDBCDataModel.java:576)
        
org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel.getNumItems(AbstractJDBCDataModel.java:545)
        
org.apache.mahout.cf.taste.impl.recommender.slopeone.MemoryDiffStorage.<init>(MemoryDiffStorage.java:101)
        
org.muehlbachler.filmspiration.recommender.FilmspirationRecommender.createRecommender(FilmspirationRecommender.java:65)
        
org.muehlbachler.filmspiration.recommender.FilmspirationRecommender.<init>(FilmspirationRecommender.java:45)
        sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        java.lang.Class.newInstance0(Class.java:355)
        java.lang.Class.newInstance(Class.java:308)
        
org.apache.mahout.cf.taste.web.RecommenderSingleton.<init>(RecommenderSingleton.java:51)
        
org.apache.mahout.cf.taste.web.RecommenderSingleton.initializeIfNeeded(RecommenderSingleton.java:42)
        
org.apache.mahout.cf.taste.web.RecommenderServlet.init(RecommenderServlet.java:74)
        
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        java.lang.Thread.run(Thread.java:662)


So, although it worked before too that's my resource context (specified 
in<tomcat-conf-dir>/context.xml):
 <Resource name="jdbc/filmspiration" auth="Container" 
type="javax.sql.DataSource"
         username="user"
         password="passwd"
         driverClassName="com.mysql.jdbc.Driver"
         url="jdbc:mysql://localhost:3306/filmspiration"
         maxActive="15"
         maxIdle="7"/>



Am 26.02.2011 12:44, schrieb Sean Owen:
I don't know enough about your code to guess at an explanation. I don't know
whether you were actually building the diffs before as it sounds like you
were looking to build it manually or something.

I am not sure if 3GB is enough, or if it is, whether you want to spend that
much memory on diffs. You could start with a lower number like 10M.

2011/2/26 Daniel Mühlbachler<[email protected]>

Ok, that's true because I in my preferenceTable I have about 650 000
entries/ratings (~24MB) but it's curious that it worked before perfectly
without any problem and I have nothing changed on my system except the svn
update and recompilation. It also takes approximately as long as before to
build the diffs.
So, you think if I say 100 million entries should be kept about 3GB of heap
size is enough?


Reply via email to