[Building Sakai] SQL Duplicate entry with Melete and Profile2

Mallika M Thoppay mallika at etudes.org
Wed Aug 18 11:03:12 PDT 2010


Jacques,

Which version of Melete are you using? The Duplicate entry line seems to 
suggest that the database is having a problem accepting a duplicate 
entry for the course ID..which shouldn't be a problem as you can have 
several modules with the same course ID. Can you send us your table's 
structure by running a DESC command at the mysql prompt for the 
following tables: MELETE_MODULE, MELETE_COURSE_MODULE, 
MELETE_MODULE_SHDATES?

Thanks,
Mallika

Jaques Smith wrote:
>
> Hi,
>
>  
>
> We get this duplicate entry exceptions in Melete, the one below is 
> when adding a new moldule, and now something similar in Profile2 when 
> setting the profile image. See stacktraces below, first is the Melete 
> one then Profile2. Could some data somewhere be inconsistent?
>
>  
>
> Sakai 2.7.0
>
> MySql  5.0.51a
>
>  
>
> *Melete:*
>
> 2010-08-16 15:27:33,649  WARN http-8080-Processor23 
> org.hibernate.util.JDBCExceptionReporter - SQL Error: 1062, SQLState: 
> 23000
>
> 2010-08-16 15:27:33,649 ERROR http-8080-Processor23 
> org.hibernate.util.JDBCExceptionReporter - Duplicate entry 
> '22c5e597-31fd-4097-a0b9-053f87386e97' for key 2
>
> 2010-08-16 15:27:33,650 ERROR http-8080-Processor23 
> org.hibernate.event.def.AbstractFlushingEventListener - Could not 
> synchronize database state with session
>
> org.hibernate.exception.ConstraintViolationException: Could not 
> execute JDBC batch update
>
>                 at 
> org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
>
>                 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.etudes.component.app.melete.ModuleDB.addModule(ModuleDB.java:336)
>
>                 at 
> org.etudes.component.app.melete.ModuleServiceImpl.insertProperties(ModuleServiceImpl.java:148)
>
>                 at 
> org.etudes.tool.melete.AddModulePage.save(AddModulePage.java:120)
>
>                 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:597)
>
>                 at 
> com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126)
>
>                 at 
> com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
>
>                 at 
> javax.faces.component.UICommand.broadcast(UICommand.java:312)
>
>                 at 
> javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
>
>                 at 
> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
>
>                 at 
> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
>
>                 at 
> com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
>
>                 at 
> com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
>
>                 at 
> javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
>
>                 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:580)
>
>                 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:679)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
>
>                 at 
> org.sakaiproject.jsf.util.JsfTool.dispatch(JsfTool.java:221)
>
>                 at 
> org.sakaiproject.jsf.util.JsfTool.doPost(JsfTool.java:256)
>
>                 at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>
>                 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.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:364)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
>
>                 at 
> org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:500)
>
>                 at 
> org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1216)
>
>                 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.handlers.ToolHandler.doPost(ToolHandler.java:73)
>
>                 at 
> org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:1059)
>
>                 at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>
>                 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:641)
>
>                 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.coyote.http11.Http11Processor.process(Http11Processor.java:873)
>
>                 at 
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
>
>                 at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
>
>                 at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
>
>                 at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
>
>                 at java.lang.Thread.run(Thread.java:619)
>
> Caused by: java.sql.BatchUpdateException: Duplicate entry 
> '22c5e597-31fd-4097-a0b9-053f87386e97' for key 2
>
>                 at 
> com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2018)
>
>                 at 
> com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1454)
>
>                 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
>
>  
>
> *Profile2:*
>
> 2010-08-18 09:15:16,276  WARN http-8080-Processor24 
> org.hibernate.util.JDBCExceptionReporter - SQL Error: 1062, SQLState: 
> 23000
>
> 2010-08-18 09:15:16,277 ERROR http-8080-Processor24 
> org.hibernate.util.JDBCExceptionReporter - Duplicate entry '' for key 2
>
> 2010-08-18 09:15:16,277 ERROR http-8080-Processor24 
> org.sakaiproject.profile2.logic.ProfileLogicImpl - 
> Profile.saveProfileImageRecord() failed. class 
> org.hibernate.exception.ConstraintViolationException: could not 
> insert: [org.sakaiproject.profile2.model.ProfileImage]
>
> 2010-08-18 09:15:16,277 ERROR http-8080-Processor24 
> org.hibernate.AssertionFailure - an assertion failure occured (this 
> may indicate a bug in Hibernate, but is more likely due to unsafe use 
> of the session)
>
> org.hibernate.AssertionFailure: null id in 
> org.sakaiproject.profile2.model.ProfileImage entry (don't flush the 
> Session after an exception occurs)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:55)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:164)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:120)
>
>                 at 
> org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
>
>                 at 
> org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
>
>                 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 $Proxy30.addNewProfileImage(Unknown Source)
>
>                 at 
> org.sakaiproject.profile2.service.ProfileImageServiceImpl.setProfileImage(ProfileImageServiceImpl.java:126)
>
>                 at 
> org.sakaiproject.profile2.tool.pages.panels.ChangeProfilePictureUpload$1.onSubmit(ChangeProfilePictureUpload.java:110)
>
>                 at 
> org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1355)
>
>                 at 
> org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:810)
>
>                 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:597)
>
>                 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.doPost(WicketServlet.java:145)
>
>                 at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>
>                 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:580)
>
>                 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:679)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:364)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
>
>                 at 
> org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:500)
>
>                 at 
> org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1216)
>
>                 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.handlers.ToolHandler.doPost(ToolHandler.java:73)
>
>                 at 
> org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:1059)
>
>                 at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>
>                 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:641)
>
>                 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.coyote.http11.Http11Processor.process(Http11Processor.java:873)
>
>                 at 
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
>
>                 at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
>
>                 at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
>
>                 at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
>
>                 at java.lang.Thread.run(Thread.java:619)
>
> ERROR: 2010-08-18 09:15:16,299 Method onFormSubmitted of interface 
> org.apache.wicket.markup.html.form.IFormSubmitListener targeted at 
> component [MarkupContainer [Component id = form]] threw an exception 
> [http-8080-Processor24]
>
> org.apache.wicket.WicketRuntimeException: Method onFormSubmitted of 
> interface org.apache.wicket.markup.html.form.IFormSubmitListener 
> targeted at component [MarkupContainer [Component id = form]] 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.doPost(WicketServlet.java:145)
>
>                 at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>
>                 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:580)
>
>                 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:679)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:364)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
>
>                 at 
> org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:500)
>
>                 at 
> org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1216)
>
>                 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.handlers.ToolHandler.doPost(ToolHandler.java:73)
>
>                 at 
> org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:1059)
>
>                 at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>
>                 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:641)
>
>                 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.coyote.http11.Http11Processor.process(Http11Processor.java:873)
>
>                 at 
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
>
>                 at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
>
>                 at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
>
>                 at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
>
>                 at java.lang.Thread.run(Thread.java:619)
>
> 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:597)
>
>                 at 
> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:183)
>
>                 ... 44 more
>
> Caused by: org.hibernate.AssertionFailure: null id in 
> org.sakaiproject.profile2.model.ProfileImage entry (don't flush the 
> Session after an exception occurs)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:55)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:164)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:120)
>
>                 at 
> org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
>
>                 at 
> org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
>
>                 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 $Proxy30.addNewProfileImage(Unknown Source)
>
>                 at 
> org.sakaiproject.profile2.service.ProfileImageServiceImpl.setProfileImage(ProfileImageServiceImpl.java:126)
>
>                 at 
> org.sakaiproject.profile2.tool.pages.panels.ChangeProfilePictureUpload$1.onSubmit(ChangeProfilePictureUpload.java:110)
>
>                 at 
> org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1355)
>
>                 at 
> org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:810)
>
>                 ... 49 more
>
> 2010-08-18 09:21:12,939  WARN http-8080-Processor25 
> org.hibernate.util.JDBCExceptionReporter - SQL Error: 1062, SQLState: 
> 23000
>
> 2010-08-18 09:21:12,939 ERROR http-8080-Processor25 
> org.hibernate.util.JDBCExceptionReporter - Duplicate entry '' for key 2
>
> 2010-08-18 09:21:12,939 ERROR http-8080-Processor25 
> org.sakaiproject.profile2.logic.ProfileLogicImpl - 
> Profile.saveProfileImageRecord() failed. class 
> org.hibernate.exception.ConstraintViolationException: could not 
> insert: [org.sakaiproject.profile2.model.ProfileImage]
>
> 2010-08-18 09:21:12,939 ERROR http-8080-Processor25 
> org.hibernate.AssertionFailure - an assertion failure occured (this 
> may indicate a bug in Hibernate, but is more likely due to unsafe use 
> of the session)
>
> org.hibernate.AssertionFailure: null id in 
> org.sakaiproject.profile2.model.ProfileImage entry (don't flush the 
> Session after an exception occurs)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:55)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:164)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:120)
>
>                 at 
> org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
>
>                 at 
> org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
>
>                 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 $Proxy30.addNewProfileImage(Unknown Source)
>
>                 at 
> org.sakaiproject.profile2.service.ProfileImageServiceImpl.setProfileImage(ProfileImageServiceImpl.java:126)
>
>                 at 
> org.sakaiproject.profile2.tool.pages.panels.ChangeProfilePictureUpload$1.onSubmit(ChangeProfilePictureUpload.java:110)
>
>                 at 
> org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1355)
>
>                 at 
> org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:810)
>
>                 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:597)
>
>                 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.doPost(WicketServlet.java:145)
>
>                 at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>
>                 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:580)
>
>                 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:679)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:364)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
>
>                 at 
> org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:500)
>
>                 at 
> org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1216)
>
>                 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.handlers.ToolHandler.doPost(ToolHandler.java:73)
>
>                 at 
> org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:1059)
>
>                 at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>
>                 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:641)
>
>                 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.coyote.http11.Http11Processor.process(Http11Processor.java:873)
>
>                 at 
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
>
>                 at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
>
>                 at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
>
>                 at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
>
>                 at java.lang.Thread.run(Thread.java:619)
>
> ERROR: 2010-08-18 09:21:12,949 Method onFormSubmitted of interface 
> org.apache.wicket.markup.html.form.IFormSubmitListener targeted at 
> component [MarkupContainer [Component id = form]] threw an exception 
> [http-8080-Processor25]
>
> org.apache.wicket.WicketRuntimeException: Method onFormSubmitted of 
> interface org.apache.wicket.markup.html.form.IFormSubmitListener 
> targeted at component [MarkupContainer [Component id = form]] 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.doPost(WicketServlet.java:145)
>
>                 at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>
>                 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:580)
>
>                 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:679)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:364)
>
>                 at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
>
>                 at 
> org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:500)
>
>                 at 
> org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1216)
>
>                 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.handlers.ToolHandler.doPost(ToolHandler.java:73)
>
>                 at 
> org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:1059)
>
>                 at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>
>                 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:641)
>
>                 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.coyote.http11.Http11Processor.process(Http11Processor.java:873)
>
>                 at 
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
>
>                 at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
>
>                 at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
>
>                 at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
>
>                 at java.lang.Thread.run(Thread.java:619)
>
> 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:597)
>
>                 at 
> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:183)
>
>                 ... 44 more
>
> Caused by: org.hibernate.AssertionFailure: null id in 
> org.sakaiproject.profile2.model.ProfileImage entry (don't flush the 
> Session after an exception occurs)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:55)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:164)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:120)
>
>                 at 
> org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
>
>                 at 
> org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
>
>                 at 
> org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
>
>                 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 $Proxy30.addNewProfileImage(Unknown Source)
>
>                 at 
> org.sakaiproject.profile2.service.ProfileImageServiceImpl.setProfileImage(ProfileImageServiceImpl.java:126)
>
>                 at 
> org.sakaiproject.profile2.tool.pages.panels.ChangeProfilePictureUpload$1.onSubmit(ChangeProfilePictureUpload.java:110)
>
>                 at 
> org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1355)
>
>                 at 
> org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:810)
>
>                 ... 49 more
>
>  
>
> Thanks,
>
> Jaques
>
>  
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> sakai-dev mailing list
> sakai-dev at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>
> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of "unsubscribe"


-- 
Mallika M Thoppay
Learning Systems Developer
Etudes Inc
http://etudes.org 



More information about the sakai-dev mailing list