incodehq / incode-platform

Combines incode.org modules and isisaddons.org into a single set of modules.
http://platform.incode.org
Apache License 2.0
8 stars 9 forks source link

Command SPI Implementation + Replay - Exception with Oracle Database #84

Open niv0 opened 6 years ago

niv0 commented 6 years ago

Using Oracle RDBMS we get since 1.16.x this exception - see bellow.

With Command Addon in version 1.15 the column ARGUMENT was CLOB, now we use VARCHAR2(2000 BYTE), otherwise Datanucleus/Oracle complains

My assumption, the problem is in the CommandJdo.java , line 503

@javax.jdo.annotations.Column(allowsNull="true", jdbcType="CLOB", sqlType="LONGVARCHAR")

Why do you have here sqlType, there are two more fields with jdbcType="CLOB" but not sqlType.

Regs,Vladimir

Exception:

2018-06-04 16:16:21.967 [qtp466505482-12] onDetach ERROR org.apache.wicket.request.cycle.RequestCycle - Exception occurred during onEndRequest javax.jdo.JDODataStoreException: Update of CLOB value failed: SELECT A0.ARGUMENTS FROM CLL.COMMAND A0 WHERE A0.TRANSACTIONID = ? FOR UPDATE at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:543) at org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:735) at org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:755) at org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusCreateObjectCommand.execute(DataNucleusCreateObjectCommand.java:54) at org.apache.isis.core.runtime.system.persistence.PersistenceSession.executeCommands(PersistenceSession.java:1299) at org.apache.isis.core.runtime.system.persistence.PersistenceSession.execute(PersistenceSession.java:1293) at org.apache.isis.core.runtime.system.transaction.IsisTransaction.doFlush(IsisTransaction.java:385) at org.apache.isis.core.runtime.system.transaction.IsisTransaction.preCommit(IsisTransaction.java:422) at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.endTransactionInternal(IsisTransactionManager.java:392) at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.endTransaction(IsisTransactionManager.java:313) at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:144) at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:132) at org.apache.isis.core.runtime.system.persistence.PersistenceSession.makePersistentInTransaction(PersistenceSession.java:1156) at org.apache.isis.core.runtime.services.persistsession.PersistenceSessionServiceInternalDefault.makePersistent(PersistenceSessionServiceInternalDefault.java:86) at org.apache.isis.core.metamodel.services.repository.RepositoryServiceInternalDefault.persist(RepositoryServiceInternalDefault.java:97) at org.isisaddons.module.command.dom.CommandServiceJdoRepository.persistIfHinted(CommandServiceJdoRepository.java:394) at org.isisaddons.module.command.dom.CommandServiceJdo.complete(CommandServiceJdo.java:69) at org.apache.isis.core.runtime.system.persistence.PersistenceSession.completeCommandFromInteractionAndClearDomainEvents(PersistenceSession.java:518) at org.apache.isis.core.runtime.system.persistence.PersistenceSession.close(PersistenceSession.java:416) at org.apache.isis.core.runtime.system.session.IsisSession.close(IsisSession.java:69) at org.apache.isis.core.runtime.system.session.IsisSessionFactory.closeSession(IsisSessionFactory.java:280) at org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis.onEndRequest(WebRequestCycleForIsis.java:175) at org.apache.wicket.request.cycle.RequestCycleListenerCollection$2.notify(RequestCycleListenerCollection.java:85) at org.apache.wicket.request.cycle.RequestCycleListenerCollection$2.notify(RequestCycleListenerCollection.java:81) at org.apache.wicket.util.listener.ListenerCollection.reversedNotify(ListenerCollection.java:144) at org.apache.wicket.request.cycle.RequestCycleListenerCollection.onEndRequest(RequestCycleListenerCollection.java:80) at org.apache.wicket.request.cycle.RequestCycleListenerCollection$2.notify(RequestCycleListenerCollection.java:85) at org.apache.wicket.request.cycle.RequestCycleListenerCollection$2.notify(RequestCycleListenerCollection.java:81) at org.apache.wicket.util.listener.ListenerCollection.reversedNotify(ListenerCollection.java:144) at org.apache.wicket.request.cycle.RequestCycleListenerCollection.onEndRequest(RequestCycleListenerCollection.java:80) at org.apache.wicket.request.cycle.RequestCycle.onDetach(RequestCycle.java:632) at org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:594) at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297) at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:284) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621) at org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter.doFilter(IsisLogOnExceptionFilter.java:52) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:237) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:214) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1613) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:541) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1593) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1239) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:481) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1141) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:564) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124) at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:122) at org.eclipse.jetty.util.thread.strategy.ExecutingExecutionStrategy.invoke(ExecutingExecutionStrategy.java:58) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:201) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:133) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590) at java.lang.Thread.run(Thread.java:748) NestedThrowablesStackTrace: java.sql.SQLException: Ungültiger Spaltentyp: getCLOB not implemented for class oracle.jdbc.driver.T4CVarcharAccessor at oracle.jdbc.driver.Accessor.unimpl(Accessor.java:412) at oracle.jdbc.driver.Accessor.getCLOB(Accessor.java:1296) at oracle.jdbc.driver.OracleResultSetImpl.getCLOB(OracleResultSetImpl.java:1719) at oracle.jdbc.driver.OracleResultSetImpl.getClob(OracleResultSetImpl.java:732) at org.datanucleus.store.rdbms.datasource.dbcp.DelegatingResultSet.getClob(DelegatingResultSet.java:537) at org.datanucleus.store.rdbms.datasource.dbcp.DelegatingResultSet.getClob(DelegatingResultSet.java:537) at org.datanucleus.store.rdbms.mapping.datastore.OracleClobRDBMSMapping.updateClobColumn(OracleClobRDBMSMapping.java:314) at org.datanucleus.store.rdbms.mapping.java.OracleStringLobMapping.insertPostProcessing(OracleStringLobMapping.java:72) at org.datanucleus.store.rdbms.request.InsertRequest.execute(InsertRequest.java:435) at org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertObjectInTable(RDBMSPersistenceHandler.java:162) at org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertObject(RDBMSPersistenceHandler.java:138) at org.datanucleus.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3363) at org.datanucleus.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3339) at org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:2079) at org.datanucleus.ExecutionContextImpl.persistObjectWork(ExecutionContextImpl.java:1922) at org.datanucleus.ExecutionContextImpl.persistObject(ExecutionContextImpl.java:1777) at org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:730) at org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:755) at org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusCreateObjectCommand.execute(DataNucleusCreateObjectCommand.java:54) at org.apache.isis.core.runtime.system.persistence.PersistenceSession.executeCommands(PersistenceSession.java:1299) at org.apache.isis.core.runtime.system.persistence.PersistenceSession.execute(PersistenceSession.java:1293) at org.apache.isis.core.runtime.system.transaction.IsisTransaction.doFlush(IsisTransaction.java:385) at org.apache.isis.core.runtime.system.transaction.IsisTransaction.preCommit(IsisTransaction.java:422) at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.endTransactionInternal(IsisTransactionManager.java:392) at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.endTransaction(IsisTransactionManager.java:313) at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:144) at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:132) at org.apache.isis.core.runtime.system.persistence.PersistenceSession.makePersistentInTransaction(PersistenceSession.java:1156) at org.apache.isis.core.runtime.services.persistsession.PersistenceSessionServiceInternalDefault.makePersistent(PersistenceSessionServiceInternalDefault.java:86) at org.apache.isis.core.metamodel.services.repository.RepositoryServiceInternalDefault.persist(RepositoryServiceInternalDefault.java:97) at org.isisaddons.module.command.dom.CommandServiceJdoRepository.persistIfHinted(CommandServiceJdoRepository.java:394) at org.isisaddons.module.command.dom.CommandServiceJdo.complete(CommandServiceJdo.java:69) at org.apache.isis.core.runtime.system.persistence.PersistenceSession.completeCommandFromInteractionAndClearDomainEvents(PersistenceSession.java:518) at org.apache.isis.core.runtime.system.persistence.PersistenceSession.close(PersistenceSession.java:416) at org.apache.isis.core.runtime.system.session.IsisSession.close(IsisSession.java:69) at org.apache.isis.core.runtime.system.session.IsisSessionFactory.closeSession(IsisSessionFactory.java:280) at org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis.onEndRequest(WebRequestCycleForIsis.java:175) at org.apache.wicket.request.cycle.RequestCycleListenerCollection$2.notify(RequestCycleListenerCollection.java:85) at org.apache.wicket.request.cycle.RequestCycleListenerCollection$2.notify(RequestCycleListenerCollection.java:81) at org.apache.wicket.util.listener.ListenerCollection.reversedNotify(ListenerCollection.java:144) at org.apache.wicket.request.cycle.RequestCycleListenerCollection.onEndRequest(RequestCycleListenerCollection.java:80) at org.apache.wicket.request.cycle.RequestCycleListenerCollection$2.notify(RequestCycleListenerCollection.java:85) at org.apache.wicket.request.cycle.RequestCycleListenerCollection$2.notify(RequestCycleListenerCollection.java:81) at org.apache.wicket.util.listener.ListenerCollection.reversedNotify(ListenerCollection.java:144) at org.apache.wicket.request.cycle.RequestCycleListenerCollection.onEndRequest(RequestCycleListenerCollection.java:80) at org.apache.wicket.request.cycle.RequestCycle.onDetach(RequestCycle.java:632) at org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:594) at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297) at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:284) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621) at org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter.doFilter(IsisLogOnExceptionFilter.java:52) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:237) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:214) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1613) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:541) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1593) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1239) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:481) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1141) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:564) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124) at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:122) at org.eclipse.jetty.util.thread.strategy.ExecutingExecutionStrategy.invoke(ExecutingExecutionStrategy.java:58) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:201) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:133) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590) at java.lang.Thread.run(Thread.java:748)