Porting applications to Natural/HA

To start using a Natural application in an HA environment, the following aspects must be considered:

  • Adabas must be accessed via TCP/IP.

  • Transactions for other databases (e.g., SQL) cannot cross I/O boundaries. This is because it is not possible to save and restore the state for such databases before and after an I/O occurs.

  • If the application performs printing or sorting, or uses work files that are read or written across I/O boundaries, the HA_FILESHARE path (see under Local Configuration File > Installation Assignments) should be defined to a highly available directory that is accessible from all backend servers. Both, printing and sorting use the HA_FILESHARE directory (if defined) implicitly when Natural is running in HA mode. The same applies to work files without any path information. However, for work files used across I/O boundaries, it is necessary to adapt any explicit paths to point to the shared location. Note that the internal environment variable $HA_FILESHARE can be used to represent the HA_FILESHARE directory when defining work file locations (e.g., $HA_FILESHARE/wrk001.txt). Work files that are not used across I/O boundaries can continue to use non-shared locations.

  • Natural/HA requires a state server. By default, if a HA_FILESHARE path has been defined (see above), Natural/HA sessions will be saved there. Otherwise, it is possible to define one or more explicit state servers (e.g., REDIS© enterprise databases) and select which one of them should be used via the STATESRV profile parameter.

  • If setting up a read-only buffer pool, the object NATURAL.CXSD in the RES subdirectory of the [FNAT] SYSTEM library should be included in the preload list. This file contains the schema (i.e., data structure) common to all saved Natural/HA sessions and is needed to be able to both read and write them.

Note:
Because work on this topic is continuing, with improvements being frequently back-ported to this version, it is strongly recommended to keep up with any product updates (e.g., fix levels) when making use of this functionality.