When using a Java API to create connections to robot on the Management Console the error above is displayed even though MC shows plenty of licenses, regardless of KCU or CRE-based licensing and at least one RoboServer from the Cluster mentioned in the error has available slots. How can this be resolved?
Note: to verify if RoboServers have available slots check Management Console > Admin > RoboServer tab. For each RoboServer, calculate the difference between "Max Robots" and "Running Robots"; the result is the number of available slots for that RoboServer.
This is by design and is not a software issue. When using Java APIs to run robots, each RoboServer has a default connection limit of 20 (APIs).
When a RoboServer node is registered to Management Console, one connection is used, therefore 19 remain.
Each API (JVM) connection takes up one connection so the 20th API will get a connection error:
Allowing more than 20 connections may introduce performance issues. Therefore, the recommended solution is to have one central API that connects to the RoboServer and all the other APIs would connect to this one, rather than straight to the RoboServer (the central API can also perform checks for slots and "schedule" the other APIs):