[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 09:58:00 EDT 2011


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

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

No one is indicating that Teiid doesn't work with proxies.  What are you drawing that conclusion upon?

Van's comment is simply drawing attention to an external failover/load-balancing solution.  The docs have been updated in 7.4 to indicate that people may use HAProxy or whatever existing TCP load-balancer they may want to use instead of the built-in load-balancing feature (which typically relies upon multiple host/port combination in the url and issuing a "set newinstance true" statement).  I don't think that however has much relevance to your testing effort yet.

Testing autoFailover=true is no different with or without proxies.  The behavior should be the same.  I'm just making sure there is understanding of what the failover feature does.  As the docs indicate, it is not transparent failover.  Users should almost never even use the autoFailover feature directly.  It exists mostly for maintaining admin connections and is exposed only to provide an extremely minimal built-in failover feature that is similar to what MetaMatrix had.

> 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