bkretschmer
Hello,
Occasionally when a .NET Adapter fails unexpectedly, the restart of the Data Adapter will fail with the following exception: "No connection could be made because the target machine actively refused it [::1]xxxx". (In this case, the value 'xxxx' has been substituted for the port number we're using for this adapter.) The only way we can get this adapter to reconnect to Lightstreamer is by restarting Lightstreamer and then restarting the data adapter. Of course, this is not very desirable as this also forces the restart of other data adapters communicating with the same Lightstreamer instance.
Questions:
1. What are the typical causes of this error message?
2. What are the alternatives to restarting the Lightstreamer instance?
Thanks,
Bill
=========
Lightstreamer 4.0.2 build 1513.1.8 / Windows 2008 R2
Dario Crivelli
Hi Bill, I suppose that you are using a "robust" Proxy Adapter; otherwise, the failure of the Remote Data Adapter would have caused the Server to fail at once.
As far as I know, this error message can be issued by the .NET runtime barely if the targeted port is not open for listening.
As long as a Remote Adapter is connected, the connection ports are indeed not open by the Proxy Adapter;
only when the Remote Adapter disconnects will the "robust" Proxy Adapter open the ports for listening again.
So, what you see is not supposed to happen, but if something goes wrong in the recovery process, then it may.
What do you see in the Server log?
With factory setting, in a normal case, you should see log related with the previous Data Adapter failure, then the reopening of the listening port and eventually the new connection.
bkretschmer
That is correct, we are using the 'robust' adapter configuration. Unfortunately, the Lightstreamer log is no longer available for review. So if the Remote Adapter does not properly disconnect from the Lightstreamer server proxy adapter and release the assigned tcp port, are there any other alternatives to release the port other than restarting the Lightstreamer server?
Dario Crivelli
As you have no logs available, I suppose that you cannot replicate the case easily.
But if you confirm that the failed Remote Adapter must stay alive and does not disconnect, then I'm afraid there is nothing available to recover.
In fact, you cannot communicate with a Proxy Adapter to force it to discard the current connection;
moreover, the Proxy Adapter does not perform any check on the keepalive messages received (they were only added to the benefit of the O.S. or any intermediaries).
Only in case of a Remote Data Adapter, should it be aware of running into problems, it could try to invoke the Failure method on the IItemEventListener;
the "robust" Proxy Adapter would let just that connection fail and would recover the issue.
Anyway, at the moment, the only way to force a Remote Adapter to disconnect is to operate on the socket in some way, perhaps by putting something in the middle.