Your first question is whether it is possible to control when it retries a connection. That is not currently possible. If the port is disconnected then it will try to reconnect each time there is an attempt to
communicate with that port. This is typically when periodically processed records process. There is not a separate asyn thread that is doing the reconnect attempts.
Your second question is whether you can reduce the number of error messages. The drvAsynIPPort driver does not print any error messages when ports disconnect and reconnect. asynManager also does not print any
error messages when ports disconnect and reconnect. Both of them simply format error message strings that they pass back to device support when they detect an error. Since the error messages are coming from device support (or some other layer above asyn),
the answer to your questions depends on what device support you are using.
There is standard asyn device support that comes with asyn. In asyn R4-27 I made the following change:
Changed error reporting if pasynManager->queueRequest returned an error. Previously error messages were printed on every call, which would cause a large number of messages if the port was disconnected and records were periodically processing. Now an error message
is only printed when the status return from pasynManager->queueRequest changes, so there will be single message for each record when a port disconnects and a single message when it reconnects.
Here are some questions for you:
- What version of asyn are you using?
- What device support are you using? Standard asyn device support, streamDevice, etc.?
- Can you send the error messages you are getting so we can tell where they are coming from?
I am using Asyn with IPPort, in auto connect mode, and set it to disconnect if no messages arrive after a timeout. What happens when the connected equipment is switched off is that Asyn waits
for the timeout and than closes the connection. After this, auto connection keep trying to connect until the equipment is switched on again.
This is perfectly what I need, but the problem is the frequency that the auto connection is being done. We are receiveing a lot of reconnection messages in the IOC console and all of this are
being logged in a file.
Is there a way to configure this to retry a connection only after some minutes? Or even to reduce the amount of messages being sent to the IOC console?
SLAC National Accelerator Laboratory
Advanced Instrumentation for Research Division