[jboss-jira] [JBoss JIRA] Closed: (JBAS-6527) delay in alter table defination with jboss 4.2.1 Ga and oracle9i
Adrian Brock (JIRA)
jira-events at lists.jboss.org
Fri Feb 20 06:13:44 EST 2009
[ https://jira.jboss.org/jira/browse/JBAS-6527?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Adrian Brock closed JBAS-6527.
------------------------------
Resolution: Incomplete Description
I can see from the stacktrace (though not from the configuration which you do not post)
that you are caching prepared statements.
oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:527)
HERE!!!!
at org.jboss.resource.adapter.jdbc.CachedPreparedStatement.executeQuery(CachedPreparedStatement.java:90)
at
org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:236)
at com.eistream.sonora.query.QuerySessionEJBBean.doQuery(QuerySessionEJBBean.java:1779)
I don't find it surprising that a prepared statement will be invalid if you modify the table.
Although this likely depends upon the query that is run - which you don't show either
and how it relates to the table modification.
This is certainly not a bug unless you can show the problem does not occur with plain Oracle.
This could be easily validated by running the following in a standalone environment (pseudo code).
PreparedStatement ps = connection.prepareStatement(query);
ps.executeQuery(); // run the query
alterTable(); // use a different connection to emulate your use case
ps.executeQuery(); // does the prepared statement still work or is its access plan invalid?
"after a while If I run query again then it works fine"
That's because after ~15 minutes idle connections along with their prepared statements get closed
flushing the pool will close idle connections immediately, but that's really a question for the forums.
> delay in alter table defination with jboss 4.2.1 Ga and oracle9i
> ----------------------------------------------------------------
>
> Key: JBAS-6527
> URL: https://jira.jboss.org/jira/browse/JBAS-6527
> Project: JBoss Application Server
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Affects Versions: JBossAS-4.2.1.GA
> Environment: windows 2003 , oracle 9.2.0.1, jboss 4.2.1.GA
> Reporter: kishor gohil
> Original Estimate: 3 days
> Remaining Estimate: 3 days
>
> I have a j2ee application which uses ejb.
> I have configured Jboss 4.2.1GA with orcle 9i. Everything works fine unless I modify table schema.
> In my application I have GUI through which I can add/delete column in table which indirectly alter table defination in oracle using ejb.
> when ever I alter table and run query through my application to fetch records of that table it gives error that variable is not in select list and after a while If I run query again then it works fine
> So my assumption is , there is some delay between oracle and jboss when alter table happend. so can you suggest me where is the cause of issue. In which file I need to change.
> stack trace are below
> java.sql.SQLException: ORA-01007: variable not in select list
>
> at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
> at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
> at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
> at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
> at oracle.jdbc.ttc7.TTC7Protocol.executeFetch(TTC7Protocol.java:955)
> at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2520)
> at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2672)
> at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
> at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:527)
> at org.jboss.resource.adapter.jdbc.CachedPreparedStatement.executeQuery(CachedPreparedStatement.java:90)
> at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:236)
> at com.eistream.sonora.query.QuerySessionEJBBean.doQuery(QuerySessionEJBBean.java:1779)
> 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:585)
> at org.jboss.invocation.Invocation.performCall(Invocation.java:359)
> at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:237)
> at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158)
> at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:169)
> at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
> at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
> at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350)
> at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
> at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168)
> at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
> at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:138)
> at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648)
> at org.jboss.ejb.Container.invoke(Container.java:960)
> at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:169)
> at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:118)
> at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:209)
> at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:195)
> at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)
> at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70)
> at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:112)
> at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
> at $Proxy293.doQuery(Unknown Source)
> at com.eistream.sonora.fields.FmsTableSessionEJBBean.doQuery(FmsTableSessionEJBBean.java:2784)
> at com.eistream.sonora.fields.FmsTableSessionEJBBean.doQuery(FmsTableSessionEJBBean.java:2756)
> 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:585)
> at org.jboss.invocation.Invocation.performCall(Invocation.java:359)
> at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:237)
> at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158)
> at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:169)
> at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
> at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
> at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350)
> at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
> at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168)
> at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
> at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:138)
> at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648)
> at org.jboss.ejb.Container.invoke(Container.java:960)
> at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:169)
> at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:118)
> at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:209)
> at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:195)
> at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)
> at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70)
> at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:112)
> at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
> at $Proxy276.doQuery(Unknown Source)
> at com.eistream.sonora.repositories.CaseFolderRepository.doQuery(CaseFolderRepository.java:117)
> at com.eistream.sonora.fields.fmsquery.FmsQueryUtil.doQuery(FmsQueryUtil.java:28)
> at com.eistream.sonora.query.QueryUtil.doQuery(QueryUtil.java:242)
> at com.eistream.sonora.query.QueryUtil.doQuery(QueryUtil.java:130)
> at com.eistream.sonora.query.QueryServlet.doGetQueryResults(QueryServlet.java:1512)
> at com.eistream.sonora.query.QueryServlet.doGetRunQuery(QueryServlet.java:1824)
> at com.eistream.sonora.query.QueryServlet.doGet(QueryServlet.java:497)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
> at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
> at java.lang.Thread.run(Thread.java:595)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list