I tried to simulate failover with Teiid. I have two SOA-P (ER7 build) nodes. When I killed first node, client correctly switched to second node. Then I re-started first node and killed second node. Client failed with the exception and did not switch back to first node.
Client was very simple - querying VDB in infinite loop and printing result to stdout.
What I did was:
1) I started both nodes, the started a client
2) Killed node no.1 with 'CTRL+Z' and 'kill -9 %1'
3) Client switched to node2
4) Re-started node no.1
5)Killed node no2 with 'CTRL+Z' and 'kill -9 %1'
6)Client failed with exception:
1 [InvalidSessionException]The specified session ID "null" is invalid. It cannot be found in the userbase.
[testng] at org.teiid.client.util.ExceptionUtil.convertException(ExceptionUtil.java:66)
[testng] at org.teiid.jboss.deployers.RuntimeEngineDeployer$2.invoke(RuntimeEngineDeployer.java:309)
[testng] at $Proxy294.executeRequest(Unknown Source)
[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.transport.ServerWorkItem.run(ServerWorkItem.java:81)
[testng] at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:188)
[testng] at org.teiid.transport.SocketClientInstance.processMessagePacket(SocketClientInstance.java:160)
[testng] at org.teiid.transport.SocketClientInstance.receivedMessage(SocketClientInstance.java:149)
[testng] at org.teiid.transport.SSLAwareChannelHandler.messageReceived(SSLAwareChannelHandler.java:210)
[testng] at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:100)
[testng] at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
[testng] at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
[testng] at org.jboss.netty.handler.stream.ChunkedWriteHandler.handleUpstream(ChunkedWriteHandler.java:144)
[testng] at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
[testng] at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
[testng] at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
[testng] at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:317)
[testng] at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:299)
[testng] at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:216)
[testng] at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
[testng] at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
[testng] at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:540)
[testng] at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
[testng] at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
[testng] at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:349)
[testng] at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:281)
[testng] at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:201)
[testng] at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
[testng] at org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
[testng] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
[testng] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
[testng] at java.lang.Thread.run(Thread.java:619)
[testng] Caused by: [InvalidSessionException]The specified session ID "null" is invalid. It cannot be found in the userbase.
[testng] at org.teiid.services.SessionServiceImpl.getSessionInfo(SessionServiceImpl.java:307)
[testng] at org.teiid.services.SessionServiceImpl.validateSession(SessionServiceImpl.java:300)
[testng] at org.teiid.jboss.deployers.RuntimeEngineDeployer$2.invoke(RuntimeEngineDeployer.java:302)
[testng] ... 33 more