cancel
Showing results for 
Search instead for 
Did you mean: 

Insert into ACT_HI_VARINST causes ORA-01401: inserted value too large for column

soaguy
Champ in-the-making
Champ in-the-making
Hello all,
             I am running into an issue when I set a xml string into a string variable and starting a process instance as below,

——> Error code

                        Map<String, Object> variableMap = new HashMap<String, Object>();
         variableMap.put("_JMSMessage", messageRequest);
         pid = runtimeService.startProcessInstanceByKey("responseHandler", variableMap).getId();


I get the error below,


### Error updating database.  Cause: java.sql.SQLDataException: ORA-01401: inserted value too large for column

### The error may involve org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.insertHistoricVariableInstance-Inline
### The error occurred while setting parameters
### SQL: insert into ACT_HI_VARINST (ID_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, NAME_, REV_, VAR_TYPE_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_, CREATE_TIME_, LAST_UPDATED_TIME_)     values (       ?,       ?,       ?,       ?,       ?,       ?,       ?,       ?,       ?,       ?,       ?,       ?,       ?,       ?     )
### Cause: java.sql.SQLDataException: ORA-01401: inserted value too large for column

   at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
   at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:150)
   at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:137)
   at org.activiti.engine.impl.db.DbSqlSession.flushRegularInsert(DbSqlSession.java:825)
   at org.activiti.engine.impl.db.DbSqlSession.flushPersistentObjects(DbSqlSession.java:805)
   at org.activiti.engine.impl.db.DbSqlSession.flushInserts(DbSqlSession.java:789)
   at org.activiti.engine.impl.db.DbSqlSession.flush(DbSqlSession.java:610)
   at org.activiti.engine.impl.interceptor.CommandContext.flushSessions(CommandContext.java:211)
   at org.activiti.engine.impl.interceptor.CommandContext.close(CommandContext.java:137)
   at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:66)
   at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47)
   at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
   at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45)
   at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)
   at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)
   at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)
   at org.activiti.engine.impl.RuntimeServiceImpl.startProcessInstanceByKey(RuntimeServiceImpl.java:77)



But when I use the same message (in a correlation type interaction) as below it works.

—-> Working code

            Map<String, Object> variableMap = new HashMap<String, Object>();
            variableMap.put("_MessageName", messageName);
            variableMap.put("_MessageContent", messageRequest);
            runtimeService.messageEventReceived(messageName, execution.getId(), variableMap);


Can you please help on how to overcome this issue and the reason why there is a conflicting behavior ? I am using Activiti v5.18.

Many thanks
Clement
12 REPLIES 12

martin_grofcik
Confirmed Champ
Confirmed Champ
Hi,

Did you check org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl#initVariableTypes, org.activiti.engine.impl.variable.LongStringType configuration?

Regards
Martin

mahessub7
Champ in-the-making
Champ in-the-making
I found below that request with large size are processing and small request with size lesser are not .

