PUBLIC - Liferay Portal Community Edition
  1. PUBLIC - Liferay Portal Community Edition
  2. LPS-39665

Kaleo logging error with Oracle: ORA-01461: can bind a LONG value only for insert into a LONG column

    Details

    • Fix Priority:
      3
    • Similar Issues:
      Show 5 results 

      Description

      The problem is Comment_ column of KaleoLog table has the type VARCHAR2 in Oracle. The maximum size of that is 4000 bytes, but if an exception is thrown during script execution the whole script is included in the comment_ field and it can easily exceed the 4000 byte limitation.

      Result: You will get three error messages: "ORA-01461: can bind a LONG value only for insert into a LONG column". However the third one is a bigger one, which indicates that the kaleo logging procedure failed to write to the database (see attachment).

      12:54:47,924 ERROR [liferay/kaleo_graph_walker-2][JDBCExceptionReporter:76] ORA-01461: can bind a LONG value only for insert into a LONG column

      12:54:47,926 ERROR [liferay/kaleo_graph_walker-2][JDBCExceptionReporter:76] ORA-01461: can bind a LONG value only for insert into a LONG column

      12:54:47,948 ERROR [liferay/kaleo_graph_walker-2][ParallelDestination:117] Unable to process message {destinationName=liferay/kaleo_graph_walker, response=null, responseDestinationName=null, responseI
      d=null, payload=com.liferay.portal.workflow.kaleo.runtime.graph.PathElement@46d8ee, values={principalPassword=null, principalName=10196, companyId=10154}}
      com.liferay.portal.kernel.messaging.MessageListenerException: com.liferay.portal.kernel.exception.SystemException: com.liferay.portal.kernel.dao.orm.ORMException: org.hibernate.QueryTimeoutException:
      Could not execute JDBC batch update
      at com.liferay.portal.kernel.messaging.BaseMessageListener.receive(BaseMessageListener.java:31)
      at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:63)
      at com.liferay.portal.kernel.messaging.ParallelDestination$1.run(ParallelDestination.java:114)
      at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask._runTask(ThreadPoolExecutor.java:671)
      at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask.run(ThreadPoolExecutor.java:582)
      at java.lang.Thread.run(Thread.java:619)
      Caused by: com.liferay.portal.kernel.exception.SystemException: com.liferay.portal.kernel.dao.orm.ORMException: org.hibernate.QueryTimeoutException: Could not execute JDBC batch update
      at com.liferay.portal.service.persistence.impl.BasePersistenceImpl.processException(BasePersistenceImpl.java:193)
      at com.liferay.portal.workflow.kaleo.service.persistence.KaleoLogPersistenceImpl.updateImpl(KaleoLogPersistenceImpl.java:414)
      at com.liferay.portal.workflow.kaleo.service.persistence.KaleoLogPersistenceImpl.updateImpl(KaleoLogPersistenceImpl.java:68)
      at com.liferay.portal.service.persistence.impl.BasePersistenceImpl.update(BasePersistenceImpl.java:257)
      at sun.reflect.GeneratedMethodAccessor590.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:320)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
      at com.liferay.portal.dao.shard.advice.ShardPersistenceAdvice.invoke(ShardPersistenceAdvice.java:52)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
      at $Proxy400.update(Unknown Source)
      at com.liferay.portal.workflow.kaleo.service.impl.KaleoLogLocalServiceImpl.addActionExecutionKaleoLog(KaleoLogLocalServiceImpl.java:71)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:122)
      at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:71)
      at com.liferay.portal.dao.jdbc.aop.DynamicDataSourceTransactionInterceptor.invoke(DynamicDataSourceTransactionInterceptor.java:44)
      at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118)
      at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57)
      at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118)
      at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57)
      at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118)
      at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57)
      at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118)
      at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57)
      at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118)
      at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57)
      at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118)
      at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:211)
      at $Proxy417.addActionExecutionKaleoLog(Unknown Source)
      at com.liferay.portal.workflow.kaleo.service.KaleoLogLocalServiceUtil.addActionExecutionKaleoLog(KaleoLogLocalServiceUtil.java:284)
      at com.liferay.portal.workflow.kaleo.runtime.action.ActionExecutorUtil.executeKaleoActions(ActionExecutorUtil.java:57)
      at com.liferay.portal.workflow.kaleo.runtime.node.TaskNodeExecutor.doEnter(TaskNodeExecutor.java:158)
      at com.liferay.portal.workflow.kaleo.runtime.node.BaseNodeExecutor.enter(BaseNodeExecutor.java:49)
      at com.liferay.portal.workflow.kaleo.runtime.graph.DefaultGraphWalker.follow(DefaultGraphWalker.java:61)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:320)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
      at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:71)
      at com.liferay.portal.dao.jdbc.aop.DynamicDataSourceTransactionInterceptor.invoke(DynamicDataSourceTransactionInterceptor.java:44)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
      at $Proxy433.follow(Unknown Source)
      at com.liferay.portal.workflow.kaleo.runtime.graph.messaging.PathElementMessageListener.doReceive(PathElementMessageListener.java:54)
      at com.liferay.portal.kernel.messaging.BaseMessageListener.receive(BaseMessageListener.java:25)
      ... 5 more
      Caused by: com.liferay.portal.kernel.dao.orm.ORMException: org.hibernate.QueryTimeoutException: Could not execute JDBC batch update
      at com.liferay.portal.dao.orm.hibernate.ExceptionTranslator.translate(ExceptionTranslator.java:30)
      at com.liferay.portal.dao.orm.hibernate.SessionImpl.flush(SessionImpl.java:122)
      at com.liferay.portal.kernel.dao.orm.ClassLoaderSession.flush(ClassLoaderSession.java:218)
      at com.liferay.portal.service.persistence.BatchSessionImpl.update(BatchSessionImpl.java:95)
      at com.liferay.portal.service.persistence.BatchSessionUtil.update(BatchSessionUtil.java:50)
      at com.liferay.portal.workflow.kaleo.service.persistence.KaleoLogPersistenceImpl.updateImpl(KaleoLogPersistenceImpl.java:409)
      ... 61 more
      Caused by: org.hibernate.QueryTimeoutException: Could not execute JDBC batch update
      at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:124)
      at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
      at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
      at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
      at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
      at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
      at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
      at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
      at com.liferay.portal.dao.orm.hibernate.SessionImpl.flush(SessionImpl.java:119)
      ... 65 more
      Caused by: java.sql.BatchUpdateException: ORA-01461: can bind a LONG value only for insert into a LONG column

      at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:367)
      at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:8739)
      at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)
      at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
      at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
      ... 71 more

      Issue does not occur i.e. on MySQL.

        Issue Links

          Activity

          Hide
          Nimrod Papp added a comment -

          An other approach (besides changing the column type) would be to log a more descriptive error message instead or in addition to writing the script into the comments. Please take this into consideration in the resolution.

          Show
          Nimrod Papp added a comment - An other approach (besides changing the column type) would be to log a more descriptive error message instead or in addition to writing the script into the comments. Please take this into consideration in the resolution.

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:
                Days since last comment:
                1 year, 41 weeks, 5 days ago

                Development

                  Structure Helper Panel