Description
Synchronizing Contacts in Blackboard Connect causes a Duplicate Key Constraint error.
Symptoms
Users will be unable to receive SMS notifications.
Steps to Replicate
Log into Blackboard Learn as a System Administrator
Navigate to System Admin > Blackboard Connect Contact Synchronization
Enter the Connect Password and click Synchronize
Expected Behavior:
The Synchronization process begins
Observed Behavior:
An error is displayed:
Error performing initial mapping of all users ERROR: duplicate key value violates unique constraint "user_mapping_ak2"
Detail: Key (user_map_pk1, mapping_key)=(22, 78562) already exists.
For reference, the Error ID is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
Cause
Sample Stacktrace:
Error performing initial mapping of all users ERROR: duplicate key value violates unique constraint "user_mapping_ak2"<br> Detail: Key (user_map_pk1, mapping_key)=(22, 78562) already exists.<p><span class="captionText">For reference, the Error ID is 9790584c-bc5b-4fdd-95b4-397a0a9a2c39.</span> <!--log_error org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "user_mapping_ak2" Detail: Key (user_map_pk1, mapping_key)=(22, 78562) already exists. at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363) at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:138) at com.sun.proxy.$Proxy25.executeUpdate(Unknown Source) at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98) at blackboard.db.impl.MonitoringConnectionPool$SQLRecorder.execute(MonitoringConnectionPool.java:224) at blackboard.db.impl.MonitoringConnectionPool$MonitoringPreparedStatement.executeUpdate(MonitoringConnectionPool.java:366) at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98) at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98) at blackboard.db.impl.SafetyNetPreparedStatement.executeUpdate(SafetyNetPreparedStatement.java:51) at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98) at blackboard.persist.impl.ModificationQuery.doExecute(ModificationQuery.java:63) at blackboard.persist.impl.Query.executeQuery(Query.java:148) at blackboard.persist.BbPersistenceManager$3.run(BbPersistenceManager.java:586) at java.security.AccessController.doPrivileged(Native Method) at blackboard.persist.BbPersistenceManager.runDbQuery(BbPersistenceManager.java:571) at blackboard.persist.BbPersistenceManager.runDbQuery(BbPersistenceManager.java:550) at blackboard.persist.BbPersistenceManager.runDbQuery(BbPersistenceManager.java:537) at blackboard.persist.dao.impl.DAOSupport$DAOPrivilegedAction.run(DAOSupport.java:717) at blackboard.persist.dao.impl.DAOSupport$DAOPrivilegedAction.run(DAOSupport.java:705) at java.security.AccessController.doPrivileged(Native Method) at blackboard.persist.dao.impl.DAOSupport.executeInternal(DAOSupport.java:680) at blackboard.persist.dao.impl.DAOSupport.execute(DAOSupport.java:647) at blackboard.platform.user.mapping.service.impl.UserMappingDAO.createInitialMap(UserMappingDAO.java:375) at blackboard.platform.user.mapping.service.impl.UserMappingManagerImpl.mapAllUsers(UserMappingManagerImpl.java:52) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at blackboard.db.TransactionInterfaceFactory$TransactionHandler$1.run(TransactionInterfaceFactory.java:74) at blackboard.db.ConnectionManager.performTransaction(ConnectionManager.java:591) at blackboard.db.TransactionInterfaceFactory$TransactionHandler.invoke(TransactionInterfaceFactory.java:90) at com.sun.proxy.$Proxy41.mapAllUsers(Unknown Source) at blackboard.platform.telephony.impl.ConnectSynchronizationManagerImpl.performFullSynchronization(ConnectSynchronizationManagerImpl.java:111) at blackboard.webapps.blackboard.telephony.struts.BbConnectContactSyncAction.save(BbConnectContactSyncAction.java:232) ...
Resolution / Workaround
Please contact Blackboard Technical Support.
Target Release
Will Not Fix
