Unable to commit transaction error message suddenly appearing

error
Tags: #<Tag:0x00007fa23128f200>

#1

Hi all, one of our installs has suddenly been getting Assertion Failed error messages advising the system is unable to commit transaction.

They have about 20 users and the build of the system they are using they would have had for at least 6 months with no issues. The system is still in C8, uses TPS and was compiled in debug mode (not sure if that makes a difference).

Below is the error message they get and also the relevant line of the ABFILE.clw.

User access rights have not changed and server size seems OK.

Any pointers as I honestly don’t know where to start.

Many thanks

Graeme

image

From the ABFILE.clw

RelationManager.Update PROCEDURE(BYTE FromForm)
RetVal BYTE(Level:Benign)
I LONG,AUTO
  CODE
    RetVal = SELF.ForceOpen()
    DO CheckError
    IF SELF.UseLogout
      RetVal = SELF.LogoutUpdate()
      DO CheckError
      LOGOUT(SELF.LogoutTimeout)
      IF ERRORCODE()
        SELF.Me.Throw(Msg:LogoutFailed)
        RetVal = Level:Notify
        DO CheckError
      END
    END
    RetVal = SELF.Me.TryUpdate()
    IF RetVal
      IF SELF.UseLogout
        ROLLBACK
      END
      IF FromForm AND SELF.Me.LastError = Msg:ConcurrencyFailed
        SELF.Me.LastError = Msg:ConcurrencyFailedFromForm
      END
      IF RetVal = Level:Notify
        SELF.Me.Throw
      END
      IF SELF.Me.LastError = Msg:ConcurrencyFailed OR SELF.Me.LastError = Msg:ConcurrencyFailedFromForm
        RetVal = Level:Notify
      ELSE
        RetVal = Level:User
      END
      DO CheckError
    END
    SELF.DeferedRelations()
    LOOP I = 1 TO RECORDS(SELF.Relations)
      GET(SELF.Relations,I)
      IF LocalAction(SELF.Relations.UpdateMode) AND NOT SELF.Relations.Fields.EqualLeftBuffer()
        RetVal = SELF.Relations.File.UpdateSecondary(SELF.Relations.HisKey,SELF.Relations.Fields,SELF.Relations.UpdateMode)
        IF RetVal
          SELF.Relations.Fields.AssignRightToLeft
          DO CheckError
        END
      END
    END
    IF SELF.UseLogout
      COMMIT
**?     ASSERT(~ERRORCODE(),'Unable to commit transaction')**
    END
    SELF.Close
    RETURN RetVal

#2

Sounds like it might be data related, have you checked all the tables involved in the transaction?

How repeatable is the error, is it random or constant?

Can you reproduce the error with their data on a different server?


#3

Thanks yes it was a corruption in one data table. I have not been able to repeat it but have been looking to see if teck support had changed anything on their server or the AV software.