[Deploying Sakai] Profile2 issue [was: Problems with deprecated tools after upgrade]

Steve Swinsburg steve.swinsburg at gmail.com
Tue Aug 17 05:57:14 PDT 2010


Excellent. Glad it's resolved!

cheers,
Steve



On 17/08/2010, at 6:04 PM, Markus Binsteiner wrote:

> Nice! Thanks Steve, that worked like a treat, for both scenarios (local
> & remote mysql db).
> 
> Thanks again, very much appreciated!
> 
> Cheers,
> Markus
> 
> On Tue, 2010-08-17 at 09:10 +1000, Steve Swinsburg wrote:
>> Hi Markus,
>> 
>> 
>> Ok we are getting somewhere :)
>> 
>> 
>> Yes, it looks like you need the DB upgrade script. 1.3.9 modified the
>> preferences table due to the changed Twitter integration. Here tis:
>> 
>> 
>> /* remove twitter from preferences (PRFL-94) */
>> alter table PROFILE_PREFERENCES_T drop TWITTER_ENABLED;
>> alter table PROFILE_PREFERENCES_T drop TWITTER_USERNAME;
>> alter table PROFILE_PREFERENCES_T drop TWITTER_PASSWORD;
>> 
>> 
>> /* add external integration table (PRFL-94) */
>> create table PROFILE_EXTERNAL_INTEGRATION_T (
>> USER_UUID varchar(99) not null,
>> TWITTER_TOKEN varchar(255),
>> TWITTER_SECRET varchar(255),
>> primary key (USER_UUID)
>> );
>> 
>> 
>> This might also be related to the first issue.
>> 
>> 
>> Run the above then let me know how you get on.
>> 
>> 
>> regards,
>> Steve
>> 
>> 
>> 
>> On 17/08/2010, at 1:03 AM, Markus Binsteiner wrote:
>> 
>>> Hi Steve,
>>> 
>>> On Mon, 2010-08-16 at 21:23 +1000, Steve Swinsburg wrote:
>>> 
>>>> The issue seems to be this:
>>>> profileLogic.createDefaultPreferencesRecord(userUuid)
>>>> 
>>>> 
>>>> which will create a record if you don't already have one. But that
>>>> shouldn't block anything, it's a simple insert by Hibernate. I
>>>> noticed
>>>> a few MySQL exceptions in there, what do your MySQL logs say?
>>> 
>>> We're using a remote mysql db and I don't have access to the logs
>>> right
>>> now. But for the sake of testing I imported a dump of the db into a
>>> local instance of mysql.
>>> Now the behaviour is different: I can click all the links and the
>>> expected pages show up, except for the last one (Preferences) which
>>> throws an exceptions (see below). Seems like the db update scripts
>>> maybe
>>> missed something? 
>>> I really don't understand why it (kinda) works for he local db, but
>>> not
>>> for the remote one. Any idea
>>> 
>>> Thanks for your help,
>>> Markus
>>> 
>>> The stacktrace:
>>> 
>>> 2010-08-17 02:56:32,698  INFO TP-Processor8
>>> org.sakaiproject.profile2.logic.ProfileLogicImpl - Created default
>>> preferences record for user: 7a41c257-1336-4e1b-809a-e5bec01877f3
>>> 2010-08-17 02:56:32,755  WARN TP-Processor8
>>> org.hibernate.util.JDBCExceptionReporter - SQL Error: 1364,
>>> SQLState:
>>> HY000
>>> 2010-08-17 02:56:32,755 ERROR TP-Processor8
>>> org.hibernate.util.JDBCExceptionReporter - Field 'TWITTER_ENABLED'
>>> doesn't have a default value
>>> 2010-08-17 02:56:32,758 ERROR TP-Processor8
>>> org.hibernate.event.def.AbstractFlushingEventListener - Could not
>>> synchronize database state with session
>>> org.hibernate.exception.GenericJDBCException: Could not execute JDBC
>>> batch update
>>> at
>>> org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
>>> at
>>> org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
>>> at
>>> org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
>>> at
>>> org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:254)
>>> at
>>> org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
>>> at
>>> org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
>>> at
>>> org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
>>> at
>>> org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
>>> at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1001)
>>> at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:339)
>>> at
>>> org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
>>> at
>>> org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:655)
>>> at
>>> org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
>>> at
>>> org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
>>> at
>>> org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
>>> at
>>> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
>>> at
>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
>>> at
>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
>>> at $Proxy29.createDefaultPreferencesRecord(Unknown Source)
>>> at
>>> org.sakaiproject.profile2.tool.pages.MyPreferences.<init>(MyPreferences.java:52)
>>> at org.sakaiproject.profile2.tool.pages.BasePage
>>> $5.onClick(BasePage.java:126)
>>> at
>>> org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:214)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>> at java.lang.reflect.Method.invoke(Method.java:592)
>>> at
>>> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:183)
>>> at
>>> org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
>>> at
>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>> at
>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297)
>>> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399)
>>> at org.apache.wicket.RequestCycle.request(RequestCycle.java:529)
>>> at
>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>> at
>>> org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:124)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>> at
>>> org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:585)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:659)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:359)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311)
>>> at org.sakaiproject.tool.impl.ActiveToolComponent
>>> $MyActiveTool.forward(ActiveToolComponent.java:500)
>>> at
>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1221)
>>> at
>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:204)
>>> at
>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:96)
>>> at
>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:768)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>> at
>>> org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:646)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>> at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>>> at
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
>>> at
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>>> at
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
>>> at
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
>>> at
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
>>> at
>>> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
>>> at
>>> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
>>> at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:775)
>>> at
>>> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:704)
>>> at org.apache.jk.common.ChannelSocket
>>> $SocketConnection.runIt(ChannelSocket.java:897)
>>> at org.apache.tomcat.util.threads.ThreadPool
>>> $ControlRunnable.run(ThreadPool.java:689)
>>> at java.lang.Thread.run(Thread.java:595)
>>> Caused by: java.sql.BatchUpdateException: Field 'TWITTER_ENABLED'
>>> doesn't have a default value
>>> at
>>> com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2020)
>>> at
>>> com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1451)
>>> at
>>> org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
>>> at
>>> org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
>>> at
>>> org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:247)
>>> ... 67 more
>>> ERROR: 2010-08-17 02:56:32,813 Method onLinkClicked of interface
>>> org.apache.wicket.markup.html.link.ILinkListener targeted at
>>> component
>>> [MarkupContainer [Component id = preferencesLink]] threw an
>>> exception
>>> [TP-Processor8]
>>> org.apache.wicket.WicketRuntimeException: Method onLinkClicked of
>>> interface org.apache.wicket.markup.html.link.ILinkListener targeted
>>> at
>>> component [MarkupContainer [Component id = preferencesLink]] threw
>>> an
>>> exception
>>> at
>>> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:194)
>>> at
>>> org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
>>> at
>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>> at
>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297)
>>> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399)
>>> at org.apache.wicket.RequestCycle.request(RequestCycle.java:529)
>>> at
>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>> at
>>> org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:124)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>> at
>>> org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:585)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:659)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:359)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311)
>>> at org.sakaiproject.tool.impl.ActiveToolComponent
>>> $MyActiveTool.forward(ActiveToolComponent.java:500)
>>> at
>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1221)
>>> at
>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:204)
>>> at
>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:96)
>>> at
>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:768)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>> at
>>> org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:646)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>> at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>>> at
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
>>> at
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>>> at
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
>>> at
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
>>> at
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
>>> at
>>> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
>>> at
>>> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
>>> at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:775)
>>> at
>>> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:704)
>>> at org.apache.jk.common.ChannelSocket
>>> $SocketConnection.runIt(ChannelSocket.java:897)
>>> at org.apache.tomcat.util.threads.ThreadPool
>>> $ControlRunnable.run(ThreadPool.java:689)
>>> at java.lang.Thread.run(Thread.java:595)
>>> Caused by: java.lang.reflect.InvocationTargetException
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>> at java.lang.reflect.Method.invoke(Method.java:592)
>>> at
>>> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:183)
>>> ... 44 more
>>> Caused by: org.springframework.jdbc.UncategorizedSQLException:
>>> Hibernate
>>> flushing: Could not execute JDBC batch update; uncategorized
>>> SQLException for SQL [insert into PROFILE_PREFERENCES_T
>>> (EMAIL_REQUEST,
>>> EMAIL_CONFIRM, USER_UUID) values (?, ?, ?)]; SQL state [HY000];
>>> error
>>> code [1364]; Field 'TWITTER_ENABLED' doesn't have a default value;
>>> nested exception is java.sql.BatchUpdateException: Field
>>> 'TWITTER_ENABLED' doesn't have a default value
>>> at
>>> org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
>>> at
>>> org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
>>> at
>>> org.springframework.orm.hibernate3.HibernateTransactionManager.convertJdbcAccessException(HibernateTransactionManager.java:801)
>>> at
>>> org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:787)
>>> at
>>> org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:663)
>>> at
>>> org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
>>> at
>>> org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
>>> at
>>> org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
>>> at
>>> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
>>> at
>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
>>> at
>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
>>> at $Proxy29.createDefaultPreferencesRecord(Unknown Source)
>>> at
>>> org.sakaiproject.profile2.tool.pages.MyPreferences.<init>(MyPreferences.java:52)
>>> at org.sakaiproject.profile2.tool.pages.BasePage
>>> $5.onClick(BasePage.java:126)
>>> at
>>> org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:214)
>>> ... 49 more
>>> Caused by: java.sql.BatchUpdateException: Field 'TWITTER_ENABLED'
>>> doesn't have a default value
>>> at
>>> com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2020)
>>> at
>>> com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1451)
>>> at
>>> org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
>>> at
>>> org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
>>> at
>>> org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:247)
>>> at
>>> org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
>>> at
>>> org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
>>> at
>>> org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
>>> at
>>> org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
>>> at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1001)
>>> at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:339)
>>> at
>>> org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
>>> at
>>> org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:655)
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> production mailing list
>>> production at collab.sakaiproject.org
>>> http://collab.sakaiproject.org/mailman/listinfo/production
>>> 
>>> TO UNSUBSCRIBE: send email to
>>> production-unsubscribe at collab.sakaiproject.org with a subject of
>>> "unsubscribe"
>>> 
>> 
>> 
> 
> 
> _______________________________________________
> production mailing list
> production at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/production
> 
> TO UNSUBSCRIBE: send email to production-unsubscribe at collab.sakaiproject.org with a subject of "unsubscribe"



More information about the production mailing list