Hey all – I would like to highlight a behavioral change made in 2023.2 that some of you may be interested in.
Across all systems – on-prem, hosted, Cloud, etc. – the “GetRowsKeepIdle” calls (GetRowsKeepIdleTime and GetRowsKeepIdleTimeWithBallonInfo [sic]) are by far the most frequently made calls to the Server. As measured by frequency, those calls typically account for 40% or more of the calls made to the Server. By default, those calls are made by the Client every 30 seconds – more frequently after a report has been submitted.
As a refresher, the KeepIdle calls are “polling” calls made by the Client System Monitor (both Smart Client and Browser) to see if there has been any Report or Task activity completed on the Server that the Client needs to action – show a Report Preview or pop the information Balloon for Task completion. The KeepIdle in the Method name is a reference to keeping the users license “idle”, so it is eligible to be reused after the defined period of user inactivity.
While the KeepIdle methods are light weight, there is a fair amount of data transferred to and from the Server with each call and in 95+% of the calls, the data does not change. In 2023.2, we are starting to performance optimize this area and the Smart Client will use a new polling method – CheckForTaskUpdatesKeepIdleTime. That method passes a Boolean rather than any real data and if the “Check” returns True, a follow-up call to get the updated Report / Task information will be made by the Client. The Browser Client System Monitor update to follow the new pattern is in the development backlog.
So… you power users that have “hooked” the KeepIdle methods should review the changes made in this area to ensure any “adjustments” you have made will still function as needed.
For the engineering crowd that is questioning why we use Polling vs. Push notifications - we did implement Push notification for the System Monitor, but our Azure SignalR Service costs were higher than expected so we will revisit the Push model in the future.