TESTAR_dev
TESTAR_dev copied to clipboard
State Model Analysis mode does not handle concurrent ODatabaseSession
Description
The current OrientDB implementation in the AnalysisManager does not support or handle concurrent invocations to open the same database file more than once.
This may provoke the following type of exception:
java.lang.IllegalStateException: File is allowed to be opened only once.
File is already opened under:
----------------------------------------------------------------------------------------------------
java.base/java.lang.Thread.getStackTrace(Thread.java:1606)
com.orientechnologies.orient.core.storage.fs.OFileClassic.acquireExclusiveAccess(OFileClassic.java:564)
com.orientechnologies.orient.core.storage.fs.OFileClassic.open(OFileClassic.java:501)
com.orientechnologies.orient.core.storage.cache.local.OWOWCache.readNameIdMapV2(OWOWCache.java:1900)
com.orientechnologies.orient.core.storage.cache.local.OWOWCache.initNameIdMapping(OWOWCache.java:1791)
com.orientechnologies.orient.core.storage.cache.local.OWOWCache.loadRegisteredFiles(OWOWCache.java:481)
com.orientechnologies.orient.core.storage.disk.OLocalPaginatedStorage.initWalAndDiskCache(OLocalPaginatedStorage.java:632)
com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.open(OAbstractPaginatedStorage.java:375)
com.orientechnologies.orient.core.db.OrientDBEmbedded.open(OrientDBEmbedded.java:296)
com.orientechnologies.orient.core.db.OrientDB.open(OrientDB.java:205)
com.orientechnologies.orient.core.db.OrientDB.open(OrientDB.java:190)
org.testar.statemodel.analysis.AnalysisManager.fetchTestSequence(AnalysisManager.java:260)
org.testar.statemodel.analysis.StateModelServlet.doPost(StateModelServlet.java:90)
javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
Example to reproduce:
- Infer a State Model with 2 or 3 sequences
- Perform quick click actions in the view report buttons to provoke this exception