Creating a Tenent through a flowable Process throws following Exception. where as executing the same snippet through ThreadPoolExecuter (java api) works fine without issue. Please assist me on this
Snippet written in kotlin
Flowable process xml
<signal id="createSchemaSignal" name="createSchemaSignal"></signal>
<process id="createSchema" isExecutable="true">
<startEvent id="createSchemaStart">
<signalEventDefinition signalRef="createSchemaSignal" flowable:async="true"></signalEventDefinition>
</startEvent>
<serviceTask id="CreateSchemaService" name="CreateSchema" flowable:expression="#{multitenentService.createSchema()}">
<multiInstanceLoopCharacteristics isSequential="false">
<loopCardinality>${count}</loopCardinality>
</multiInstanceLoopCharacteristics>
</serviceTask>
<sequenceFlow id="createSchemaStartFlow" sourceRef="createSchemaStart" targetRef="CreateSchemaService"></sequenceFlow>
<endEvent id="CreateSchemaEnd" name="End"></endEvent>
<sequenceFlow id="CreateSchemaServiceFlow" sourceRef="CreateSchemaService" targetRef="CreateSchemaEnd"></sequenceFlow>
</process>
Service class Snippet
> fun createSchema() {
> println("====================== create Schema ========================================")
> val schema = schemaDetailSer.createScheama()
>
> println("schema $schema -- started ${System.currentTimeMillis()}");
> println("====================== create done ========================================")
>
> registerManyTenant(schema)
> println("after schema $schema -- started ${System.currentTimeMillis()}");
> TenantStore.getTenentStore().setdefaultCurrentTenantId()
> println("====================== save Schema ========================================")
> schemaDetailSer.saveSchema(schema)
> getFlowableMultiTenant().getTenantInfoHolder().clearCurrentTenantId()
> TenantStore.getTenentStore().clearCurrentTenantId()
> println("I am called for schema $schema completed ${System.currentTimeMillis()}");
> println("====================== save Schema ========================================")
> }
// Register tenant snippet
fun registerManyTenant(schema: SchemaDetails) {
val liquiBean = ArrayList()
val schemaArry = ArrayList<String?>()println("Add Liquibase bean is called ") getLiquiBeanDetail(schema, liquiBean) schemaArry.add(schema.name) schemaArry.add(schema.demoSchema) println("====================== Iniit Liquibase ========================================") getAsyncMultiTenant().runOnAllMultiTenantWaitTillComplete(liquiBean) println("====================== Iniit Flowable ========================================") getFlowableMultiTenant().registerTenant(schemaArry) println("====================== Iniit Flowable End ========================================") getFlowableMultiTenant().getTenantInfoHolder().setCurrentTenantId("default") }
Exception
registering tenent [data_us_64_668919970156911, demo_us_64_668920600090537]
2019-11-21 02:31:33.482 INFO 31510 --- [nio-8090-exec-1] emaMultiTenantProcessEngineConfiguration : creating/validating database schema for tenant demo_us_64_668920600090537
2019-11-21 02:31:33.484 ERROR 31510 --- [mn-acquire-jobs] o.f.c.e.impl.interceptor.CommandContext : Error while closing command context
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'data_us_64_668919970156911.ACT_RU_JOB' doesn't exist
### The error may exist in org/flowable/job/service/db/mapping/entity/Job.xml
### The error may involve org.flowable.job.service.impl.persistence.entity.JobEntityImpl.selectJobsToExecute-Inline
### The error occurred while setting parameters
### SQL: select RES.* from ACT_RU_JOB RES WHERE SCOPE_TYPE_ is null and LOCK_EXP_TIME_ is null LIMIT ? OFFSET ?
### Cause: java.sql.SQLSyntaxErrorException: Table 'data_us_64_668919970156911.ACT_RU_JOB' doesn't exist
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) ~[mybatis-3.5.1.jar:3.5.1]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149) ~[mybatis-3.5.1.jar:3.5.1]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) ~[mybatis-3.5.1.jar:3.5.1]
at org.flowable.common.engine.impl.db.DbSqlSession.selectListWithRawParameter(DbSqlSession.java:202) ~[flowable-engine-common-6.4.2.jar:6.4.2]
at org.flowable.common.engine.impl.db.DbSqlSession.selectListWithRawParameter(DbSqlSession.java:196) ~[flowable-engine-common-6.4.2.jar:6.4.2]
at org.flowable.common.engine.impl.db.DbSqlSession.selectList(DbSqlSession.java:157) ~[flowable-engine-common-6.4.2.jar:6.4.2]
at org.flowable.common.engine.impl.db.DbSqlSession.selectList(DbSqlSession.java:162) ~[flowable-engine-common-6.4.2.jar:6.4.2]
at org.flowable.common.engine.impl.db.DbSqlSession.selectList(DbSqlSession.java:148) ~[flowable-engine-common-6.4.2.jar:6.4.2]
at org.flowable.job.service.impl.persistence.entity.data.impl.MybatisJobDataManager.findJobsToExecute(MybatisJobDataManager.java:66) ~[flowable-job-service-6.4.2.jar:6.4.2]
at org.flowable.job.service.impl.persistence.entity.JobInfoEntityManagerImpl.findJobsToExecute(JobInfoEntityManagerImpl.java:44) ~[flowable-job-service-6.4.2.jar:6.4.2]
at org.flowable.job.service.impl.cmd.AcquireJobsCmd.execute(AcquireJobsCmd.java:53) ~[flowable-job-service-6.4.2.jar:6.4.2]
at org.flowable.job.service.impl.cmd.AcquireJobsCmd.execute(AcquireJobsCmd.java:31) ~[flowable-job-service-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.interceptor.CommandInvoker$1.run(CommandInvoker.java:51) ~[flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.interceptor.CommandInvoker.executeOperation(CommandInvoker.java:93) ~[flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.interceptor.CommandInvoker.executeOperations(CommandInvoker.java:72) ~[flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:56) ~[flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.interceptor.BpmnOverrideContextInterceptor.execute(BpmnOverrideContextInterceptor.java:25) ~[flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.common.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:53) ~[flowable-engine-common-6.4.2.jar:6.4.2]
at org.flowable.common.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:72) ~[flowable-engine-common-6.4.2.jar:6.4.2]