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

No transactions defined on DefaultImageDetailsManager

    XMLWordPrintable

Details

    Description

      This manager provides a service to track ImageDetails for image attachments. When requesting an ImageDetails object for an attachment it will create on if it does not exist.

      The ThumbnailManager uses this service to provide thumbnails for image attachments. This is the flow:

      1. DefaultThumbnailManager.getThumbnailInfo is called to get the thumbnail for an attachment
      2. This calls DefaultImageDetailsManager.getImageDetails to see if there is a stored ImageDetails object for the attachment
      3. If there is none available DefaultImageDetailsManager.createImageDetails is called to create one, which is then stored.

      The problem is DefaultImageDetailsManager does not define what transactions are required. So if you call this method in a READ_ONLY transaction and there is no ImageDetails available for the attachment, then you get an exception like this:

      org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER): Turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition. at org.springframework.orm.hibernate.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java:1000)
          ...
          at com.atlassian.confluence.pages.attachments.DefaultImageDetailsDao.save(DefaultImageDetailsDao.java:23)
          at com.atlassian.confluence.pInvalidDataAccessApiUsageExceptionages.attachments.DefaultImageDetailsManager.storeImageDetails(DefaultImageDetailsManager.java:69)
          at com.atlassian.confluence.pages.attachments.DefaultImageDetailsManager.createImageDetails(DefaultImageDetailsManager.java:61)
          at com.atlassian.confluence.pages.attachments.DefaultImageDetailsManager.getImageDetails(DefaultImageDetailsManager.java:49)
          at com.atlassian.confluence.pages.thumbnail.DefaultThumbnailManager.getThumbnailInfo(DefaultThumbnailManager.java:128)
          at com.atlassian.confluence.pages.thumbnail.DefaultThumbnailManager.getThumbnailInfo(DefaultThumbnailManager.java:122)
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            mjensen m@ (Inactive)
            Votes:
            4 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: