2024 Update Rollup 1

Functionality in DetailPermanent link for this heading

GeneralPermanent link for this heading

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.

Heartbeat and Sequence NumbersPermanent link for this heading

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:

  • Since the last update all notices have been received in the cache (ensured by sequence numbers),
  • no received notice contains a modification of this object and
  • the last received notice is not older than the specified heartbeat plus a tolerance value (about 7 seconds) for the duration of reception.

Event QueuePermanent link for this heading

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.