AnsweredAssumed Answered

SIS Flat File Integration: "exact fetch returns more than requested number of rows"

Question asked by ivokruchten on May 11, 2017
Latest reply on Sep 7, 2017 by ivokruchten

Hi all,

 

sometimes when creating users or courses/ orgs with a flatfile, we get a java error:

 

Caused by: java.sql.SQLException: ORA-01422: exact fetch returns more than requested number of rows

 

Any idea what could cause this?

When we resend the same data, the data is processed successfully.

 

thanks,

Ivo

 

----------

more info:

 

when we want to create an user and sending this to Blackboard:
EXTERNAL_PERSON_KEY|USER_ID|FIRSTNAME|LASTNAME|EMAIL|INSTITUTION_ROLE|DATA_SOURCE_KEY|ROW_STATUS|PASSWD
b.deblauw17a|b.deblauw17a|Basje|Blauw17A de|b.deblauw17a@maastrichtuniversity.nl|STAFF|emp_users.txt|enabled|

we receive this error in the SIS logs:

11-May-2017 09:40:00 - Person [create/update, b.deblauw17a]
An error occurred while processing UserPersistOperation
blackboard.persist.PersistenceException: A database error occurred.
at blackboard.persist.impl.AbstractBaseDbPersister.runQuery(AbstractBaseDbPersister.java:197)
at blackboard.persist.impl.AbstractBaseDbPersister.runQuery(AbstractBaseDbPersister.java:139)
at blackboard.persist.impl.NewBaseDbPersister.doInsert(NewBaseDbPersister.java:127)
at blackboard.persist.impl.NewBaseDbPersister.doPersist(NewBaseDbPersister.java:75)
at blackboard.persist.user.impl.UserDbPersisterImpl.persistInternal(UserDbPersisterImpl.java:85)
at blackboard.persist.user.impl.UserDbPersisterImpl.persist(UserDbPersisterImpl.java:58)
at blackboard.persist.user.impl.UserDbPersisterImpl.persist(UserDbPersisterImpl.java:51)
at blackboard.platform.dataintegration.operationdefinition.UserPersistOperationHandler.handleOperation(UserPersistOperationHandler.java:159)
at blackboard.platform.dataintegration.operationdefinition.UserPersistOperation.execute(UserPersistOperation.java:402)
at blackboard.platform.dataintegration.operationdefinition.BaseOperation.execute(BaseOperation.java:53)
at blackboard.platform.dataintegration.operationdefinition.impl.OperationManagerImpl.processOperation(OperationManagerImpl.java:99)
at blackboard.platform.dataintegration.operationdefinition.impl.OperationManagerImpl.executeOperation(OperationManagerImpl.java:43)
at blackboard.platform.dataintegration.operationdefinition.impl.OperationManagerImpl.executeOperation(OperationManagerImpl.java:34)
at blackboard.platform.dataintegration.mapping.impl.DataIntegrationObjectMappingManagerImpl.persistSISObject(DataIntegrationObjectMappingManagerImpl.java:237)
at sun.reflect.GeneratedMethodAccessor1426.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at blackboard.db.TransactionInterfaceFactory$TransactionHandler$1.run(TransactionInterfaceFactory.java:74)
at blackboard.db.ConnectionManager.performTransaction(ConnectionManager.java:341)
at blackboard.db.TransactionInterfaceFactory$TransactionHandler.invoke(TransactionInterfaceFactory.java:90)
at com.sun.proxy.$Proxy696.persistSISObject(Unknown Source)
at blackboard.dataintegration.flatfile.mapping.handler.BaseDataHandler$1.run(BaseDataHandler.java:313)
at blackboard.platform.dataintegration.mapping.BatchCommitter$1.run(BatchCommitter.java:85)
at blackboard.db.ConnectionManager.performTransaction(ConnectionManager.java:364)
at blackboard.platform.dataintegration.mapping.BatchCommitter.commit(BatchCommitter.java:100)
at blackboard.platform.dataintegration.mapping.BatchCommitter.addOperation(BatchCommitter.java:129)
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:188)
Caused by: java.sql.SQLException: ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at "BBLEARN.USERS_CR", line 204
ORA-06512: at line 1

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:220)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:48)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:938)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1150)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4798)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:4901)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:5631)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1385)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
at blackboard.db.impl.MonitoringConnectionPool$SQLRecorder.execute(MonitoringConnectionPool.java:218)
at blackboard.db.impl.MonitoringConnectionPool$MonitoringCallableStatement.execute(MonitoringConnectionPool.java:634)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
at blackboard.db.impl.SafetyNetCallableStatement.execute(SafetyNetCallableStatement.java:58)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
at blackboard.persist.impl.StoredProcedureQuery.doExecute(StoredProcedureQuery.java:337)
at blackboard.persist.impl.GenericProcedureQuery.doExecute(GenericProcedureQuery.java:213)
at blackboard.persist.impl.Query.executeQuery(Query.java:148)
at blackboard.persist.impl.Query.executeQuery(Query.java:114)
at blackboard.persist.impl.AbstractBaseDbPersister$DbConnectivityPrivilege.run(AbstractBaseDbPersister.java:276)
at java.security.AccessController.doPrivileged(Native Method)
at blackboard.persist.impl.AbstractBaseDbPersister.runQuery(AbstractBaseDbPersister.java:168)
... 29 more

Outcomes