Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-32565

Adding new page permission fails after setting permission with wrong case via soap

    XMLWordPrintable

Details

    Description

      Lets say you have a group called "Group" in confluence.
      Then you add a page permission via soap-api with deviating case in the group name, for example "GROUP".
      The page permission will be set and work correctly in that only members of "Group" can edit or view the page.

      However, you will not be able to make any changes to the pages permissions from the "normal" web interface. The dialog stays open and confluence log shows the following error:

      2014-02-10 16:21:39,738 ERROR [http-8443-120] [atlassian.confluence.servlet.ConfluenceServletDispatcher] sendError Could not execute action
       -- url: /pages/setpagepermissions.action | userName: tobias.kloht | referer: https://wiki.intact-is.com/display/talent/Private+Address+Claire+TestTwo_3
      org.springframework.dao.DataIntegrityViolationException: Hibernate operation: could not insert: [com.atlassian.confluence.security.ContentPermission#60851953]; SQL []; Duplicate entry '60818021-View-Uk HR' for key 'cp_unique_group'; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '60818021-View-Uk HR' for key 'cp_unique_group'
      	at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:100)
      	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
      	at org.springframework.orm.hibernate.HibernateTransactionManager.convertJdbcAccessException(HibernateTransactionManager.java:619)
      	at org.springframework.orm.hibernate.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:605)
      	at org.springframework.orm.hibernate.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:518)
      	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
      	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
      	at com.atlassian.xwork.interceptors.TransactionalInvocation.commitOrRollbackTransaction(TransactionalInvocation.java:107)
      ...
      

      In this case the Group is called "Uk HR" (lowercase k), the permission was added via soap for "UK HR" (uppercase k). As described above the error occurs when adding or removing another user or group to/from the page permissions.
      The database entry for GROUPNAME in CONTENT_PERM reads "UK HR" when added via soap api whereas it is "Uk HR" when added via web interface.

      So to summarize it seems like when adding a new entry you search for all new entries and try to add them. If the casing doesn't match exactly you think the existing entry is new. Adding this group again fails obviously because it would be a duplicate entry.

      Attachments

        Activity

          People

            Unassigned Unassigned
            tobias.kloht Tobias Kloht
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: