[
https://issues.jboss.org/browse/TEIID-1588?page=com.atlassian.jira.plugin...
]
Steven Hawkins commented on TEIID-1588:
---------------------------------------
The behavior you are testing is no different with or without proxies.
As the documentation indicates however, Teiid does not provide application transparent
failover. A connection is tested if it has been stale for more than 1 second. Any
failure that occurs within that 1 second window can cause a client exception. In addition
even if you don't receive a comm exception, you can still get an exception from the
jdbc layer as any running operation is not restarted.
Once an exception of this type occurs though, the connection should be reestablished to a
running server if possible.
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