{response=VariableInstanceEntity[id=35058, name=response, type=string, textValue=<AcknowledgeParty releaseID="CIXS-2.0…]}

{response=VariableInstanceEntity[id=35030, name=response, type=longString, byteArrayValueId=35029]}

{response=VariableInstanceEntity[id=35030, name=response, type=longString, byteArrayValueId=35029], payLoadValidatedResponse=VariableInstanceEntity[id=35016, name=payLoadValidatedResponse, type=serializable, byteArrayValueId=35015], InputRequest=VariableInstanceEntity[id=35007, name=InputRequest, type=longString, byteArrayValueId=35006], ContactBean=VariableInstanceEntity[id=35019, name=ContactBean, type=serializable, byteArrayValueId=35018], ContactRespBean=VariableInstanceEntity[id=35028, name=ContactRespBean, type=serializable, byteArrayValueId=35027], PartyHeaderData=VariableInstanceEntity[id=35009, name=PartyHeaderData, type=serializable, byteArrayValueId=35008], EAVCleansedBean=VariableInstanceEntity[id=35025, name=EAVCleansedBean, type=serializable, byteArrayValueId=35024], FunctionCallType=VariableInstanceEntity[id=35010, name=FunctionCallType, type=string, textValue=HYBRID_CREATE], requestType=VariableInstanceEntity[id=35011, name=requestType, type=string, textValue=rest], PartyActionData=VariableInstanceEntity[id=35013, name=PartyActionData, type=serializable, byteArrayValueId=35012]}

{response=VariableInstanceEntity[id=35030, name=response, type=longString, byteArrayValueId=35029]}

If you observe here processid with 35030 is processed properly and I am getting the response but 35058 throws an error.
Below is the error snippet

SEVERE: #################################################################################################################################################################################
Jan 28, 2016 6:35:56 AM com.cisco.crt.pp.service.PersonPartyServiceImpl managePerson
… 48 more
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:148)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:100)
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:45)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:66)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:41)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1376)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3685)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1329)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1044)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
Caused by: java.sql.SQLDataException: ORA-01401: inserted value too large for column
at java.lang.Thread.run(Thread.java:701)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
at com.redhat.valves.tomcat7.RemoteUserValve.invoke(RemoteUserValve.java:29)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at com.cisco.framework.axis2.http.FrameworkServlet.doPost(FrameworkServlet.java:100)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
at com.cisco.framework.axis2.receivers.GenericInOutReceiver.invokeBusinessLogic(GenericInOutReceiver.java:83)
at com.cisco.framework.axis2.receivers.GenericInOutReceiver.invokeBusinessLogic(GenericInOutReceiver.java:190)
at com.cisco.framework.ServiceWrapper.invoke(ServiceWrapper.java:170)
at com.cisco.services.factory.ServiceInvokerLocal.invoke(ServiceInvokerLocal.java:18)
at java.lang.reflect.Method.invoke(Method.java:622)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at sun.reflect.GeneratedMethodAccessor81.invoke(Unknown Source)
at com.cisco.crt.pp.service.PersonPartyServiceImpl.managePerson(PersonPartyServiceImpl.java:288)
at org.activiti.engine.impl.RuntimeServiceImpl.startProcessInstanceByKey(RuntimeServiceImpl.java:77)
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)
at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47)
at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:66)
at org.activiti.engine.impl.interceptor.CommandContext.close(CommandContext.java:137)
at org.activiti.engine.impl.interceptor.CommandContext.flushSessions(CommandContext.java:211)
at org.activiti.engine.impl.db.DbSqlSession.flush(DbSqlSession.java:610)
at org.activiti.engine.impl.db.DbSqlSession.flushInserts(DbSqlSession.java:789)
at org.activiti.engine.impl.db.DbSqlSession.flushPersistentObjects(DbSqlSession.java:811)
at org.activiti.engine.impl.db.DbSqlSession.flushBulkInsert(DbSqlSession.java:842)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:137)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:150)
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
### Cause: java.sql.SQLDataException: ORA-01401: inserted value too large for column
### SQL: INSERT ALL INTO ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) VALUES (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) INTO ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) VALUES (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) INTO ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) VALUES (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) INTO ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) VALUES (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) INTO ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) VALUES (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) INTO ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) VALUES (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) INTO ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) VALUES (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) INTO ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) VALUES (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) INTO ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) VALUES (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) INTO ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) VALUES (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) SELECT * FROM dual
### The error occurred while setting parameters
### The error may involve org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.bulkInsertVariableInstance_oracle-Inline
### Error updating database. Cause: java.sql.SQLDataException: ORA-01401: inserted value too large for column
org.apache.ibatis.exceptions.PersistenceException:
SEVERE: #################################################################################################################################################################################
Jan 28, 2016 6:35:56 AM com.cisco.crt.pp.service.PersonPartyServiceImpl managePerson

My ProcessEngine Configurations looks like this
##################################################################################
Jan 28, 2016 9:32:20 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Jan 28, 2016 9:32:20 PM org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization started
Jan 28, 2016 9:32:21 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing Root WebApplicationContext: startup date [Thu Jan 28 21:32:21 IST 2016]; root of context hierarchy
Jan 28, 2016 9:32:21 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [spring/application-context.xml]
Jan 28, 2016 9:32:22 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [spring/spring-datasource.xml]
Jan 28, 2016 9:32:22 PM org.springframework.core.io.support.PropertiesLoaderSupport loadProperties
INFO: Loading properties file from class path resource [activiti.properties]
Jan 28, 2016 9:33:05 PM org.activiti.engine.impl.ProcessEngineImpl
INFO: ProcessEngine default created
Jan 28, 2016 9:33:05 PM org.activiti.engine.impl.asyncexecutor.DefaultAsyncJobExecutor start
INFO: Starting up the default async job executor [org.activiti.engine.impl.asyncexecutor.DefaultAsyncJobExecutor].
Jan 28, 2016 9:33:05 PM org.activiti.engine.impl.asyncexecutor.DefaultAsyncJobExecutor startExecutingAsyncJobs
INFO: Creating thread pool queue of size 200
Jan 28, 2016 9:33:05 PM org.activiti.engine.impl.asyncexecutor.DefaultAsyncJobExecutor startExecutingAsyncJobs
INFO: Creating executor service with corePoolSize 10, maxPoolSize 50 and keepAliveTime 1000
Jan 28, 2016 9:33:05 PM org.activiti.engine.impl.asyncexecutor.AcquireTimerJobsRunnable run
INFO: {} starting to acquire async jobs due
Jan 28, 2016 9:33:05 PM org.activiti.engine.impl.asyncexecutor.AcquireAsyncJobsDueRunnable run
INFO: {} starting to acquire async jobs due
Jan 28, 2016 9:33:05 PM org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization completed in 44857 ms
##################################################################################

Java Code where I am facing an issue is
——————————————————————————————-

execution.getEngineServices().getRuntimeService().setVariable(execution.getProcessInstanceId(),
"response", response.toString());

——————————————————————————————–

I have attached my BPMN file too

martin_grofcik
Confirmed Champ
Confirmed Champ
Hi,

I do not know whether it helps, but we have seen similar issue here:
https://forums.activiti.org/content/bug-oracle-ddls

Regards
Martin