[teiid-issues] [JBoss JIRA] Commented: (TEIID-1588) Failover does not work correctly when server nodes are behind proxy

Steven Hawkins (JIRA) jira-events at lists.jboss.org
Tue May 17 10:24:01 EDT 2011


    [ https://issues.jboss.org/browse/TEIID-1588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12602602#comment-12602602 ] 

Steven Hawkins commented on TEIID-1588:
---------------------------------------

Van's comment is correct in spirit, with the following considerations:

- If you are using autoFailover=true, then a new instance will be selected automatically in the event of a failure.  No exception may be thrown if this is detected by the staleness check.  If it is not, then an exception will thrown by the client, but continued use of the connection should result in establishing a connection with a server that is up.  Again, this is not transparent failover and will not commonly be used.

- If you are using built-in load balancing through a connection pool and a communication level exception occurs, then either the connection will be thrown out by the pool (if it is detecting specific sql states), or the connection will be returned to the pool and then on its next lease the test query "set newinstance true" should be issued, which will allow the connection to connect to a server that is up.

> Failover does not work correctly when server nodes are behind proxy
> -------------------------------------------------------------------
>
>                 Key: TEIID-1588
>                 URL: https://issues.jboss.org/browse/TEIID-1588
>             Project: Teiid
>          Issue Type: Bug
>          Components: Server
>    Affects Versions: 7.1.1
>         Environment: Fedora 14, JDK1.6
>            Reporter: Boris Belovic
>            Assignee: Steven Hawkins
>         Attachments: proxy.tar.bz2, TeiidClusteringTest.java
>
>
> I wrote simple proxy which simply send data from one port to another. I've put 2 node cluster behind this proxy. 
> Proxy works like this: Client connects to the interface of a proxy and then proxy send all data to cluster. When I stop the proxy, the proxy stops sending data from client to server - this is used as a simulation of cluster node failure.
> Then I ran this scenario:
> 1. Query data from cluster, data retrieved without any problems.
> 2. Then, on the proxy I tried to turn off (block access to) each node of a cluster.
> When I stop the proxy I've got following exception:
>  May 16, 2011 1:50:04 PM org.teiid.jdbc.StatementImpl executeSql
>    [testng] WARNING: Error trying to execute a statement SELECT name, CLUSTER_NAME FROM ClusterTable OPTION NOCACHE.
>    [testng] org.teiid.jdbc.TeiidSQLException: [SingleInstanceCommunicationException]
>    [testng] 1 [EOFException]
>    [testng] 	at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:109)
>    [testng] 	at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:69)
>    [testng] 	at org.teiid.jdbc.StatementImpl.sendRequestMessageAndWait(StatementImpl.java:917)
>    [testng] 	at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:479)
>    [testng] 	at org.teiid.jdbc.StatementImpl.executeQuery(StatementImpl.java:324)
>    [testng] 	at org.jboss.soa.clustering.teiid.TeiidClusteringTest.select(TeiidClusteringTest.java:141)
>    [testng] 	at org.jboss.soa.clustering.teiid.TeiidClusteringTest.testFailover(TeiidClusteringTest.java:72)
>    [testng] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    [testng] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>    [testng] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>    [testng] 	at java.lang.reflect.Method.invoke(Method.java:597)
>    [testng] 	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:641)
>    [testng] 	at org.testng.internal.Invoker.invokeMethod(Invoker.java:677)
>    [testng] 	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:850)
>    [testng] 	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1154)
>    [testng] 	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:137)
>    [testng] 	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:121)
>    [testng] 	at org.testng.TestRunner.runWorkers(TestRunner.java:1108)
>    [testng] 	at org.testng.TestRunner.privateRun(TestRunner.java:737)
>    [testng] 	at org.testng.TestRunner.run(TestRunner.java:596)
>    [testng] 	at org.testng.SuiteRunner.runTest(SuiteRunner.java:315)
>    [testng] 	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:310)
>    [testng] 	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:272)
>    [testng] 	at org.testng.SuiteRunner.run(SuiteRunner.java:221)
>    [testng] 	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
>    [testng] 	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
>    [testng] 	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1027)
>    [testng] 	at org.testng.TestNG.runSuitesLocally(TestNG.java:964)
>    [testng] 	at org.testng.TestNG.run(TestNG.java:896)
>    [testng] 	at org.testng.TestNG.privateMain(TestNG.java:1193)
>    [testng] 	at org.testng.TestNG.main(TestNG.java:1153)
>    [testng] Caused by: java.util.concurrent.ExecutionException: [SingleInstanceCommunicationException]
>    [testng] 1 [EOFException]
>    [testng] 	at org.teiid.client.util.ResultsFuture.convertResult(ResultsFuture.java:100)
>    [testng] 	at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.convertResult(SocketServerInstanceImpl.java:317)
>    [testng] 	at org.teiid.client.util.ResultsFuture.get(ResultsFuture.java:116)
>    [testng] 	at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:348)
>    [testng] 	at org.teiid.jdbc.StatementImpl.sendRequestMessageAndWait(StatementImpl.java:915)
>    [testng] 	... 28 more
>    [testng] Caused by: [SingleInstanceCommunicationException]
>    [testng] 1 [EOFException]
>    [testng] 	at org.teiid.net.socket.SocketServerInstanceImpl.exceptionOccurred(SocketServerInstanceImpl.java:199)
>    [testng] 	at org.teiid.net.socket.SocketServerInstanceImpl.read(SocketServerInstanceImpl.java:257)
>    [testng] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    [testng] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>    [testng] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>    [testng] 	at java.lang.reflect.Method.invoke(Method.java:597)
>    [testng] 	at org.teiid.net.socket.SocketServerConnectionFactory$ShutdownHandler.invoke(SocketServerConnectionFactory.java:107)
>    [testng] 	at $Proxy12.read(Unknown Source)
>    [testng] 	at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:347)
>    [testng] 	... 29 more
>    [testng] Caused by: java.io.EOFException
>    [testng] 	at org.teiid.netty.handler.codec.serialization.ObjectDecoderInputStream.fillBuffer(ObjectDecoderInputStream.java:166)
>    [testng] 	at org.teiid.netty.handler.codec.serialization.ObjectDecoderInputStream.findLength(ObjectDecoderInputStream.java:147)
>    [testng] 	at org.teiid.netty.handler.codec.serialization.ObjectDecoderInputStream.readObjectOverride(ObjectDecoderInputStream.java:81)
>    [testng] 	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:344)
>    [testng] 	at org.teiid.net.socket.OioOjbectChannelFactory$OioObjectChannel.read(OioOjbectChannelFactory.java:114)
>    [testng] 	at org.teiid.net.socket.SocketServerInstanceImpl.read(SocketServerInstanceImpl.java:253)
>    [testng] 	... 36 more
>    [testng] org.teiid.jdbc.TeiidSQLException: Error trying to execute a statement SELECT name, CLUSTER_NAME FROM ClusterTable OPTION NOCACHE.
>    [testng] 	at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:102)
>    [testng] 	at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:483)
>    [testng] 	at org.teiid.jdbc.StatementImpl.executeQuery(StatementImpl.java:324)
>    [testng] 	at org.jboss.soa.clustering.teiid.TeiidClusteringTest.select(TeiidClusteringTest.java:141)
>    [testng] 	at org.jboss.soa.clustering.teiid.TeiidClusteringTest.testFailover(TeiidClusteringTest.java:72)
>    [testng] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    [testng] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>    [testng] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>    [testng] 	at java.lang.reflect.Method.invoke(Method.java:597)
>    [testng] 	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:641)
>    [testng] 	at org.testng.internal.Invoker.invokeMethod(Invoker.java:677)
>    [testng] 	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:850)
>    [testng] 	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1154)
>    [testng] 	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:137)
>    [testng] 	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:121)
>    [testng] 	at org.testng.TestRunner.runWorkers(TestRunner.java:1108)
>    [testng] 	at org.testng.TestRunner.privateRun(TestRunner.java:737)
>    [testng] 	at org.testng.TestRunner.run(TestRunner.java:596)
>    [testng] 	at org.testng.SuiteRunner.runTest(SuiteRunner.java:315)
>    [testng] 	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:310)
>    [testng] 	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:272)
>    [testng] 	at org.testng.SuiteRunner.run(SuiteRunner.java:221)
>    [testng] 	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
>    [testng] 	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
>    [testng] 	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1027)
>    [testng] 	at org.testng.TestNG.runSuitesLocally(TestNG.java:964)
>    [testng] 	at org.testng.TestNG.run(TestNG.java:896)
>    [testng] 	at org.testng.TestNG.privateMain(TestNG.java:1193)
>    [testng] 	at org.testng.TestNG.main(TestNG.java:1153)
>    [testng] Caused by: org.teiid.jdbc.TeiidSQLException: [SingleInstanceCommunicationException]
>    [testng] 1 [EOFException]
>    [testng] 	at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:109)
>    [testng] 	at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:69)
>    [testng] 	at org.teiid.jdbc.StatementImpl.sendRequestMessageAndWait(StatementImpl.java:917)
>    [testng] 	at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:479)
>    [testng] 	... 27 more
>    [testng] Caused by: java.util.concurrent.ExecutionException: [SingleInstanceCommunicationException]
>    [testng] 1 [EOFException]
>    [testng] 	at org.teiid.client.util.ResultsFuture.convertResult(ResultsFuture.java:100)
>    [testng] 	at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.convertResult(SocketServerInstanceImpl.java:317)
>    [testng] 	at org.teiid.client.util.ResultsFuture.get(ResultsFuture.java:116)
>    [testng] 	at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:348)
>    [testng] 	at org.teiid.jdbc.StatementImpl.sendRequestMessageAndWait(StatementImpl.java:915)
>    [testng] 	... 28 more
>    [testng] Caused by: [SingleInstanceCommunicationException]
>    [testng] 1 [EOFException]
>    [testng] 	at org.teiid.net.socket.SocketServerInstanceImpl.exceptionOccurred(SocketServerInstanceImpl.java:199)
>    [testng] 	at org.teiid.net.socket.SocketServerInstanceImpl.read(SocketServerInstanceImpl.java:257)
>    [testng] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    [testng] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>    [testng] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>    [testng] 	at java.lang.reflect.Method.invoke(Method.java:597)
>    [testng] 	at org.teiid.net.socket.SocketServerConnectionFactory$ShutdownHandler.invoke(SocketServerConnectionFactory.java:107)
>    [testng] 	at $Proxy12.read(Unknown Source)
>    [testng] 	at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:347)
>    [testng] 	... 29 more
>    [testng] Caused by: java.io.EOFException
>    [testng] 	at org.teiid.netty.handler.codec.serialization.ObjectDecoderInputStream.fillBuffer(ObjectDecoderInputStream.java:166)
>    [testng] 	at org.teiid.netty.handler.codec.serialization.ObjectDecoderInputStream.findLength(ObjectDecoderInputStream.java:147)
>    [testng] 	at org.teiid.netty.handler.codec.serialization.ObjectDecoderInputStream.readObjectOverride(ObjectDecoderInputStream.java:81)
>    [testng] 	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:344)
>    [testng] 	at org.teiid.net.socket.OioOjbectChannelFactory$OioObjectChannel.read(OioOjbectChannelFactory.java:114)
>    [testng] 	at org.teiid.net.socket.SocketServerInstanceImpl.read(SocketServerInstanceImpl.java:253)
>    [testng] 	... 36 more
>    [testng] @@ Message: Error trying to execute a statement SELECT name, CLUSTER_NAME FROM ClusterTable OPTION NOCACHE.

--
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