If an object gets locked (e.g. because of editing) it is refreshed by the FORCE option. By means of this option in each case an RPC (remote procedure call) to the Fabasoft Folio COO Service is performed to ensure that the object is up to date. If necessary, the update is ensured by another RPC.
If an object that is already placed in the Fabasoft Folio Kernel cache is accessed without the FORCE option (e.g. reading access), no RPC to the Fabasoft Folio COO Services is necessary in case that no modification notice is received from the Fabasoft Folio COO Service. This RPC reduction improves the performance.
If an object is modified by means of a transaction, the appropriate Fabasoft Folio COO Service sends a modification notice. Each Fabasoft Folio Kernel receives this modification notice and marks the object in its Fabasoft Folio Kernel cache as modified. As a consequence, the object needs to be updated by Fabasoft Folio COO Service at the next access.
The modification notice only indicates that the object has been modified but the update of the object is not performed until the next access.
Because there is no guarantee that notifications reach their recipient, it may happen that the Fabasoft Folio Kernel spuriously treats an object to be up to date.
To avoid this each Fabasoft Folio COO Service sends a so-called heartbeat periodically (every 5 seconds) where each message contains a sequence number.
An object in Fabasoft Folio Kernel cache is only up to date if the following conditions are fulfilled:
The event queue is an async queue used for sending notifications from COO services to kernels as well as from kernels to kernels.
It is using RabbitMQ as scalable async queue without a single point of failure.