Date: 11-12-2010 Subject: PATCH RELEASE 9.4D DATA Manager Files These release notes pertain to the following programs or files: SUNDM.EXE 9.4D 12 Nov 2010 9,4,4,500 SUNWSRV.DLL 9.4B 28 May 2010 9,4,2,500 *============================================================================== Notes for DOCUMENTATION: - In the Sunbelt Data Manager manual, change the DM_KEEPALIVE Keyword last paragraph description to read as follows: "To implement the KEEPALIVE processing, the DM_KEEPALIVE keyword must be specified in the server configuration file. By default the client runtimes provide keepalive messages when the Data Manager has KEEPALIVE support enabled. However, there is a PLB_DMKEEPALIVE keyword that can be specified in the client runtime INI file to disable keepalive processing by the client runtime." *============================================================================== The following files have been changed as noted: ------------------------------------------------------------------------------- SUNDM - The HTTP instruction support has been implemented. When a HTTP instruction is executed at a client runtime and the *SUNDM keyword is specified, the actual execution of the HTTP instruction is performed at the Data Manager identified by the *SUNDM keyword data. When the HTTP instruction is redirected to a Data Manager, the HTTP instruction supports two special tags specified a ''or ''. The '' and '' data for a tag replaces the data of a HostName, ResourcePath, or *PostMessage parameter in the HTTP instruction. The '' tag is used to specify an environment variable name that exists in the SUNDM CFG file. The data string for the specified environment variable is substituted into a HTTP instruction parameter that contains the tag. The '' tag is used to specify the name for a file located at the Data Manager that contains the data string to be substituted into the parameter that contains this tag. The support for these embedded tags have been implemented to maximize the ability to configure and optimize the HTTP operations when using the Data Manager. When the '' or '' tags are used, they must be specified as the first data in keyword data string. Note: A. The '' tag must be followed by a keyname that is appended to a prefix named 'HTTP_'. A full keyword named 'HTTP_keyname' is used to find the keyword in the SUNDM CFG file. The data specified by the 'HTTP_keyname' keyword is retrieved and used for the given HTTP parameter that includes the 'keyname' tag. The 'HTTP_keyname' keywords must be placed in the 'environment' section of the SUNDM CFG file. B. The '' tag must be followed by a name that identifies a file whose data is to be read and substituted for the HTTP parameter that includes the 'filename' tag. The filename supports the normal PLB $Macro and Datapoint style name formats the same as a PLB OPEN instruction. The file identified by the filename must be located at the Data Manager server. C. The '' or '' tag substitution can ONLY be used for the HostName, ResourcePath, and the *PostMessage parameters in the HTTP instruction. D. Example of '' and '' tag substitution for HTTP: [Environment] ( SUNDM CFG file ) HTTP_Movies=movies.yahoo.com HTTP_Tickets=GET /showtimes-tickets/all/?location=Tyler+TX Sample HTTP using tag substitution: HTTP "Movies": "Tickets": *Result=D1000 In this example, the '' tags are being used to retrieve the HostName and ResourcePath parameters from the SUNDM CFG file. - Modified the ISAM support in the Data Manager to automatically compact an ISI file when a PLB IO operation is executed where an ISAM key is to be inserted into the ISI tree structure. This change is being implemented to minimize the impact on end-user applications where an I62 error could be encountered as the PLB program is adding keys to an ISI file. The automatic ISI compact action can occur in any of the following PLB IO instructions for ISAM. WRITE IFILE INSERT IFILE WRITE FILELIST UPDATE FILELIST Note: 1. Since all of the PLB instructions that can invoke a compact action are guaranteed to have an enqueue lock applied, any other end-user applications with a pending lock on the text file associated with the ISI file will wait until the compact action is completed. 2. The automatic ISI compact action is implemented as the default behavior by the Data Manager. The Data Manager keyword named 'DM_AUTOISICOMPACT={on|off}' can be used to define the default behavior to be implemented. If this keyword is not specified, the default behavior is the same as being set to 'ON'. If this keyword is set to 'ON', the automatic ISI compacting is enabled for all IFILE variables. If this keyword is set to 'OFF', the runtime does not perform any automatic ISI compacting action unless the IFILE variable is opened using a new CMP_ISICOMPACT mode bit value. 3. Two new bit mask values have been added for the MODE option for an OPEN and PREPARE of an IFILE variable. The new MODE bit mask values have been implemented as follows: CMP_ISICOMPACT 0x00008000 Enable ISI compacting for the specific IFILE variable. CMP_NOISICOMPACT 0x00010000 Disable ISI compacting for the specific IFILE variable. If both the CMP_ISICOMPACT and CMP_NOISICOMPACT bit mask bits are set to a zero bit value or to a one bit value, the Data Manager uses the current default behavior that is being used by the Data Manager for the compacting action. - Modified the FILELIST IO processing to insure that all of the AFILE/IFILE variables in the FILELIST are using unique ISI/AAM physical disk files. If a DELETE, UPDATE, or WRITE IO instruction for a FILELIST is executed where any two file variables in the FILELIST variables are using the same ISI/AAM file, then an I23 subcode 43 error occurs. - Modified the FILELIST UPDATE processing to give an appropriate IO error when a key to be deleted can not be found. - Modified the Data Manager logon logic to be more secure against unknown data that is initially received for a logon message. In addition, more detailed messages are logged for unexpected errors during the logon process when ADMIN_LOGLEVEL 1 is being used. - Modified the Data Manager logon processing to preserve detailed information about the logon operations. Critical data used in the logon operations is monitored. If any unexpected results are detected for the verification of the critical data, messages are logged in the log file. - Modified the Data Manager logon processing to more detailed context state values. This gives a better indication of the specific logon logic that is executing if the logon process crashes with a SEGV/GPF error. - Modified the Data Manager logon crash handler to dump logon critical data into the '.gpf' when a SEGV/GPF error occurs. This change is to capture as much data as possible to help determine a cause to a crash situation. - Modified the Data Manager to log a sub-error value of 99989 when a logon receive operation times out. - Added a new keyword named 'DM_LOGONTIMEOUT={ms}' for the Data Manager. This keyword allows the logon timeout to be configured. When the {ms} value is zero, the Data Manager uses the default timeout. The {ms} minimum value is 100 milliseconds. - Added a new Data Manager keyword named 'DM_ANSIIO={on|off}'. This keyword can be used to set the default Data Manager IO behaviors to comply with the PL/B ANSI standard. For the initial implementation of this keyword, the following IO behavior is being changed when this keyword is set to the 'on' state: 1. For any READ instruction that is transferring record data into a FORM variable in a FILE, AFILE, or IFILE variable list, a FORMAT error is generated if the record data contains non-leading white space characters. - Corrected a GPF error that could occur in a Data Manager child task after a COPYFILE was use to access the Data Manager with data compression turned off. ------------------------------------------------------------------------------- SUNDM (Unix) - Modified to log the Unix OS RLIMIT_NOFILE maximum value when the Data Manager is started. The RLIMIT_NOFILE value gives an indication of the maximum file descriptor resources that can be for a single process. - Corrected a problem that could cause applications to be disconnected from Data Manager when an AAMDEX instruction was executed. This problem did not exist on all versions of Unix platforms. This problem was reported for a Linux version and yet did not exist on other versions of Linux. - Modified the INDEX instruction to use the input extension when initializing the output extension to a default if the 'C' compact mode is being used. This change is to insure proper operation executing under a Unix OS. Otherwise, a compact operation could fail to be executed. ------------------------------------------------------------------------------- SUNDM REPLICATION SUPPORT - Added a new keyword named 'ALLOW_AUTO_ROLLBACK={on|off}' that can be put into the [replication] section of the Sundm CFG file for the Primary Server. When this keyword is set to an ON state, this allows a Secondary server that is executing as a Primary after a rollover to automatically transfer the Primary control back to a Primary server. In this case, the Primary control can be returned to a Primary server when the following conditions are met: 1. The Primary server is actively running is connected to the Secondary server that has the Primary control. 2. The Primary server has completed the synchronization phase to have all of its files updated for any changes that have been made on the Secondary server while it has had the Primary control. 3. There are no current users that are logged onto the Secondary server. - When any Secondary server logs onto the Primary server, the port number that would allow logons to a secondary is validated. This is to not allow an invalid configuration that would prevent a Primary server from detecting a Secondary server that has the Primary control after a rollover. - Modified to write the proper error message in the Secondary log file for unexpected errors that occur when a Secondary is logging on to a Primary Server. - Corrected a problem where a Primary Server would not startup in a Secondary Server mode after the Primary Server was terminated using the '-tx' command. With this change, the startup for replication was changed to improve the check for duplicate Primary Servers. -------------------------------------------------------------------------------