ORA-22920

User 870ab5b546

09-09-2014 23:58:20

What does this mean, and what can we do about it?


Sep 9, 2014 7:53:40 PM org.apache.catalina.core.StandardWrapperValve invoke
INFO: SynthScheme.isResponseMatching: unknown exception: java.io.IOException: ORA-22920: row containing the LOB value is not locked

java.lang.RuntimeException: java.io.IOException: ORA-22920: row containing the LOB value is not locked

at chemaxon.jchem.base.APIEvolutionSupport.throwSQLException(APIEvolutionSupport.java:38)
at chemaxon.jchem.db.UpdateHandler.execute(UpdateHandler.java:982)
at chemaxon.jchem.db.UpdateHandler.execute(UpdateHandler.java:903)
at com.epoch.db.ReactorResultsRW.addCalcdProducts(ReactorResultsRW.java:89)

I don't know whether it happens every time we try to write to the JChem table, or just sometimes. We're using JChem 14.8.25.0. We just recalculated the JChem table about 30 minutes ago.


Here's the code that is eliciting the error:


    public static void addCalcdProducts(String molStr, int rxnId,
String[] calcdProdStrs) throws DBException {
final String SELF = "ReactorResultsRW.addCalcdProducts: ";
Connection con = null;
UpdateHandler uh = null;
try {
con = getPoolConnection();
final ConnectionHandler conHandler = getConHandler(con);
if (conHandler == null) {
addCalcdProductsTwoSteps(molStr, rxnId, calcdProdStrs);
} else {
final String rxnName = getName(con, rxnId);
final String addlCols =
joinAll(REACT_RXN_ID, REACT_CALCD_PRODS).toString();
uh = new UpdateHandler(conHandler, UpdateHandler.INSERT,
REACTOR_RESULTS, addlCols);
uh.setDuplicateFiltering(UpdateHandler.DUPLICATE_FILTERING_OFF);
for (final String calcdProd : calcdProdStrs) {
uh.setStructure(molStr);
uh.setValueForAdditionalColumn(1, rxnId);
uh.setValueForAdditionalColumn(2, calcdProd);
uh.execute(); // line 89
} // for each calculated product
} // if we got a good connection handler
} catch (SQLException e) {
alwaysPrint(SELF + "caught SQLException.");
e.printStackTrace();
throw new DBException(e.getMessage());
} finally {
try {
if (uh != null) uh.close();
} catch (SQLException e) {
// do nothing
}
closeConnection(con);
} // try
} // addCalcdProducts(String, int, String[])

I thought you might also like to know that the two additional fields REACT_RXN_ID and REACT_CALCD_PRODS are number(38) and CLOB.

ChemAxon d4fff15f08

10-09-2014 07:34:20

Hi Bob,


 


Thanks for your detailed report! You are getting this error because of a very unfortunate bug present in that version. Please upgrade to the next version (14.9.1.0) and you shall have not problem.


Best regards,


Norbert