-
Bug
-
Resolution: Done
-
High
-
3
-
Severity 3 - Minor
-
3
-
Issue Summary
This is reproducible on Data Center: No
There are intermittent issues with the Create or Update Attachment REST API endpoint used to add attachments to our application (/wiki/rest/api/content/{id}/child/attachment - Create or update attachment
Occasionally, the API fails and returns a 500 status accompanied by the message:
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
Since it’s happening for multiple sites, we suspect that it may be due to a race condition or something similar while writing to the db (not necessarily broken objects within a page).
Your assistance and guidance in resolving this issue would be greatly appreciated.
Steps to Reproduce
- N/A
Expected Results
Adds an attachment to a piece of content. If the attachment already exists for the content, then the attachment is updated (i.e. a new version of the attachment is created).
Actual Results
So far, this has not been reproducible consistently, but there had been a number of occurrences. One recent example is traceId 3217d973910e4262b6d4c2e026a28c57.
{ [-] ctx: { [+] } ec2: { [+] } env: prod-eucentral ext: { [-] accessStatus: LICENSED_USE_ACCESS confluenceVersion: 2 connection: 26cdfe41 experience: unknown experienceId: unknown ncsStepVersion: 2 reconciliationReason: UPDATE_ATTACHMENT route: WRITER traceId: 3217d973910e4262b6d4c2e026a28c57 } hostname: bca2cc929884 level: ERROR logger: org.hibernate.engine.jdbc.batch.internal.BatchingBatch m: { [+] } message: HHH000315: Exception executing batch [org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update CONTENT set HIBERNATEVERSION=?, TITLE=?, LOWERTITLE=?, VERSION=?, CREATOR=?, CREATIONDATE=?, LASTMODIFIER=?, LASTMODDATE=?, VERSIONCOMMENT=?, PREVVER=?, CONTENT_STATUS=?, NAVIGATIONTYPE=?, PAGEID=?, SPACEID=?, CHILD_POSITION=?, PARENTID=? where CONTENTID=? and HIBERNATEVERSION=?], SQL: update CONTENT set HIBERNATEVERSION=?, TITLE=?, LOWERTITLE=?, VERSION=?, CREATOR=?, CREATIONDATE=?, LASTMODIFIER=?, LASTMODDATE=?, VERSIONCOMMENT=?, PREVVER=?, CONTENT_STATUS=?, NAVIGATIONTYPE=?, PAGEID=?, SPACEID=?, CHILD_POSITION=?, PARENTID=? where CONTENTID=? and HIBERNATEVERSION=? micros_container: confluence product: confluence thread: http-nio-8081-exec-20 [tenantId:40b6679b-b71a-43f5-b66f-fe2395d9313d, experience:unknown] [traceId:3217d973910e4262b6d4c2e026a28c57] time: 2024-04-10T13:04:43.572520689Z timestamp: 2024-04-10T13:04:43.572 }
{ [-] ctx: { [+] } ec2: { [+] } env: prod-eucentral err: { [-] class: [ [+] ] stack: java.lang.RuntimeException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update CONTENT set HIBERNATEVERSION=?, TITLE=?, LOWERTITLE=?, VERSION=?, CREATOR=?, CREATIONDATE=?, LASTMODIFIER=?, LASTMODDATE=?, VERSIONCOMMENT=?, PREVVER=?, CONTENT_STATUS=?, NAVIGATIONTYPE=?, PAGEID=?, SPACEID=?, CHILD_POSITION=?, PARENTID=? where CONTENTID=? and HIBERNATEVERSION=?; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update CONTENT set HIBERNATEVERSION=?, TITLE=?, LOWERTITLE=?, VERSION=?, CREATOR=?, CREATIONDATE=?, LASTMODIFIER=?, LASTMODDATE=?, VERSIONCOMMENT=?, PREVVER=?, CONTENT_STATUS=?, NAVIGATIONTYPE=?, PAGEID=?, SPACEID=?, CHILD_POSITION=?, PARENTID=? where CONTENTID=? and HIBERNATEVERSION=?. Listener: com.atlassian.confluence.plugins.collab.service.CollabContentEventListener event: com.atlassian.confluence.event.events.content.attachment.AttachmentUpdateEvent com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:51) com.atlassian.confluence.event.ConfluenceListenerHandlersConfiguration$TimingListenerHandler$1.invoke(ConfluenceListenerHandlersConfiguration.java:61) com.atlassian.event.internal.AsynchronousAbleEventDispatcher.lambda$static$0(AsynchronousAbleEventDispatcher.java:57) ... Caused by: org.springframework.orm.hibernate5.HibernateOptimisticLockingFailureException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update CONTENT set HIBERNATEVERSION=?, TITLE=?, LOWERTITLE=?, VERSION=?, CREATOR=?, CREATIONDATE=?, LASTMODIFIER=?, LASTMODDATE=?, VERSIONCOMMENT=?, PREVVER=?, CONTENT_STATUS=?, NAVIGATIONTYPE=?, PAGEID=?, SPACEID=?, CHILD_POSITION=?, PARENTID=? where CONTENTID=? and HIBERNATEVERSION=?; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update CONTENT set HIBERNATEVERSION=?, TITLE=?, LOWERTITLE=?, VERSION=?, CREATOR=?, CREATIONDATE=?, LASTMODIFIER=?, LASTMODDATE=?, VERSIONCOMMENT=?, PREVVER=?, CONTENT_STATUS=?, NAVIGATIONTYPE=?, PAGEID=?, SPACEID=?, CHILD_POSITION=?, PARENTID=? where CONTENTID=? and HIBERNATEVERSION=? ... Caused by: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update CONTENT set HIBERNATEVERSION=?, TITLE=?, LOWERTITLE=?, VERSION=?, CREATOR=?, CREATIONDATE=?, LASTMODIFIER=?, LASTMODDATE=?, VERSIONCOMMENT=?, PREVVER=?, CONTENT_STATUS=?, NAVIGATIONTYPE=?, PAGEID=?, SPACEID=?, CHILD_POSITION=?, PARENTID=? where CONTENTID=? and HIBERNATEVERSION=? ... } ext: { [-] accessStatus: LICENSED_USE_ACCESS confluenceVersion: 2 connection: 26cdfe41 experience: unknown experienceId: unknown ncsStepVersion: 2 rootCause: StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update CONTENT set HIBERNATEVERSION=?, TITLE=?, LOWERTITLE=?, VERSION=?, CREATOR=?, CREATIONDATE=?, LASTMODIFIER=?, LASTMODDATE=?, VERSIONCOMMENT=?, PREVVER=?, CONTENT_STATUS=?, NAVIGATIONTYPE=?, PAGEID=?, SPACEID=?, CHILD_POSITION=?, PARENTID=? where CONTENTID=? and HIBERNATEVERSION=? route: WRITER traceId: 3217d973910e4262b6d4c2e026a28c57 } hostname: bca2cc929884 level: ERROR logger: com.atlassian.event.internal.AsynchronousAbleEventDispatcher m: { [+] } message: There was an exception thrown trying to dispatch event from the invoker [Timing Invoker for SingleParameterMethodListenerInvoker{method=public void com.atlassian.confluence.plugins.collab.service.CollabContentEventListener.collabUpdateAttachment(com.atlassian.confluence.event.events.content.attachment.AttachmentUpdateEvent), listener=com.atlassian.confluence.plugins.collab.service.CollabContentEventListener@226e8f19}] micros_container: confluence product: confluence thread: http-nio-8081-exec-20 [tenantId:40b6679b-b71a-43f5-b66f-fe2395d9313d, experience:unknown] [traceId:3217d973910e4262b6d4c2e026a28c57] time: 2024-04-10T13:04:43.577699944Z timestamp: 2024-04-10T13:04:43.576 }
Workaround
Currently, there is no known workaround for this behavior. A workaround will be added here when available
- is duplicated by
-
CONFCLOUD-79834 [REST API] HTTP 500 response for consecutive calls to "Update attachment data"
-
- Closed
-