Report Execution Caching - Distributed Model


The caching of processed reports needs to be moved from the in-memory model to a database model. There are two issues with the in-memory model: a report is submitted and does not expire for the next 24 hours, in the mean time the SsrsRenderStudio service is restarted. The cache is invalidated and the report is not available for reprocessing. The second problem is that client A processes a report against server A. Then, client A requests a reprocess but it connects to server B instead. Server B does not know about server A's cache and the reprocess fails.
The proposed feature would require database store with a ReportCache table. The reports would be cached there and each SsrsRenderStudio server would be responsible for maintaining the cache TTL. Meaning that one of the table columns would require it to be the server's identifier and only that SsrsRenderStudio server could expire its cache. However, this model would allow server A B or C to process anything that exists in the cache.