Skip to main content

Error Message in SIS Logs when Processing Enrollments on SaaS

Under certain conditions, when processing an Enrollment feed in SaaS, an error is thrown in the SIS logs.

Description

Under certain conditions, when processing an Enrollment feed in SaaS, an error is thrown in the SIS logs.

Symptoms

Jan 10, 2018 12:20:36 PM - Unexpected exception happened during batch processing! - blackboard.persist.PersistenceException: org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
at blackboard.db.DbUtil.callWithSavepointRollback(DbUtil.java:273)
at blackboard.db.DbUtil.callWithSavepointRollback(DbUtil.java:208)
at blackboard.platform.dataintegration.mapping.BatchCommitter$1.run(BatchCommitter.java:86)
at blackboard.db.ConnectionManager.performTransaction(ConnectionManager.java:591)
at blackboard.platform.dataintegration.mapping.BatchCommitter.commit(BatchCommitter.java:111)
at blackboard.platform.dataintegration.mapping.BatchCommitter.addOperation(BatchCommitter.java:136)
at blackboard.dataintegration.flatfile.mapping.handler.BaseDataHandler.handleRecord(BaseDataHandler.java:289)
at blackboard.dataintegration.flatfile.parser.FlatFileParser.parse(FlatFileParser.java:146)
at blackboard.dataintegration.flatfile.queue.FlatFileMessageQueueHandler.onMessage(FlatFileMessageQueueHandler.java:179)
at blackboard.platform.messagequeue.impl.activemq.ActiveMQMessageQueueConsumer$ConsumerThread.run(ActiveMQMessageQueueConsumer.java:194)
Caused by: org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
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:403)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:331)
at org.postgresql.jdbc3.AbstractJdbc3Connection.setSavepoint(AbstractJdbc3Connection.java:108)
at sun.reflect.GeneratedMethodAccessor3980.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.ProxyConnection.invoke(ProxyConnection.java:126)
at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
at org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:70)
at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
at org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:81)
at com.sun.proxy.$Proxy24.setSavepoint(Unknown Source)
at org.apache.commons.dbcp2.DelegatingConnection.setSavepoint(DelegatingConnection.java:671)
at org.apache.commons.dbcp2.DelegatingConnection.setSavepoint(DelegatingConnection.java:671)
at org.apache.commons.dbcp2.DelegatingConnection.setSavepoint(DelegatingConnection.java:671)
at blackboard.db.DbUtil.callWithSavepointRollback(DbUtil.java:251)
... 9 more

Steps to Replicate

  1. Log into Blackboard Learn as a System Administrator

  2. Create 2 Courses and Merge them as Children into a Parent Course

  3. Create 2 Users

  4. Create a new SIS Snapshot Flat File integration

  5. Click the Integration's chevron and choose Advanced Configuration

  6. Click the chevron for Enrollments and choose Field Mapping

  7. Locate Move Cross-listed Enrollment

    • Uncheck Change on Update?

    • Change Source Field to Do not populate this field with feed data

    • Submit

  8. Use SIS to Enroll the User into one of the Child Courses as a Student. Example:

    • EXTERNAL_PERSON_KEY|EXTERNAL_COURSE_KEY|ROLE|ROW_STATUS
      student1|merge_child1|Student|enabled

  9. Run another SIS feed that enrolls the second User in the first Child Course, and moves the first User to the second Child Course. Example:

    • EXTERNAL_PERSON_KEY|EXTERNAL_COURSE_KEY|ROLE|ROW_STATUS
      student2|merge_child1|Student|enabled
      student1|merge_child2|Student|enabled

  10. ​Check the SIS logs

Expected Behavior:
The Enrollment feed is processed successfully, and the changes are made
​Observed Behavior:
An error is thrown, and the changes are not made

Resolution / Workaround

Re-enable Change on update and Source Field for the Move Cross-listed Enrollment Field Mapping.

Target Release

Will Not Fix

Did this answer your question?