Article Number
000036598
Applies To
RSA Product Set: SecurID
RSA Product/Service Type: Authentication Manager
RSA Version/Condition: 8.x
Issue
- A number of users' tokens were in Next Tokencode Mode due to time drift.
- Running the bulk token sync utility from the SSH session tocorrect the issue failed with the following error:
*** FAILED: Concurrent update of token attempted.
*** Aborted by error.
Object of class [com.rsa.authmgr.internal.admin.principalmgt.dal.AMPrincipal] with identifier [fb1e2c0c3d14000a1b58eedf9943cd66]: optimistic locking failed;
nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction
(or unsaved-value mapping was incorrect): [com.rsa.authmgr.internal.admin.principalmgt.dal.AMPrincipal#fb1e2c0c3d14000a1b58eedf9943cd66]
org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Object of class [com.rsa.authmgr.internal.admin.principalmgt.dal.AMPrincipal]
with identifier [fb1e2c0c3d14000a1b58eedf9943cd66]: optimistic locking failed; nested exception is
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect):
[com.rsa.authmgr.internal.admin.principalmgt.dal.AMPrincipal#fb1e2c0c3d14000a1b58eedf9943cd66]
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:672)
at org.springframework.orm.hibernate3.SpringSessionSynchronization.translateException(SpringSessionSynchronization.java:160)
at org.springframework.orm.hibernate3.SpringSessionSynchronization.beforeCommit(SpringSessionSynchronization.java:148)
at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:95)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:927)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:737)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:147)
at com.rsa.authmgr.internal.admin.tokenmgt.impl.SyncTokensBatchJobRunnerImpl.a(SyncTokensBatchJobRunnerImpl.java:186)
at com.rsa.authmgr.internal.admin.tokenmgt.impl.SyncTokensBatchJobRunnerImpl.g(SyncTokensBatchJobRunnerImpl.java:170)
at com.rsa.authmgr.internal.admin.tokenmgt.impl.SyncTokensBatchJobRunnerImpl.startBatchJob(SyncTokensBatchJobRunnerImpl.java:396)
at com.rsa.ims.batchjob.impl.BatchJobTXEngine$4.run(BatchJobTXEngine.java:453)
at com.rsa.ims.batchjob.impl.BatchJobTXEngine$4.run(BatchJobTXEngine.java:1)
at com.rsa.ims.security.spi.SimpleSecurityContextImpl.doAs(SimpleSecurityContextImpl.java:113)
at com.rsa.security.SecurityContext.doAs(SecurityContext.java:439)
at com.rsa.ims.batchjob.impl.BatchJobTXEngine.runBatchJob(BatchJobTXEngine.java:439)
at com.rsa.ims.batchjob.impl.BatchJobTXEngine.execute(BatchJobTXEngine.java:356)
at com.rsa.ims.batchjob.impl.JobRunner.run(SimpleBatchJobLauncher.java:98)
at org.springframework.scheduling.commonj.DelegatingWork.run(DelegatingWork.java:61)
at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:184)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect):
[com.rsa.authmgr.internal.admin.principalmgt.dal.AMPrincipal#fb1e2c0c3d14000a1b58eedf9943cd66]
at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1761)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2403)
at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2303)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2603)
at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:249)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.springframework.orm.hibernate3.SpringSessionSynchronization.beforeCommit(SpringSessionSynchronization.java:145)
at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:95)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:927)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:737)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:147)
at com.rsa.authmgr.internal.admin.tokenmgt.impl.SyncTokensBatchJobRunnerImpl.a(SyncTokensBatchJobRunnerImpl.java:186)
at com.rsa.authmgr.internal.admin.tokenmgt.impl.SyncTokensBatchJobRunnerImpl.g(SyncTokensBatchJobRunnerImpl.java:170)
at com.rsa.authmgr.internal.admin.tokenmgt.impl.SyncTokensBatchJobRunnerImpl.startBatchJob(SyncTokensBatchJobRunnerImpl.java:396)
at com.rsa.ims.batchjob.impl.BatchJobTXEngine$4.run(BatchJobTXEngine.java:453)
at com.rsa.ims.batchjob.impl.BatchJobTXEngine$4.run(BatchJobTXEngine.java:1)
at com.rsa.ims.security.spi.SimpleSecurityContextImpl.doAs(SimpleSecurityContextImpl.java:113)
at com.rsa.security.SecurityContext.doAs(SecurityContext.java:439)
at com.rsa.ims.batchjob.impl.BatchJobTXEngine.runBatchJob(BatchJobTXEngine.java:439)
at com.rsa.ims.batchjob.impl.BatchJobTXEngine.execute(BatchJobTXEngine.java:358)
at com.rsa.ims.batchjob.impl.JobRunner.run(SimpleBatchJobLauncher.java:99)
at org.springframework.scheduling.commonj.DelegatingWork.run(DelegatingWork.java:62)
- A manual resync of the token from Security Console fails with the following error.
There was a problem processing your request.
Unexpected error during command com.rsa.authmgr.admin.tokenmgt.ResynchronizetokenCommand execution
Image description
- Redistribution of the token also does not resolve the issue
Cause
The exact cause of the issue is as of yet unclear, but from the logs it seems like the row pertaining to the token in the database was updated or deleted by another transaction (or unsaved value mapping was incorrect).
Workaround
- Launch the Security Console from the primary Authentication Manager server.
- Either from the dashboard or by selecting Identity > Users > Manage Existing, navigate to the user's page.
- Click on the context arrow for the user and select SecurID Tokens
- Click on the Token context arrow and select Unassign Token.
- From the list of unassigned tokens, the same or different token can be assigned back to the user.
- Redistribute the token to the user to resolve the issue.
- Now do a manual resync of the token to confirm it is working.
- Repeat steps 2 through 7 for the all of the tokens listed in the in the sync utility report that show the following error:
FAILED: Concurrent update of token attempted
Image description