Uploaded image for project: 'XWiki Platform'
  1. XWiki Platform
  2. XWIKI-13533

Cannot save a non-terminal page in the same space in a specific use case

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Invalid
    • Affects Version/s: 8.1
    • Fix Version/s: None
    • Component/s: Storage
    • Labels:
      None
    • Environment:
      Chrome 51
      MySQL 5.7
      Windows 10
      Java 8
    • Difficulty:
      Unknown
    • Similar issues:

      Description

      1. Create a non-terminal page "b" in http://localhost:8080/xwiki/bin/view/Main/
      2. Create another non-terminal page "B" in Main space.

      Actual result:

      • After you fill the name of the 2nd page and click Create, you are redirected to edit mode.
      • After you save the page "B", this error is triggered:
        2016-06-29 13:45:08,317 [http://localhost:8080/xwiki/bin/preview/b/WebHome] WARN  o.h.u.JDBCExceptionReporter    - SQL Error: 1062, SQLState: 23000
        2016-06-29 13:45:08,318 [http://localhost:8080/xwiki/bin/preview/b/WebHome] ERROR o.h.u.JDBCExceptionReporter    - Duplicate entry 'b' for key 'XWS_REFERENCE'
        2016-06-29 13:45:08,407 [http://localhost:8080/xwiki/bin/preview/b/WebHome] WARN  c.x.x.w.XWikiAction            - Uncaught exception: Error number 3201 in 3: Exception while saving document xwiki:b.WebHome
        com.xpn.xwiki.XWikiException: Error number 3201 in 3: Exception while saving document xwiki:b.WebHome
                at com.xpn.xwiki.store.XWikiHibernateStore.saveXWikiDoc(XWikiHibernateStore.java:669)
                at com.xpn.xwiki.store.XWikiCacheStore.saveXWikiDoc(XWikiCacheStore.java:167)
                at com.xpn.xwiki.store.XWikiCacheStore.saveXWikiDoc(XWikiCacheStore.java:160)
                at com.xpn.xwiki.XWiki.saveDocument(XWiki.java:1587)
                at com.xpn.xwiki.web.SaveAction.save(SaveAction.java:181)
                at com.xpn.xwiki.web.SaveAction.action(SaveAction.java:223)
                at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:431)
                at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:193)
                at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
                at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
                at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
                at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
                at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
                at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
                at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
                at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
                at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:115)
                at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
                at org.xwiki.wysiwyg.server.filter.ConversionFilter.doFilter(ConversionFilter.java:127)
                at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
                at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
                at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
                at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
                at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
                at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
                at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
                at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:595)
                at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
                at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
                at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
                at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
                at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
                at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
                at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:191)
                at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:72)
                at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:105)
                at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
                at org.xwiki.wysiwyg.server.filter.ConversionFilter.doFilter(ConversionFilter.java:124)
                at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
                at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
                at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
                at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
                at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
                at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
                at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
                at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:137)
                at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
                at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
                at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
                at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
                at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
                at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
                at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
                at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
                at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
                at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
                at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
                at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
                at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
                at org.eclipse.jetty.server.Server.handle(Server.java:499)
                at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
                at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
                at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
                at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
                at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
                at java.lang.Thread.run(Unknown Source)
        Caused by: org.hibernate.HibernateException: Failed to commit or rollback transaction. Root cause []
                at com.xpn.xwiki.store.XWikiHibernateBaseStore.endTransaction(XWikiHibernateBaseStore.java:1046)
                at com.xpn.xwiki.store.XWikiHibernateStore.saveXWikiDoc(XWikiHibernateStore.java:660)
                ... 65 common frames omitted
        Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
                at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
                at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
                at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
                at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
                at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
                at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
                at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
                at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
                at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
                at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
                at com.xpn.xwiki.store.XWikiHibernateBaseStore.endTransaction(XWikiHibernateBaseStore.java:1038)
                ... 66 common frames omitted
        Caused by: java.sql.BatchUpdateException: Duplicate entry 'b' for key 'XWS_REFERENCE'
                at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
                at java.lang.reflect.Constructor.newInstance(Unknown Source)
                at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
                at com.mysql.jdbc.Util.getInstance(Util.java:387)
                at com.mysql.jdbc.SQLError.createBatchUpdateException(SQLError.java:1161)
                at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1773)
                at com.mysql.jdbc.PreparedStatement.executeBatchInternal(PreparedStatement.java:1257)
                at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:958)
                at org.apache.commons.dbcp2.DelegatingStatement.executeBatch(DelegatingStatement.java:345)
                at org.apache.commons.dbcp2.DelegatingStatement.executeBatch(DelegatingStatement.java:345)
                at org.apache.commons.dbcp2.DelegatingStatement.executeBatch(DelegatingStatement.java:345)
                at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
                at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
                ... 74 common frames omitted
        Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'b' for key 'XWS_REFERENCE'
                at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
                at java.lang.reflect.Constructor.newInstance(Unknown Source)
                at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
                at com.mysql.jdbc.Util.getInstance(Util.java:387)
                at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:934)
                at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3966)
                at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3902)
                at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2526)
                at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2673)
                at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2549)
                at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
                at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)
                at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1751)
                ... 81 common frames omitted
        
      • This error is generated only for non-terminal pages created in the same space and having the same name with uppercase title like an existing page with the same lowercase title.
      • Issue does not reproduce for terminal pages.

      PS:

      • I must mention that this issue is generated by the nested spaces, since I tested the same scenario on XE 6.4.5 and I didn`t reproduced the problem there.

        Attachments

          Activity

            People

            • Assignee:
              tmortagne Thomas Mortagne
              Reporter:
              ihrehorciuc Irina Hrehorciuc
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:
                Date of First Response: