[teiid-issues] [JBoss JIRA] Resolved: (TEIID-1697) CLONE - java.io.NotSerializableException: java.io.PrintWriter when SHOWPLAN is DEBUG in a clustered configuration

Steven Hawkins (JIRA) jira-events at lists.jboss.org
Thu Aug 4 11:38:29 EDT 2011


     [ https://issues.jboss.org/browse/TEIID-1697?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Steven Hawkins resolved TEIID-1697.
-----------------------------------

    Resolution: Done


The code will no longer associate the analysis record with cached results.  The debug log / plan will only be available for the initial request in a clustered cache scenario.  This prevents an unintended memory issue as the plans/log can be quite large.  

Also changed the logic to standard logic so the analysis information is sent to the client on the first response.  Here again this will help with memory consumption.  Older clients may not see their debug logs if there is a multi-batch result.  This is not a significant issue though as viewing plans/logs and large results together is atypical.

> CLONE - java.io.NotSerializableException: java.io.PrintWriter when SHOWPLAN is DEBUG in a clustered configuration
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: TEIID-1697
>                 URL: https://issues.jboss.org/browse/TEIID-1697
>             Project: Teiid
>          Issue Type: Bug
>          Components: Query Engine
>    Affects Versions: 7.4.1
>         Environment: Fedora 14, SOA-P 5.1 with CP3 (test), production configuration, clustered with another Fedora system
>            Reporter: Paul Nittel
>             Fix For: 7.4.1, 7.5
>
>
> While testing resultset caching, I found that when I queried (and loaded the cache) I received an exception. There is no exception when queries are sourced by the cache.
> I am using the production configuration, have Teiid logging set to DEBUG and, and "set showplan debug" prior to executing /*+ cache(ttl:10000) */ SELECT * from "PartsMatSourceOra"."PARTS" (Should do the same thing with any source model.)
> The exception is:
> 2011-08-02 15:42:50,713 ERROR [org.jboss.cache.marshall.CacheMarshaller300] (Worker14_QueryProcessorQueue74) Error while marshalling object: ReplicateCommand{cmds=PutKeyValueCommand{fqn=/Teiid/resultset/RESULTSET/CacheID-1190504654, dataVersion=null, globalTransaction=null, key=Cache Entry<NErBtH0HCuOP=user at teiid-security> params:null sql:/*+ cache(ttl:120000) */ SELECT * from "PartsMatSourceOra"."PARTS", value=org.teiid.dqp.internal.process.CachedResults at 393dd5c4}}
> java.io.NotSerializableException: java.io.PrintWriter
>         at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
>         at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
>         at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
>         at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
>         at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
>         at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
>         at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
>         at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
>         at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
>         at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
>         at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:460)
>         at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
>         at org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMarshaller200.java:519)
>         at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:314)
>         at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
>         at org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMarshaller200.java:519)
>         at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:314)
>         at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
>         at org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(CacheMarshaller200.java:191)
>         at org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(CacheMarshaller200.java:131)
>         at org.jboss.cache.marshall.VersionAwareMarshaller.objectToBuffer(VersionAwareMarshaller.java:183)
>         at org.jboss.cache.marshall.VersionAwareMarshaller.objectToBuffer(VersionAwareMarshaller.java:52)
>         at org.jboss.cache.marshall.CommandAwareRpcDispatcher$ReplicationTask.call(CommandAwareRpcDispatcher.java:383)
>         at org.jboss.cache.marshall.CommandAwareRpcDispatcher$ReplicationTask.call(CommandAwareRpcDispatcher.java:355)
>         at org.jboss.cache.util.concurrent.WithinThreadExecutor.submit(WithinThreadExecutor.java:82)
>         at org.jboss.cache.marshall.CommandAwareRpcDispatcher.invokeRemoteCommands(CommandAwareRpcDispatcher.java:210)
>         at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java:744)
>         at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java:712)
>         at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java:717)
>         at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpcInterceptor.java:161)
>         at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpcInterceptor.java:135)
>         at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpcInterceptor.java:107)
>         at org.jboss.cache.interceptors.ReplicationInterceptor.handleCrudMethod(ReplicationInterceptor.java:160)
>         at org.jboss.cache.interceptors.ReplicationInterceptor.visitPutKeyValueCommand(ReplicationInterceptor.java:107)
>         at org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:100)
>         at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
>         at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:131)
>         at org.jboss.cache.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:65)
>         at org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:100)
>         at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
>         at org.jboss.cache.interceptors.TxInterceptor.attachGtxAndPassUpChain(TxInterceptor.java:301)
>         at org.jboss.cache.interceptors.TxInterceptor.handleDefault(TxInterceptor.java:283)
>         at org.jboss.cache.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:65)
>         at org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:100)
>         at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
>         at org.jboss.cache.interceptors.CacheMgmtInterceptor.visitPutKeyValueCommand(CacheMgmtInterceptor.java:119)
>         at org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:100)
>         at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
>         at org.jboss.cache.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:178)
>         at org.jboss.cache.interceptors.InvocationContextInterceptor.visitPutKeyValueCommand(InvocationContextInterceptor.java:82)
>         at org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:100)
>         at org.jboss.cache.interceptors.InterceptorChain.invoke(InterceptorChain.java:287)
>         at org.jboss.cache.invocation.CacheInvocationDelegate.put(CacheInvocationDelegate.java:555)
>         at org.jboss.cache.invocation.NodeInvocationDelegate.put(NodeInvocationDelegate.java:377)
>         at org.teiid.cache.jboss.ExpirationAwareCache.put(ExpirationAwareCache.java:51)
>         at org.teiid.dqp.internal.process.SessionAwareCache.put(SessionAwareCache.java:177)
>         at org.teiid.dqp.internal.process.RequestWorkItem$1.flushBatchDirect(RequestWorkItem.java:396)
>         at org.teiid.query.processor.BatchCollector.flushBatch(BatchCollector.java:140)
>         at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:117)
>         at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:250)
>         at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:184)
>         at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:49)
>         at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:188)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:116)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:290)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:662)
> 2011-08-02 15:42:50,714 ERROR [org.jboss.cache.marshall.CommandAwareRpcDispatcher] (Worker14_QueryProcessorQueue74) java.io.NotSerializableException: java.io.PrintWriter
> 2011-08-02 15:42:50,714 ERROR [org.teiid.PROCESSOR] (Worker14_QueryProcessorQueue74) Unexpected exception for request NErBtH0HCuOP.22
> java.lang.RuntimeException: Failure to marshal argument(s)
>         at org.jboss.cache.marshall.CommandAwareRpcDispatcher$ReplicationTask.call(CommandAwareRpcDispatcher.java:388)
>         at org.jboss.cache.marshall.CommandAwareRpcDispatcher$ReplicationTask.call(CommandAwareRpcDispatcher.java:355)
>         at org.jboss.cache.util.concurrent.WithinThreadExecutor.submit(WithinThreadExecutor.java:82)
>         at org.jboss.cache.marshall.CommandAwareRpcDispatcher.invokeRemoteCommands(CommandAwareRpcDispatcher.java:210)
>         at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java:744)
>         at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java:712)
>         at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java:717)
>         at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpcInterceptor.java:161)
>         at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpcInterceptor.java:135)
>         at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpcInterceptor.java:107)
>         at org.jboss.cache.interceptors.ReplicationInterceptor.handleCrudMethod(ReplicationInterceptor.java:160)
>         at org.jboss.cache.interceptors.ReplicationInterceptor.visitPutKeyValueCommand(ReplicationInterceptor.java:107)
>         at org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:100)
>         at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
>         at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:131)
>         at org.jboss.cache.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:65)
>         at org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:100)
>         at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
>         at org.jboss.cache.interceptors.TxInterceptor.attachGtxAndPassUpChain(TxInterceptor.java:301)
>         at org.jboss.cache.interceptors.TxInterceptor.handleDefault(TxInterceptor.java:283)
>         at org.jboss.cache.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:65)
>         at org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:100)
>         at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
>         at org.jboss.cache.interceptors.CacheMgmtInterceptor.visitPutKeyValueCommand(CacheMgmtInterceptor.java:119)
>         at org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:100)
>         at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
>         at org.jboss.cache.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:178)
>         at org.jboss.cache.interceptors.InvocationContextInterceptor.visitPutKeyValueCommand(InvocationContextInterceptor.java:82)
>         at org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:100)
>         at org.jboss.cache.interceptors.InterceptorChain.invoke(InterceptorChain.java:287)
>         at org.jboss.cache.invocation.CacheInvocationDelegate.put(CacheInvocationDelegate.java:555)
>         at org.jboss.cache.invocation.NodeInvocationDelegate.put(NodeInvocationDelegate.java:377)
>         at org.teiid.cache.jboss.ExpirationAwareCache.put(ExpirationAwareCache.java:51)
>         at org.teiid.dqp.internal.process.SessionAwareCache.put(SessionAwareCache.java:177)
>         at org.teiid.dqp.internal.process.RequestWorkItem$1.flushBatchDirect(RequestWorkItem.java:396)
>         at org.teiid.query.processor.BatchCollector.flushBatch(BatchCollector.java:140)
>         at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:117)
>         at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:250)
>         at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:184)
>         at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:49)
>         at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:188)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:116)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:290)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:662)
> Caused by: java.io.NotSerializableException: java.io.PrintWriter
>         at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
>         at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
>         at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
>         at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
>         at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
>         at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
>         at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
>         at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
>         at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
>         at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
>         at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:460)
>         at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
>         at org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMarshaller200.java:519)
>         at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:314)
>         at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
>         at org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMarshaller200.java:519)
>         at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:314)
>         at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
>         at org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(CacheMarshaller200.java:191)
>         at org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(CacheMarshaller200.java:131)
>         at org.jboss.cache.marshall.VersionAwareMarshaller.objectToBuffer(VersionAwareMarshaller.java:183)
>         at org.jboss.cache.marshall.VersionAwareMarshaller.objectToBuffer(VersionAwareMarshaller.java:52)
>         at org.jboss.cache.marshall.CommandAwareRpcDispatcher$ReplicationTask.call(CommandAwareRpcDispatcher.java:383)
>         ... 45 more

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the teiid-issues mailing list