public long updateEntry ( UniqueKeyGenerator generator ) throws PersistenceException { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "updateEntry" , "GeneratorName=" + generator . getName ( ) ) ; long currentLimit = 0L ; // Do we know of this generator? if ( _generators . containsKey ( generator . getName ( ) ) ) { Transaction transaction = null ; try { transaction = _objectManager . getTransaction ( ) ; // Replace the ManagedObject for this generator UniqueKeyGeneratorManagedObject mo = ( UniqueKeyGeneratorManagedObject ) _generators . get ( generator . getName ( ) ) ; // Lock the token so we can make our changes. transaction . lock ( mo ) ; // Update the value in the managed object to the // new increased limit. synchronized ( mo ) { currentLimit = mo . getGeneratorKeyLimit ( ) ; mo . setGeneratorKeyLimit ( currentLimit + generator . getRange ( ) ) ; } // Use replace to update the contents. transaction . replace ( mo ) ; transaction . commit ( false ) ; } catch ( ObjectManagerException ome ) { com . ibm . ws . ffdc . FFDCFilter . processException ( ome , "com.ibm.ws.sib.msgstore.persistence.objectManager.UniqueKeyRangeManager.updateEntry" , "1:286:1.8" , this ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . event ( tc , "Exception caught increasing range of unique key generator!" , ome ) ; if ( transaction != null ) { try { // Clean up our ObjectManager work. transaction . backout ( false ) ; } catch ( ObjectManagerException e ) { com . ibm . ws . ffdc . FFDCFilter . processException ( e , "com.ibm.ws.sib.msgstore.persistence.objectManager.UniqueKeyRangeManager.updateEntry" , "1:298:1.8" , this ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . event ( tc , "Exception caught backing out unique key generator update!" , e ) ; } } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "updateEntry" ) ; throw new PersistenceException ( "Exception caught increasing range of unique key generator!" , ome ) ; } } else { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . event ( tc , "No UniqueKeyGenerator matching: " + generator . getName ( ) + " found to update!" ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "updateEntry" ) ; throw new PersistenceException ( "No UniqueKeyGenerator matching: " + generator . getName ( ) + " found to update!" ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "updateEntry" , "return=" + currentLimit ) ; return currentLimit ; }
Request an immediate update to the persistent state