question

Upvotes
Accepted
1 0 0 1

Inconsistent failover behavior depending of port settings in dacsDaemon property

We have an application that is connecting to a DACS daemon, using the RFA Java libs. We want to enable failover but are seeing a weird behavior when failing over one IP to the other.

We provide a set of hostname:port to the dacsDaemon property, like this (note the different port):

test1:8212,test2:8211

It appears that if we try to connect to connect/logs onto the DACS:

  • if the first host in the list is working, the connection is established
  • if the first host is down, the connection never establishes to the second one
  • on the other hand, if the first host is down but both entries have the same port (test1:8211,test2:8211), we seem to connect properly to the second one.

Is it a known behavior? Is there anything to change to get a proper failover despite the different ports?

rfajavafailover
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

Upvote
Accepted
30k 34 11 17

Hello @gaetan.vaysse ,

Please find the hosts configuration description in OpenDACS Developers guide:

opendacshosts.gif

I do not think you are using the hosts configuration in the expected way, which results in unexpected behavior. The separate second port setting is not supported, and when you define with two ports, only the expected one port is applied.


opendacshosts.gif (17.7 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Thanks Zoya for your answer! But we are using the DACS client in the RFA Java libs, and the option we are using is dacsDaemon, not hosts, to provide host/ports. That said, your explanation seems to match the observed behavior: do you know if the behavior is supposed to be the same in our case?

1658500644275.png

1658500644275.png (41.3 KiB)
Hello @gaetan.vaysse ,

As you question was asked in OpenDACS forums, I have assumed, incorrectly, that you were integrating with OpenDACS API

Please confirm what version of RFA you are using and what infra you are connecting to, and any other relevant use case information, so we can try to help.

ADS will establish and handle the connection to DACS on behalf of an RFA client, for the purpose of the entitlement checking. As RFA client only needs to connect to ADS, in my understanding, you would not need to explicitly establish a connection to dacs sink daemon and design for fault tolerance. That is, if my understanding of the question is correct now?

Hello Zoya (and thanks for the time you took to answer, btw). We are using RFA Java 8.1.0.E2, connecting to an ADS instance.

As to why we do connect to the DACS sink directly, it's because we have client processes connecting to a gateway that itself connect to a Reuters source; we mutualize subscription to pull data only once, so we need to validate user subscription at the gateway entry point. So removing that dacs check at subscription is not really an option to maintain accurate usage details...

Show more comments