TESTAR_dev icon indicating copy to clipboard operation
TESTAR_dev copied to clipboard

State Model Analysis mode does not handle concurrent ODatabaseSession

Open ferpasri opened this issue 7 months ago • 0 comments

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:

  1. Infer a State Model with 2 or 3 sequences
  2. Perform quick click actions in the view report buttons to provoke this exception

Image

ferpasri avatar May 14 '25 16:05 ferpasri