Tmax 5 SP2

This chapter briefly describes newly added and changed features of the Tmax 5 SP2. For detailed information, refer to the relevant guide.

1. New features

This section describes the newly introduced features.

1.1. Multiple RMs

In the case of XA servers, Tmax’s basic policy is that servers within a server group can only access one identical RM set in the server group to process transactions. However, inevitably, when two or more RMs are used in a single process, it was impossible to process them as a single transaction. In order to allow transactions that use two or more RMs or two or more instances of the same RM in a single process to be included in a single transaction, the functionality of the server library was expanded.

To support multiple RMs, the existing TCS and UCS server libraries are used, so the functions can be used as is.

1.2. Added multithread/multiicontext features

Using multithreading and multicontext techniques in client and server programs, a single client can request multiple services simultaneously or communicate with multiple Tmax systems simultaneously. Furthermore, features have been added that allow multiple threads within a single server process to process service requests simultaneously, or for two or more threads to share a single context while processing a service.

For more information, refer to Multithread and Multicontext in Tmax Application Development Guide.

1.3. IPv6

Tmax supports IPv6 through configuration. If not configured, IPv4 is used. Configuration should be applied to environment variables and the Tmax configuration file as needed. For clients, configuration files cannot be used, so environment variables must be set.

Tmax’s client, multi-node, multi-domain, and TCP gateway are all implemented using sockets. Each configuration supports the option to decide whether to use IPv4 or IPv6.

  • Based on the socket concept, it can be broadly divided into a connection acceptance portion and a connection request portion. Based on this classification, each module’s IPv6 support is set.

  • When IPv6 support is enabled, Tmax creates a corresponding socket for IPv6. If the platform on which Tmax is installed supports a transition technology such as Dual Stack, Tmax can receive both IPv4 and IPv6 connection requests.

    However, if IPv6 is not set up on Tmax, Tmax can only receive IPv4 connections and cannot accept IPv6 requests, even if the platform supports both IPv6 and IPv4.

  • IPv6-related environment variables

    • TMAX_HOST_IPV6

    • TMAX_BACKUP_IPV6

    • TMAX_RAC_IPV6

    • TMAX_WEBADM_ IPV6

    • java.net.preferIPv4Stack

    • java.net.preferIPv6Addresses

    • TMAX_IPV6_LINK_IF

  • IPv6 related configuration files

    • CLIENT_IPV6

    • EXTSVR_IPV6

    • SYSTEM_IPV6

    • CLOPT="-X SERVER_ IPV6" CLOPT="-X CLIENT_ IPV6"

    • CLOPT="-f configfile"

    • LOCAL_IPV6

    • RGW_ IPV6

    • RGW_B1_ IPV6

    • RGW_B2_ IPV6

    • RGW_B3_ IPV6

1.4. tmapm module

tmapm is a module that terminates a service when the service timeout period has elapsed when signal alarms are not used or are not convenient. For detailed usage instructions, refer to Tmax Reference Guide.

 *SERVER
tmapm    CLOPT = [ -i sec ]
                 [-r sec ]
                 [-c command ]
                 [-l [0 | 1 | 2 ] ]

2. Added features

This section describes the major features added.

2.1. Engine

  • Added an ability to define server behavior when TMM and CLH connections are terminated

    • When TMM is terminated, there are cases where the server needs to be shut down, or when the server loses connection to the CLH, the CPC connection needs to be reestablished. The MAC and ROC items have been added to the SERVER section to enable this setting.

    • MAC = Y | N

      • Default: N

      • MAC (Master Alive Check) may need to terminate the server in some cases to prevent it from remaining as a zombie process when TMM is terminated.

      • If MAC=Y is set, the server will also be terminated if TMM terminates abnormally.

    • ROC = Y | N

      • Default: N

      • ROC (Reconnect Outbound CPC) occurs when the server needs to re-establish the CPC connection when the connection with the CLH is lost.

      • When ROC=Y is set, CLH is alive and attempts to reconnect if the socket is disconnected.

  • Added the CLL connection load balancing feature

    • The existing method of CLL handing off client connections to CLHs is RR (Round Robin), which can lead to unbalanced client connections for each CLH. Tmax 5 SP2 adds a feature that allows CLLs to check shared memory information and send connections to the CLH with the fewest connections.

    • CLLCONNLB = RR | LC

      • Default: RR

      • Sets how CLL passes client connections to CLH.

      • When CLLCONNLB = LC is set, the CLL establishes the next connection to the CLH with the fewest connections using Lease Connection method.

      • If CLLCONNLB is not specified or a different value is entered, the next connection is made using the default RR method.

  • Added the FDL_VERSION 2 feature

    • When inputting, updating, or deleting field values in FDL string type, the length had to be calculated each time using strlen(), but the function has been improved to calculate the length only when inputting and store it in a buffer.

    • It is not compatible with existing Tmax versions and is only available for Tmax 5 SP2. If FDL_VERSION does not match, an FBESETVER error is returned.

    • The format of the string type of fbuf allocated in memory with fballoc() or tpalloc() has changed.

      KEY | DATA(STRING) -> KEY | SIZE | DATA(STRING)
    • How to use

      *DOMAIN
      FDL_VERSION = 2
      
      Configuring the client
      - Use export to set the environment variable to FDL_VERSION=2 or sepcify FDL_VERSION=2 in tmax.env and then call tmaxreadenv()
  • Added the automatic server shutdown feature

    • Added an ability to terminate and restart the user server program if its memory usage exceeds the amount specified in the option using the -m option in CLOPT.

    • CLOPT settings

      CLOPT = "-m XXXX"

      XXXX is in bytes. If XXXX bytes are used, the server will be shut down normally and then restarted.

      If the MAX_USE_COUNT option is added to the Server Configuration, the server program will be terminated if the number of service calls for the server is greater than MAX_USE_COUNT.

      If set as follows, the server will be restarted after a normal shutdown after 5 service calls.

      MAX_USE_COUNT = 5
  • Modified the boot method of services that are not defined in configuration

    • The behavior has been improved so that when registering a service that is not in the configuration file, only the existing services are registered and normal booting occurs.

  • Improved server boot permissions

    • Added the ability to delegate server booting to TMM via the tmboot -a option.

  • Improved restart count reset function when timeout is restarted

    • Fixed the issue where the restart count was not initialized even after GPERIOD elapsed when restarting a server with the -r option applied due to timeout.

    • Related issue: IMS 62481

  • Added the CLLBLOCK automatic release feature

    • To prevent the service from being called while the Tmax service is not fully started, a function to release CLLBLOCK after the Tmax service is fully started has been added.

    • Setting the DOMAIN section

      *DOMAIN
      DomainName   CLLBLOCK = Y
      • Default: N

  • Added a macro setting function to CLH

    • Added a feature to CLH to allow application of $(CDATE) $(PID) to the -o -e option.

    • Related issue: IMS 51608

  • Added s functionality to address concurrent scheduling issues in multi-CLH structures.

    In an environment where the MINCLH value in the NODE section of the configuration is 2 or more, the scheduling status for each server process is managed independently for each CLH when processing a service request.

    For example, in an environment where "MINCLH = 2" and the server’s "MINSVR = 1", CLHs 1 and 2 only have one server process that can schedule them. When a service request comes into each CLH, each CLH schedules the request if it is RDY from its point of view without checking whether other CLHs have scheduled the request to the server process. In this way, at a certain point in time, a situation may arise where multiple CLHs schedule services to one server process at the same time, and in this case, the server process processes the request from the CLH that was requested first. Requests from the remaining CLHs cannot be processed by the server process and are piled up inside the socket buffer.

    That is, when you check the scheduling status with st -p in tmadmin, all processes with the same spri appear to be RUN in each CLH, but in reality, only one request from a certain CLH is being processed at that time, and the rest are in a waiting state. In this case, the waiting requests are not subject to CLHQTIME, and in the case of servers with different MIN/MAX settings, they are not immediately started by ASQCOUNT.

    In Tmax 5 SP2, the MULTICLH=N setting was added to solve the concurrent scheduling problem of the multi-CLH structure.

    • MULTICLH = Y | N

      • Default: Y

      • By default, in environments where MINCLH is 2 or greater, a server process can simultaneously receive service requests from multiple CLH rows. When a server process receives concurrent service requests, it processes the first incoming request, and only after the service for that request has ended with tpreturn will it process service requests from other CLHs.

      • If the setting is set to 'N', each server process will receive and process service requests from only one CLH. This prevents simultaneous service requests from multiple CLHs to a single server process. However, since each server process receives service requests from only one CLH, it will only process requests from its assigned CLH regardless of the load on other CLHs, which can result in performance inefficiencies.

      • Precautions when setting the setting value to N

        • When setting the MIN value of the server, it must be set to a value greater than or equal to MINCLH.

        • When setting the MAX value of a server, it must be greater than or equal to MAXCLH. The MAX setting does not have to be a multiple of MAXCLH.

        • Each server process is assigned a CLH number in order of decreasing server process number (spri) value. That is, the first server process is assigned the first CLH, the second server process is assigned the second CLH, and if the server process order exceeds MAXCLH, the processes are assigned in order starting from the first CLH.

          If the MINCLH and MAXCLH settings are different and a CLH has not been started up to MAXCLH, the server processes responsible for the unstarted CLH will not receive any service requests. Therefore, when server processes are started by tmboot or TMM, the server processes with spris responsible for the unstarted CLHs will not be started, and only when the CLH is started can the server processes of the spris responsible for the corresponding CLH be started.

        • If a CLH is additionally started in an environment where the MINCLH and MAXCLH settings are different, the server processes responsible for that CLH will not be running, so they must be immediately started with tmboot. Otherwise, a TPENOREADY error will be returned when a client connected to that CLH requests service.

        • When changing a server with the default MULTICLH option to 'N', you should consider adjusting the MIN and MAX settings. If you leave the MIN and MAX settings unchanged and MULTICLH set to 'N', the number of server processes each CLH can schedule will be reduced. This can lead to requests queuing when a particular CLH is under load.

    • Related issue: IMS 54138

  • Added an option to set the backlog value when listening to tmm domain-socket.

    There was an issue where the Tmax process could not be started due to lack of resources when restarting or starting additional processes.

    The cause of this phenomenon is that processes on the same node listen() to connect to TMM as a domain socket, but in the case of the HP version of Tmax, the backlog value was set to 127. In this situation, when multiple processes restart due to timeout, the server process fails to connect to TMM after restarting and a connection refused error occurs, preventing some servers from starting.

    The backlog value has been improved to be set to 1023 by default for HP, and additional functions have been added.

    • TMMOPT = literal

      • Size: Within 255 characters

      • Defines the command options passed to the TMM process when TMM starts. Options specified before '--' are used by the system, while options specified after that are freely available to the user.

        Option Description

        -t second

        This option allows you to change the connection timeout period for server processes started with ASQCOUNT. It can be dynamically changed during operation using the tmadmin setopt command. (Default: 10 seconds, Unit: seconds)

        ex) TMMOPT = "-t 20"

        -B backlog value

        Specifies the backlog value of the listen port that handles connections to the server process.

        The values that can be set are from 1 to SOMAXCONN. (Default: 1023)

        Setting a value that is too small may result in connection failures when multiple server processes connect to TMM simultaneously.

        -A processing count

        Specifies the number of connection requests to accept from a server process at a time. This value can be dynamically changed during operation using the tmadmin setopt command. (Default: 100)

        -F Maximum number of concurrent processes

        Specifies the maximum number of concurrently processed processes in TMM when creating new processes due to additional server process startups or process restarts. This option can be adjusted if system performance or load conditions impact the startup of new processes.

        The range that can be set is from 0 to the currently set backlog value. (Default: 0.75 times the backlog setting value)

        Setting it to 0 will immediately start new processes without limitation. This can be dynamically changed during operation via the tmadmin setopt command. If it is set to 0, all processes that were not yet started and waiting at the time of the change will be started.

        The number of process startups is calculated as follows. When a process is created with a startup request, the number of currently running processes is increased by 1. When the launched process is registered after connecting to the TMM, it is decreased by 1. If exec() in the launched process fails or fails before being registered, the boottime defined in the -t option is checked and decreased by 1. Note that the number of startups is maintained during the boottime if a specific process cannot be started normally due to the absence of an executable file or a dependent library error.

        If an additional startup request occurs when the number of currently running processes reaches the value set by the -F option, the startup request will wait until the currently running process completes its registration and becomes available.

    • Added an ability to make changes during operation via tmadmin

      Added the ability to change the above options during operation. TMMOPT options cannot be viewed with cfg or modified with set. Therefore, we’ve added the cfgopt and setopt commands, which allow you to view and modify TMMOPT options. The options that can be modified are the -A, -F, and -t options.

      • Check

        cfgopt -tmm
      • Correct

        setopt -tmm -F 100
    • Related issue: IMS 65507

  • Added a backup configuration function for Tmax Cousin SVGs (LOAD = -3)

    • Previously, only LOAD values of 1 or more, 0, -1, and -2 existed, but a LOAD value of -3 was added for the backup configuration function of Tmax Cousin SVGs.

      The BACKUP item in the SVRGROUP section is not a backup setting for the server groups set with COUSIN, but a backup setting for the set server group. For example, if server group A COUSIN="B,C", BACKUP="D" is configured, if the nodes to which A, B, and C belong are all down, it will not schedule to D, but if the node to which A belongs is abnormal, it will schedule to D only in the A scheduling turn. A new scheduling (LOAD) was added to go to D when all servers to which A, B, and C belong are inactive.

      A COUSIN="B,C,D", LOAD=-2
      B LOAD=-2
      C LOAD=-2
      D LOAD=-3

      When configured as above, scheduling is normally attempted only with A, B, and C, and if all of A, B, and C have issues, scheduling is performed with D. In other words, scheduling is normally performed only with server groups with LOADs other than -3, and if all of them have issues, scheduling is performed only with server groups with -3. In this case, scheduling follows local priority load balancing, such as -2.

    • Related issue: IMS 45359

2.2. TDL

VERSION 4 provides an interface that allows you to use namespaces and libraries used in C++.

  • tdlcreate

    This is a function that creates a class instance using TDL Class Factory.

    int tdlcreate(char *libname, char *namespace, char *classname,
                  void *args, void **object, long *urcode, int flags);
  • tdldestroy

    A function that destroys a class instance using Class Factory in a TDL dynamic module.

    int tdldestroy(char *libname, char *namespcae, char *classname,
                   void *args, void *object, long *urcode, int flags);

2.3. WebT

  • JTmax supports EJB 3.0 features.

  • The tpgetsprlist and tpspracall functions have been added to call services belonging to a specific server group. These functions can only be used when the WebT header setting is extendedV4. For detailed usage instructions, refer to Tmax WebT User Guide.

    • tpgetsprlist

      public int tpgetsprlist(String svcName, int svgno, int[] index, WebtAttribute attribute)
    • tpspracall

      public int tpspracall(int spri, WebtBuffer txBuffer, WebtAttribute attribute)

      or

      public int tpspracall(String svcName, int spri, WebtBuffer txBuffer, WebtAttribute attribute)

2.4. Tmax RPC (Remote Procedure Call) function

Tmax RPC provides three types of services.

  • Data Access Server (hereinafter referred to as DA Server)

    The DA server is used for tasks that consist of a single SQL query, and the interface is defined through SQL.

  • TP server

    TP servers are used for tasks that cannot be accomplished through a single SQL query and require multiple RPCs to be processed simultaneously using transactions.

  • FS Server (Function Server)

    The FS server is used to call user-defined functions that are not related to SQL. For example, it can perform tasks such as reading a file requested by a client.

2.5. HMS

  • Added batch processing capabilities for storage tasks, a bottleneck in HMS.

    Storage operations occur when transmitting persistent messages or processing acknowledgements. The batch processing thread reduces the number of database commits by batch-processing multiple persistent messages destined for the same destination.

    For this purpose, the following items were added to the SVRGROUP section.

    • HMSMAXBULKTHR = numeric

      • Range: 1 to 65535

      • Sets the number of threads that batch-process storage for HMS messages.

    • HMSMAXBULKSIZE = numeric

      • Range: 2 to 65535

      • Sets the maximum number of messages that can be processed at one time when batching storage for HMS messages.

  • Added HMSOPT

    • Added the screen output file redirection feature. The setup method is the same as TMMOPT and CLHOPT.

    • HMSOPT = literal

      • Size: Within 255 characters

      • Defines the command options passed to the HMS process when HMS is started.

        Option Description

        -e filename

        Logs standard errors that occur during HMS operation to a file.

        -o filename

        Writes the standard output generated during HMS operation to a file.

2.6. Domain Gateway

  • Added the ability to apply options separately for each gateway

    • A function was added to allow the NLIVEINQ, GWCHKINT, and GWCONNEC_TIMEOUT items, which were previously only provided in the DOMAIN section, to be applied to each gateway.

    • Applied gateway

      • TMAX

      • TMAXNONTX

      • JEUS

      • JEUS_ASYNC

      • TUXEDO

      • TUXEDO_ASYNC

    • Settings for each gateway that can operate

      || gateway type || NLIVEINQ || GWCHKINT || GWCONNEC_TIMEOUT ||
      || TMAX         || O        || O        || O                ||
      || TMAXNONTX    || O        || O        || O                ||
      || JEUS         || O        || X        || O                ||
      || JEUS_ASYNC   || O        || X        || O                ||
      || TUXEDO       || X        || X        || O                ||
      || TUXEDO_ASYNC || X        || X        || O                ||
      || XAGW         || X        || X        || X                ||
      || WSGW         || X        || X        || X                ||
  • IRT feature extension - tmaxgw, jeusgw support

    • The IRT function, which previously only worked in tmaxgwnt, has been improved in Tmax 5 SP2 to work in tmaxgw and jeusgw as well.

    • The function has been extended to work normally even when COUSIN is set in the GATEWAY section.

  • Added the -n option to tmaxgwnt to set the number of channels between gateways to 1.

    • The number of channels between existing gateways was fixed at 2. This meant that when message 1 was sent first on channel 1 and message 2 was sent later on channel 2 through GW1, a situation could occur where message 2 arrived first and was processed on the receiving GW2.

    • To prevent this, in Tmax 5 SP2, the -n option was added to the CLOPT of the GATEWAY section in the configuration file, which sets the number of channels between gateways to 1. -n does not accept any arguments.

      *GATEWAY
      gw1       GWTYPE = TMAXNOTX,
                CLOPT = "-n"
    • Related issue: IMS 70604

2.7. tcpgw thread gw

  • The following flag functionality has been added for when TCPGWHDR’s int user_thrmain(WORKTHRINFO *winfo, int server) function returns:

    Flag Description

    WTHR_ABNORMAL_RETURN

    When a client connection is terminated, a log is output.

    WTHR_NORMAL_RETURN

    No logs are output even when the client connection is terminated.

  • Related issue: IMS 68120

2.8. Tuxedo Gateway

  • Added the -D option to CLOPT section

    • Tuxedo gateways can sometimes discard messages for any reason, and a feature has been added to keep a log of discarded messages for easy analysis.

    • It can be set via the -D option of the CLOPT entry.

  • Added the -h option

    • When multiple local gateways are set up in Tuxedo, each gateway attempts to connect to the remote one, so Tmax’s Tuxedo gateway returns the following message for the second connection attempt after one connection is established.

      (E) GATEWAY3010 connection error from remote gateway [TUXGW0002]

      Added the -h option to the CLOPT entry to prevent the message from being printed.

    • Related issue: IMS 47268

  • RGWPORTNO duplicates allowed

    • The feature has been improved to allow the use of the same RGWPORTNO when registering multiple Tuxedo gateways.

    • Related issue: IMS 50725

2.9. TCP/IP Thread Gateway

  • Added the Channel IRT feature to TCP gateway

    • When setting the TCP gateway to COUSIN, the TCP gateway Channel IRT function is added. Set the CLOPT entry in the format "-X CHANNEL_IRT setting."

    • Related issue: IMS 40853

  • Added a connection control callback function

    • Added the ability to allow or disallow remote connections attempting to connect to allow_connection.

    • Set the return value.

      Value Description

      Positive

      Allowed

      Negative

      Disallowed

    • Related issue: IMS 48279

  • Added the Channel IRT feature to TCP Thread Gateway

    • When TCP Thread is set to COUSIN, the TCPGW Thread Channel IRT feature is added. Set it with the -i option in the CLOPT entry.

    • Related issue: IMS 40853

  • Added the ability to immediately accept new remote connections in dedicated mode on the TCP Thread gateway.

    • In dedicated mode, if remoteCLI_B connects while remoteCLI_A is connected, both A and B will be disconnected. However, the -f option has been added to disconnect only remoteCLI_A and allow remoteCLI_B to connect. Set the -F option in the CLOPT entry.

    • Related issue: IMS 48279

2.10. Utility

  • Added the -u option to mksvr and mkcli

    • Added the user override option feature to compile options of mksvr and mkcli.

    • The mksvr command removes the platform-specific default compilation options it sets and replaces them with user-specified compilation options. Note that library and include-related options are not applied.

    • If you need to specify more than one option, set it as follows:

      $ mksvr -s TOUPPER,TOLOWER -o svr2 -f svr2.c -v -u "-m64 -O"
    • Related issue: IMS 54034

  • Added the -y option to tmdown to immediately shut down the server without asking whether to shut down the server.

    • In a multi-node environment, if you execute "immediate server down" without specifying a node name, the user will be prompted to confirm whether to shut down the server. The user must enter "y" (or "n") for each server.

      Added an option to not accept this user input when typing tmdown -y.

      $ tmdown -i -y
    • Related issue: IMS 69697

  • Added the tmaxlibver build version query function

    • The tmaxlibver build version query function has been introduced.

      tmaxlibver {-l filename} {-d | -s} [-6] [-L directory] [-o arg] [-h]

      For more information, refer to tmaxlibver in Tmax Reference Guide.

  • Fixed an abnormal behavior of the tmadmin set function

    • Fixed the issue where changing CLHQTIMEOUT, NLIVEINQ, and LOAD with tmadmin’s set did not reflect the change in operation.

  • Added a time output feature to tmadmin

    • Added a feature to print start and end times for command execution in tmadmin.

    • If you run tmadmin with the -t option set, it outputs the time in the following format.

      [TIME][Type  ] : hh:MM:ss:millisec
      Type Description

      START

      Prints the start time when executing a command in the console.

      END

      When the command execution on the console ends, the end time is printed (the time after the command on the remote node has been executed).

      R_END

      When executing a command from the console, the time at which the remote node finished executing is printed (the local time at which tmadmin was executed, not the time of the remote node).

      RP_START

      When using the tmadmin repeat command, the time before starting a command is printed.

      RP_END

      When executing using the tmadmin repeat command, the end time is printed when one command is completed (this is the time after executing the remote node’s command).

2.11. Client/Server

  • Added a feature to skip internal tpstart when calling tpcall while not connected.

    • A feature has been added to skip internal tpstart when calling tpcall while not connected.

      Environment variables Description

      TMAX_ACTIVATE_AUTO_TPSTART

      Set to 'Y' or 'N', and if not set, the default is 'Y'.

      If a client program calls APIs such as tpcall or tpacall without explicitly calling tpstart, it automatically calls tpstart(NULL) to connect to the Tmax system. If this behavior is not desired, specify 'N'. If 'N' is specified, a TPEPROTO error will occur if tpstart() is not explicitly called. The APIs affected by this option are as follows.

      tpcall(), tpacall(), tpcallsvg(), tpacallsvg(), tpconnect(), tpchkunsol(), tpsetunsol(), tpgetunsol(), tpsubscribe(), tpsubscribe2(), tpunsubscribe(), tppost(), tpbroadcast(), tpgetcliaddr(), tpgetpeername(), tpgetsockname(), tpsleep(), tpgetactivesvr(), tpqsvcstat(), tpqstat(), tpenq(), tpdeq(), tpreissue(), tpmcall(), tpsvgcall(), tpenq_ctl(), tpdeq_ctl(), tx_begin()

    • Related issue: IMS 65952

  • Added a feature to force termination when server process memory allocation fails.

    • In the past, when a memory leak occurred in the user-written code of a server application, and when memory allocation requests such as malloc and realloc failed, and the memory was full, if realloc failed at a certain section during the process in which the server library received a service request from CLH, an incorrect message was received, which could potentially cause abnormal behavior (hang phenomenon, etc.).

    • In Tmax 5 SP2, if memory allocation fails and the server process can no longer operate normally, the server process is forcibly terminated.

    • When this phenomenon occurs, the following log is output.

      SVR0006 memory reallocation error : size = n
      SVR0001 memory allocation error : size = n
    • Related issue: IMS 49711

  • Added a functionality equivalent to tmadmin’s st -s -x to the tmadmin API.

    • The tmadmin() API provided by the server library also adds the functionality similar to st -s -x of the utility tmadmin.

    • The st -s and st -p commands are options that use the -x option, and the TMADM_SVC_STAT_EX and TMADM_SPR_STAT_EX functions were added to the tmadmin() API to perform the same actions as the -x option.

    • The additions to the cmd of tmadmin() and the structure types applied in this case are as follows:

      • TMADM_SVC_STAT_EX

        The structure types are as follows:

        tmadm_svc_stat_ex, tmadm_svc_stat_ex_body
      • TMADM_SPR_STAT_EX

        The structure types are as follows:

        tmadm_spr_stat_ex, tmadm_spr_stat_ex_body
    • Related issue: IMS 45159

  • Added a function to receive responses directly from tpgetrply without calling back for response processing when tpacall is used.

    • In UCS, you can register a Callback function to handle the response from tpacall using the tpregcb function. In ucsmain() and tpsvctimeout(), the only way to handle the response from tpacall was to call the Callback function.

      To improve this, an interface was added that allows processing in tpgetreply without processing in the Callback function when the 'TPNOCALLBACK' flag is input in tpacall.

  • Added an API to change SVCTIMEOUT

    • The SVCTIMEOUT value is currently fixed at the set value, so there are cases where SVCTIMEOUT needs to be changed depending on the situation within the service. In such cases, a function that changes the service timeout value within the service has been added to allow for SVCTIMEOUT to be changed.

      tpsetsvctimeout(int sec, long flags)

      For more information, refer to tpsetsvctimeout in Tmax Reference Guide.

  • Added a function to return tperrno to TPETRAN within tpsvctimeout when a transaction fails on the server.

    • Added the ability to set tperrno to TPETRAN so that tpsvctimeout() can distinguish when SVCTIMEOUT occurs internally in the xa_commit(), xa_rollback() stages of tx_commit(), tx_rollback().

    • Related issue: IMS 51550

  • Previous version AUTOTRAN compatibility patch

    • AUTOTRAN=Y in versions prior to Tmax 5 and AUTOTRAN=Y in versions subsequent to Tmax 5 have different functions. Therefore, AUTOTRAN=B is provided to support AUTOTRAN=Y in previous versions of Tmax 5. AUTOTRAN=B has been modified to operate identically to Y in previous versions.

    • Related issues: IMS 65952, 60833

  • Changed the name format of some debug libraries

    • libtcpgwd.gwh.* file name changed to libtcpgw.gwhd.*

    • libx25gwd.gwh.* file name changed to libx25gw.gwhd.*

2.12. Management Tools

  • Add gwinfo

    • The gwinfo command has been added to tmadmin to check the channel status of general gateways. Existing commands such as txgwinfo and jgwinfo can still output the same information.

    • You can check the connection information of all gateways (exception: web service gateway is not supported).

    • How to use

      $$1 tmax1 (tmadm): gwinfo [-w gw_name] [-t gw_type]
      Option Description

      [-w gw_name]

      Only query information for a specific gateway. gw_name is the name set in GATEWAY.

      [-t gw_type]

      Query only specific gateway types.

      Enter TYPE(TMAX, TMAXNONTX, JEUS, JEUS_ASYNC, TUXEDO, TUXEDO_ASYNC, XAGW) defined in the GATEWAY section.

      Example) TMAX

  • Added dynamic addition (cfgadd) function to gateway

    • In previous versions, dynamic addition of gateways was not possible. Tamx 5 SP2 adds the ability to dynamically add all gateways.

    • Related issue: IMS 51383

  • Added qpurge count adjustment function

    • [-k Num] option added to qpurge(qp) option.

    • How to use

      qp -v svr2 [-k Num]

      Num can be set as follows:

      Input value Description

      -1

      Among the service requests currently waiting in the queue, only MAXQCOUNT number of requests are left and the requests that come in after that are purged.

      0

      Purges all service requests currently waiting in the queue.

      N (>0)

      Purges all subsequent requests, leaving only the first N gcount requests. This option must be used with the –v option.

    • Related issue: IMS 64072

3. Changed features

3.1. Domain Gateway

  • Changed the domain gateway connection method to non-blocking.

    • When the gateway connects to the remote, it may be blocked, so the remote machine may not be alive (OS down) or the connection may not be performed properly due to network problems.

      In this case, requests sent to the gateway do not receive a failure response immediately, but wait until the timeout period to receive a response, resulting in a long response time, which causes problems.

    • In order to resolve this issue, Tmax 5 SP2 changed the connection to Non-blocking and improved the function to allow responses to be sent without delay even in the above-mentioned failures.

3.2. Engine

  • Modified the outbound scheduling of ASYNC type gateway in CLH to RR mode.

    • The TMAXGWNT type server in the GATEWAY section can set the number of channels that can be scheduled in CLH via CPC. However, in the case of the TMAXGWNT type, only one channel is used when requesting Outbound.

    • In Tmax 5 SP2, scheduling has been modified to use Round Robin (RR) to ensure even use of all channels, similar to CPC. Gateways that benefit from this feature include TMAXGWNT, JEUS_ASYNC, and TUXEDO_ASYNC.

    • If you set CPC in the GATEWAY section, you can check the requests scheduled for each channel using the st -p command in tmadmin.

  • Improved COUSIN settings

    • When setting COUSIN only for gateways, there is the inconvenience of always having to register a general SVRGROUP and create a DUMMY server. Therefore, a function has been added to enable COUSIN setting in the GATEWAY section.

    • Set up the environment as follows:

      *SERVICE
      GWSVC       SVRNAME = gw1
      
      *GATEWAY
      gw1         NODENAME = node1, GWTYPE = TMAXNONTX, PORTNO = 10001,
                  RGWADDR = "192.168.1.1",   RGWPORTNO = 10002,
                  LOAD = 1, CPC = 5, CLOPT = "-i",
                  COUSIN = "gw1"
      
      gw2         NODENAME = node2, GWTYPE = TMAXNONTX, PORTNO = 10001,
                  RGWADDR = "192.168.1.2",   RGWPORTNO = 10002,
                  LOAD = 1, CPC = 5, CLOPT = "-i"
  • Implemented the CMTRET=N function

    • Since the CMTRET = N function in the DOMAIN section of the configuration was not implemented, even if CMTRET was set to N, it always worked as Y.

    • Tmax 5 SP2 has been enhanced to support the CMTRET=N feature. The CMTRET entry determines the complete return. Y indicates a complete return, and N indicates that the service is returned immediately after the commit/rollback command for faster processing.

  • Mitigated slowness during multiple multi-node boots

    • When booting on a multi-node system, connections to other nodes are attempted. Since the socket connection attempt uses a blocking structure, if there are abnormal nodes on the network, the system will inevitably wait for a long time (up to 30 seconds per node), increasing the overall system latency.

    • In Tmax 5 SP2, the slow boot phenomenon was improved by changing the structure to attempt a non-block connection when starting up.

    • Related issue: IMS 63303

  • Changed the write retry behavior for other processes in TMM

    • Previously, when TMM attempted to write a message to tmdown before tmdown had read all of it, it was considered a failure after a certain number of attempts. If the write failed, the tmdown process would terminate normally on a single node, but on a multi-node system, only the local node would complete the tmdown process, and the remote tmdown process would not be executed.

    • To address this issue, Tmax 5 SP2 has modified the number of write attempts to increase after at least 1 second has passed, so that even if many write retries occur at once in a short period of time, they are not considered failures.

    • Related issue: IMS 67087

  • When setting the IP in the NODE section, the function is changed so that the listen IP is not specified in CLL.

    • Since the IP address specified in the NODE section specifies the IP address to be used when opening a port to accept client requests, clients requesting connections from other IP addresses will fail. For convenience, the CLL has been modified to listen as if no IP address was specified.

    • Set the CLL_BIND_IP entry in the DOMAIN and NODE sections.

      Setting Description

      Y

      Works the same as before (default)

      N

      Listen to all IPs without binding the IP.

    • Related issue: IMS 61500

3.3. Client/Server

  • Modified TCS to leave svclog at least 5 minutes later

    • To address the phenomenon where svclog on the TCS server could remain for 5 minutes when there is a service request, the system has modified the system to send svclog to TMM every 5 minutes.

    • Related issue: IMS 56485

  • Changed the behavior when calling a service within the tpsvrdone function.

    • When tpcall, tpacall, or tpgetreply is performed within the tpsvrdone function (server shutdown function), the server is still in the RDY state, so CLH schedules the service. At this time, when tpcall or tpgetreply receives a service request, it generates and returns TPESYSTEM, so it cannot respond to the actual tpcall or tpgetreply, which may cause a problem.

      There are cases where a service on another server is called from within tpsvrdone. When a service on the server where tpsvrdone is running is called, the response from the service called from within tpsvrdone will result in an unknown message type error.

    • In Tmax 5 SP2, in this situation (tpsvrdone), tpcall and tpgetreply were improved to not return an error in the reading part and wait until the desired response is received so that they can succeed.

    • Related issue: IMS 61897

  • Ability to dynamically change MAXMOUDULES value without tdlinit

    • Added ability to dynamically change the MAXMOUDULES value without tdlinit.

    • How to use:

      1. Change the max value in the configuration (tdl.cfg)

      2. tdlinit -b (max changed)

      3. tdlsync (reconstruct basic backup files)

      4. Operations (tdlupdate, tdlrm, tdlclean, etc.)

    • Related issue: IMS 63443

3.4. TDL

  • Added the tdlshm -c option to perform only dlopen

    • Added a function to only dlopen if the shared library is normal.

    • How to use:

      $ tdlshm -c [end_index] [start_index end_index]
    • Related issue: IMS 63443

  • Improved functionality of the tdlupdate -l option

    • For tdlupdate, a feature was added to enable multiple updates at once by releasing 1024, which is a module that can be updated simultaneously.

    • Related issue: IMS 66958

  • Added the tdl run directory splitting feature

    • Added an ability to split the tdl run directory.

    • Specify run dir and mod dir in tdl.cfg as follows.

      *DIRMAPPINGLIST=(mod1:run1),(mod2:run2),(mod3:run3)
  • TDL HASH performance improvement

    • The HASH used internally in TDL has been changed from the linear probing method of the existing Open Addressing to the coalesced chaining method, and the HASH function has also been improved by applying a widely known function that evenly distributes key values and has a low collision probability.

3.5. Utility

  • Improving tmadmin execution structure through RACD

    • Previously, only one remote tmadmin could be launched via RACD. Therefore, if a user launched tmadmin locally and then launched it again in main mode via tmadmin -m, tmadmin -m could not be launched remotely because tmadmin was already launched.

    • In Tmax 5 SP2, the remote tmadmin that can be started by RACD has been modified to allow two options: tmadmin and tmadmin -m.

    • Related issue: IMS 68751

3.6. Management Tools

  • cfgadd function enhancements

    • Previously, when dynamically adding a service, if cfgadd was performed using an incorrect environment file (an environment configuration file with the service registration order not maintained, missing, or in a changed location), duplicate registration occurred.

    • In Tmax 5 SP2, when executing cfgadd, the binary environment file to be applied is compared with the environment setting status of the operating environment before being applied to the operating environment to verify that it is the correct environment file, thereby preventing duplicate service registration and the application of incorrect environment files to the operating environment.

    • How to use:

      $ cfl -i tmconfig.m -a tmchg.m -o tmchg
      
      $$1 tmaxi1 (tmadm): cfgadd -i tmchg
      config is successfully added
    • When running cfgadd, two text configuration files are required: one for the -i and one for the -a options in cfl. The file for the -i option must contain the most recent operating environment changes. Otherwise, the binary configuration file generated by cfl will be incorrect.

    • Related issue: IMS 56118

3.7. Binary

  • libtcpgwd.gwh.so library name changed

    • The library name was changed from libtcpgwd.gwh.so to libtcpgw.gwhd.so.

4. Bug Patch

4.1. Client/Server

  • Fixed the issue where failure responses were not sent to clients when the server was down by tmdown -S after savectx in UCS.

    • Fixed the issue where failure responses were not sent to clients when the server was down by tmdown -S after savectx in UCS.

    • CTX_EREPLY = Y | N

      • Default: Y

      • This option can only be set on UCS server types. It is not available on other server types.

      • If the server process terminates due to tmdown -s, tmdown -s -i, abnormal termination, etc. before calling tprelay() after calling tpsavectx() to save the client’s information on a UCS type server, the service caller will not receive a response to the service request. If set to 'Y', when the server process terminates, an error response is returned to the caller for requests that have not yet been processed by tprelay().

      • If the CTX_EREPLY option is set to its default value, when the server process terminates, an error response is returned to the caller for any requests that were serviced by that process. This means that other processes on the same server are not affected. If the client information (CTX_T) generated by the tpsavectx() call is managed internally only by the server process, it will function normally.

        However, in environments where client information is shared among multiple processes via IPC or other means, and tprelay() is handled by other processes even if a specific process terminates abnormally, an error response may be transmitted even though the process is normally processed. Therefore, in such cases, the setting value is set to 'N' to prevent the error response from being transmitted.

  • Fixed the tmax_is_restarted function error in svrlib

    • The phenomenon of the result of the tmax_is_restart function being output as TRUE when booting by asqcount or adminapi has been corrected to output as FALSE.

      The tmax_is_restarted result values for each case are as follows:

      Result value Description

      TRUE

      Terminated with kill

      FALSE

      • Booted with tmboot

      • Booted with asqcount

      • Booted with adminapi

      • Booted with tmadmin’s rbs

    • Related issue: IMS 41426

  • Fixed an error that occurred when calling tpreturn() after setting tpacall with the TPNOREPLY flag.

    • Fixed the issue where a TPEITYPE error would occur if the service had some time to execute when tpreturn() the field buffer in the service when calling the service with tpacall() with the TPNOREPLY flag set.

    • Related issue: IMS 56121

  • Fixed the issue where tpcall messages were not received from 5.x clients when 3.x and 5.x clients were mixed on the RDP server.

    • When using RDP and clients of version 3.x and 5.x are mixed, the 3.x client connects first, then the 5.x client. In this state, if a tpbroadcast occurs in a specific application, the issue where the 5.x client does not receive the message when making a tpcall has been fixed.

    • Related issue: IMS 67971

  • Fixed the phenomenon of returning TPETIME when blocking occurs when applying the flags TPNOBLOCK to functions such as tprecv and tpgetrply.

    • When setting TTPNOBLOCK, if a response message is received immediately at the time of calling, a normal return is made. If a response message is not received, an error is returned immediately without waiting and TPEBLOCK is returned.

    • Related issue: IMS 64795

  • Fixed an error performing tx_connection_reset when calling tpreturn() in a server group with XAOPTION="DYNAMIC" set.

    • Starting with Tmax 5 SP1, if XAOPTION="DYNAMIC" is set in the SVRGROUP section of the configuration, RM is reconnected when tpreturn() or tpforward() is performed, and a log is recorded in slog every time it is reconnected.

    • However, when tpreturn() is called, if a transaction is in progress, it always reconnects to the RM after calling xa_end(), but it has been modified to reconnect to the RM only when xa_end() fails (no logging occurs).

  • Fix for tmadmin API TMADM_SVC_STAT query error

    • The phenomenon of NRDY services being displayed as RDY when querying the tmadmin API TMADM_SVC_STAT has been corrected.

    • Related issue: IMS 42818

  • Adding missing symbols from AIX server libraries

    • The issue where the symbols of the gettperrno, gettpurcode, getfberrno, and getfberror functions in the Tmax 3.14.6 AIX server library were not exported, causing server application programs that used the functions to fail with an error such as "ld: 0711-317 ERROR: Undefined symbol: .gettperrno" to be compiled has been fixed.

    • Related issue: IMS 50841

  • Fixing the magic number error in AIX libclithr

    • The following error occurred randomly in tpcall and tpend when using the TMAX API in a multithread/multicontext environment using libclithr on AIX. This issue has been fixed.

      (E) CLH0200 magic number errorfrom client(192.168.1.87): 0 0 0 0 [CLH0516]
      (E) CLI0209 internal error : unknown message type :1002 [CSC5713]
      (E) CLI2008 tpcall reply arrived after timeout. Msg discarded : 1003 1 [CSC5708]
    • Related issue: IMS 43841

4.2. Engine

  • Fixed the bug of CLH freezing after restart

    • A hang occurs when the server boots and establishes a lock after CLH abnormally terminates, and CLH attempts to establish a lock. A bug has been fixed that caused CLH to stop restarting due to a deadlock with the server after a reboot as a supplementary action after CLH abnormal termination.

    • Related issue: IMS 58188

  • Fixed the abnormal TMM shutdown issue

    • TMM has been modified to prevent abnormal termination when receiving a message with an abnormal length from the server.

    • Related issue: IMS 59047

  • Fixed core occurrence issue in CLH

    • The core occurrence phenomenon in CLH during operation has been corrected.

      Segmentation fault in free_y at 0x900000000057794 ($t1)
      0x900000000057794 (free_y+0x344) e9490008          ld   r10,0x8(r9)
      (dbx) where
      free_y(??, ??) at 0x900000000057794
      free_common(??) at 0x900000000055724
      free_hp(hp = 0x0000000116c62c10), line 2452 in "etc.c"
      tpreturn_msg(i = 6997, hp = 0x0000000112e57eb0, sendtype = 0), line 1124 in "csmsg.c"
      process_server_msg(sp = 0x0000000110da6808, hp = 0x0000000112e57eb0), line 1773 in "main.c"
    • Related issue: IMS 40564

  • Fixed the issue where CLH would terminate abnormally when calling tpconnect().

    • Calling tpconnect() sends a tpconnect request from the CLH to the AP, and before the AP receives and processes the request, it first sends a response message to the CLH. A random error that occurred while processing the response message in the CLH, resulting in an abnormal termination, has been fixed.

    • Related issue: IMS 68868

  • Fixed a CLH shared memory error

    • When using UCS usermain() tpreturn() , a portion of the CLH’s shared memory could become corrupted. In this case, tmadmin no longer retrieves service or server process information for a specific CLH, and subsequent restarts result in a TPENOREADY error. To prevent this issue, shared memory error protection logic has been added to the CLH.

  • Fixed the abnormal CLH shutdown phenomenon when UCS type server terminates abnormally

    • When a service request comes in to CLH and the process of delivering a message to a server process that is not of the UCS type or STD type ends abnormally or a problem occurs in the socket connection between the server and CLH, the phenomenon of CLH being abnormally terminated due to an infinite recursion and a stack overflow has been fixed.

    • Related issue: IMS 62143

  • Fixed the issue where tpcall(TPNOTRAN) is called after TXTIME has passed, but TPETIME is returned.

    • If TXTIME is set, requests (tpcalls) that are executed after TXTIME within the service after tx_begin are guaranteed to return TPETIME without even being called. However, when called with tpcall(TPNOTRAN), TPETIME occurs, but the service is actually called, resulting in a consistency issue. We modified it so that even tpcall(TPNOTRAN) is not always called due to the influence of TXTIME.

    • Related issues: IMS 61035, IMS 68190

  • Fixed CPU over-utilization issue in CLH

    • This is a phenomenon that only occurs in eCLH of FD16384, and the CPU over-utilization phenomenon in CLH has been fixed.

    • Related issue: IMS 40564

  • Fixed the special character recognition error in envfile specified in tmconig

    • When using special characters in the envfile specified in the Tmax environment file, the function has been improved to recognize '$' and allow variable designation as a string containing alphabets, numbers, and _.

    • Related issue: IMS 65389

  • Fixed the issue where the backup server of the backup node was started in tmdown.

    • When the active node and backup node are restarted together, if the backup node is restarted while the active node is not yet shut down, the backup node recognizes the shutdown of the active node as an abnormal shutdown and starts the server. This has been corrected to prevent it from starting.

    • Related issue: IMS 68089

  • Fixed the CLH0209 internal error that occurs when calling the RDP server from fd 16384.

    • When setting up an RDP server, if tpstart() is called from a client, an abnormal message is output repeatedly in CLH, and the client’s tpstart() processing does not proceed normally. This issue has been fixed.

  • Fixed the abnormal CLH shutdown issue for DYNSVR transactions

    • The phenomenon of CLH abnormally terminating when a transaction is started with tx_begin() on a server of type STD_DYN, a general server is requested with tpcall(), and the general server is requested with tpcall() on the requested server has been fixed.

    • Related issue: IMS 65387

  • Fixed abnormal processing during tpacall with COUSIN configuration

    • Fixed an error where the client would not receive a response when requesting tpacall with TPBLOCK|TPNOREPLY for a COUSIN svc if no servers were available.

    • Related issue: IMS 45359

  • Fixed a malfunction when calling a COUSIN svc on a node without COUSIN settings.

    • Fixed an error that prevented IRT from being performed when calling a COUSIN svc on a node without COUSIN settings.

    • Related issue: IMS 45359

  • Fixed an error message generated when tmdown was abnormally terminated.

    • The following error has been fixed so that it does not occur when tmdown terminates abnormally.

      (E) SVR0209 internal error : invalid msg type 1108 [SVR0029]
    • Related issue: IMS 46969

  • Fixed the UNADV function error

    • Fixed the issue where applying UNADV when SVR’s MIN and MAX were not equal would result in TPENOENT not being returned for CALL and CQ_CNT increasing. However, UNADV does not apply to restarts due to abnormal server termination or to additionally started servers.

    • Related issue: IMS 39622

  • The phenomenon in which the server is booted by asqcount even when the server is shut down with the tmdown –S option.

    • Previously, when the entire server was shut down with tmdown –S svrname, if a request came in from a client while the server was performing a service and the server was automatically booted by asqcount, the spr that was still alive would remain even after the down was actually completed.

      In Tmax 5 SP2, when shutting down with the tmdown –S option, the server that is booted and connected to is automatically terminated until the server is started by the user with tmboot. In addition, the function has been improved to prevent the server from being automatically started by asqcount.

    • Related issue: IMS 41426

  • Fixed an error where services added by mksvr were not recognized

    • In an environment where COUSIN services are dynamically added using mksvr, an error has been fixed where, when rebooting a node unrelated to COUSIN, the node would not be aware of the dynamically added service information.

    • Example

      *NODE
      A
      B
      C
      
      *SVGROUP
      GA NODENAME = A, COUSIN = "GB"
      GB NODENAME = B
      GC NODENAME = C
      
      *SERVER
      VA SVGNAME = GA

      In the above environment, if A, B, and VA are booted and C is booted later, C does not recognize the service information in VA, so when C’s client calls VA’s service, TPENOENT is set in tperrno and it does not work properly.

    • Related issue: IMS 42902

  • Fixed the issue where tmadmin’s st -p count did not increase in the case of tpforward.

    • When making a tpcall using a non-TX domain gateway, if the other party responds with tpforward instead of tpreturn, the gateway’s count does not increase if the service performing the tpforward is the domain that was the first caller. Previously, count, svctime, fail_count, and error_count were increased only when a response was received.

    • The following modifications were made in Tmax 5 SP2:

      • When an Async type gateway (TMAXNONTX, TOPEND_STDGW, JEUS_ASYNC, TUXEDO_ASYNC) schedules, the COUNT of the spr’s gateway increases.

      • When receiving a response through a gateway, the gateway’s svctime, fail_count, and error_count are increased. When receiving via tpforward, these values are not increased.

      • When scheduling with a gateway, it is always in RDY state.

    • Related issue: IMS 49974

  • Fixed an error where no response was received when calling from the DYN server.

    • Fixed the issue where responses were not received when performing interactive communication such as tpcall, tpcall, tpsuspend, tpresume, and tpforward from servers set to DYN to other DYN servers.

    • Related issue: IMS 54342

  • Fixed the general server boot failure error for DYN server setup

    • Fixed the issue where the normal server boot would fail when tmbooting if there was a normal server setting after the DYN server setting (this would always happen if the spr number was set later than the sum of MAXTMS).

  • Fixed an abnormal backup behavior when setting up a backup node

    • An error that occurred when setting up a backup for a server group due to a bug caused by the addition of the AUTOBACKUP option to the SVRGROUP section in Tmax 5 has been fixed.

  • NCLH inter-reconnection supplement

    • Improved the function to release the connection if the CTD state persists for a long time when establishing a connection between TMMs while both nodes are running.

    • Related issue: IMS 54501

  • Fixed memory leak in CLH during operation when using COUSIN setting.

    • This bug occurred after the IRT function was added to Tmax 4, and the CLH memory leak phenomenon caused by frequent reboots of servers set to COUSIN has been fixed.

    • Related issue: IMS 58188

  • Fixed the issue where TPEOTYPE and TPECLOSE errors occurred in tpstart when using the encryption function (Windows client)

    • Fixed the issue where TPECLOSE or TPEOTYPE would intermittently occur when calling tpstart() when using the encryption function (occurred only on Windows clients).

    • Related issue: IMS 64262

  • Fixed the issue where resource cleanup was not performed properly when terminating a client connection in Event CLH.

    • In a 4-node environment, when starting each node simultaneously with tmboot -n <hostname> from the console without going through racd, the phenomenon of other servers not starting after CLH is started has been fixed.

  • Fixed an abnormal status when performing suspend on some processes.

    • The phenomenon in which the status of a server changes to BLOCK when adjusting the MAX value on a server of type STD_DYN or UCS_DYN and then suspending only some server processes has been fixed.

    • Related issue: IMS 63753

  • CLH hang phenomenon after performing cfgadd function

    • The issue where CLH would hang when adding a server using the cfgadd command in a multi-node environment, preventing requests from clients or servers from being processed properly, has been fixed.

    • Related issue: IMS 63760

  • Fixed a bug where all servers would not shut down when shutting down with tmdown -S svrname -i

    • Fixed the issue where not all servers would be shut down sequentially when shutting down servers with the tmdown -S svrname -i option in an environment where STD_DYN was mixed.

    • Related issue: IMS 61787

  • Fixed a bug in the TMM fork control function, where ASQCOUNT startup requests were canceled when processing was delayed.

    • When processing a startup request by ASQCOUNT in TMM, if the number of processes processing the existing fork reaches the threshold set in the -F option and the fork for the request is delayed, the startup is canceled by the logic that checks whether the cur value has reached max when resuming the fork later. In addition, after some time, the TMM3033 " svr (svrname) booting time (10) is over" error occurred, and as a result, although cur reached max, the number of actually started processes was less than cur.

    • This phenomenon has been prevented by strengthening the check logic for cur and max when fork is resumed.

    • Related issue: IMS 65847

  • Fixed the issue where TMM terminated abnormally while transferring a list of dynamically added services to mksvr in a general server group when starting a node.

    • In a multi-node environment, TMM would terminate abnormally when tmbooting only a specific node. When a specific node tmboots, it connects sessions with other nodes during the startup process, then transfers the list of dynamically added services on its own node to the other node, and the other node in turn transfers its list of dynamically added services to the newly started node. However, in the environment configuration written with mksvr, if there is a server that contains a dynamically added service that does not exist and the server does not belong to the COUSIN group (either a single server group or a backup server group), TMM would terminate abnormally. However, even in this environment configuration, this does not always occur when tmbooting, and may not occur intermittently.

      In this way, the abnormal termination of TMM while transmitting the list of dynamically added services to mksvr of the general server group when starting the node has been fixed.

    • Related issue: IMS 68699

  • If tmdown is performed during tmboot, prevent the server process from remaining running even after down is complete.

    • In order to prevent the server process from remaining running even after down is complete when tmdown is performed during tmboot, the following changes have been made.

      • TMM will no longer process registration requests from new servers after tmdown has started.

      • The server process terminates itself if the TMM terminates before it terminates.

      • If tmdown is stopped during the Tmax full shutdown process using methods such as <ctrl> + c, then running tmdown again is only allowed with the -i option.

    • Related issue: IMS 63647

  • Fixed a bug where the engine would not terminate when exiting with tmdown -i after pressing <ctrl> + c during tmdown.

    • The issue where only TMM and APs would be terminated and the remaining engines would not be terminated when tmdown was stopped with <ctrl> + c and then terminated with tmdown -i has been fixed.

    • Related issue: IMS 68742

  • Fixed the issue where the server would restart when exiting with tmdown -S after pressing <ctrl> + c during tmdown -S.

    • The phenomenon in which the server process that was being shut down by the first down request would abnormally terminate and restart when the second down request was made while shutting down the server with tmdown -S and then stopping it with <ctrl> + c and then shutting down the server again with tmdown -s has been fixed.

4.3. Utility

  • Fixed the cfl -r function issue

    • Changes were made to the way maxuser is calculated in CLH.

    • Related issue: IMS 64318

  • Fixed the issue where tmadmin processing was delayed due to sleep in racd.

    • Fixed a delay when tmadmin was restarted after terminating a tmadmin query (remote connection via racd) in a multi-node environment.

    • Related issue: IMS 64760

  • Fixed abnormal termination when setting the -p option value to MAXSPR + 8192 or higher during tmdown.

    • The phenomenon of abnormal termination when the -p option value is set to MAXSPR + 8192 or higher when executing tmdown has been fixed.

    • Related issue: IMS 68326

  • Added explanation of the -w option to the tmboot -h output.

    • Added the explanation for the -w option to the tmboot -h output, which was missing.

    • Related issue: IMS 69364

  • Fixed an error that prevented the tmdown -p command in Dynamic Svr from performing properly.

    • Fixed an error that prevented normal execution when terminating a server process of type STD_DYN or UCS_DYN with tmdown -p.

4.4. Domain Gateway

  • Fixed an error that occurred when calling a counterpart node service through a domain gateway: TPERRNO 24 (TPENORDY).

    • When the Tmax Non-TX gateway is configured as COUSIN, the following sequence occurs, resulting in a phenomenon where scheduling to the gateway fails.

      1. Scheduling at CLH

      2. Terminate connection between gateways

      3. Failing scheduled requests at the gateway

      4. Reconnection between gateways

      5. The gateway sends a message that the channel has been connected to TMM.

      6. TMM sends a channel connection success message to CLH

      7. CLH determines that it is in a state where it can be sent to the gateway.

      8. CLH determines that it cannot receive and send the request from the gateway in step 3.

      To address this issue, seqno was applied when the gateway responds to TMM and CLH, so that late responses were not processed. Furthermore, as a supplement, a live message was sent to each CLH at NLIVEINQ and GWCHKTINT time intervals while the gateway channel was connected, enabling scheduling. If NLIVEINQ and GWCHKINT are both configured, they are sent at the GWCHKINT interval.

    • Related issue: IMS 62408

4.5. Management Tools

  • COUSIN gateway suspend/resume bug patch

    • When configuring a gateway (twgw, tmgwnt, etc.) as COUSIN using a general server group, the gateway was not suspended when suspending a server in the grouped general server group with sp -v. In addition, when suspending a gateway with sp -v, only the gateway server was suspended.

      Fixed abnormal suspend behavior of gateways configured with these COUSINs.

    • Related issue: IMS 45659

  • Fixed the tmadmin ntxgwi information mismatch issue

    • The phenomenon of channel information being retrieved while still alive when tmaxgwnt with COUSIN set is terminated with tmdown -i has been corrected.

    • Related issue: IMS 49802

  • Fixed the abnormal server status query issue

    • Fixed an error that caused incorrect results when querying STD_DYN, UCS_DYN servers with st -v.

    • Related issue: IMS 54177

  • Fixed the tmadmin suspend abnormal operation error

    • Fixed an error that caused tmadmin suspend to behave abnormally as follows:

      • Fixed the issue where tmadmin would hang when a service (server) running in tmadmin was suspended and an SVCTIMEOUT occurred while the server was in a blocked state, causing the server to terminate abnormally.

      • Fixed the issue where tmadmin would hang if another tmadmin connected and then exited while tmadmin was performing a suspend.

      • Fixed the issue where suspend in tmadmin would block for a long time, so I had to terminate the server with <ctrl> + c, resume the server, and then call suspend again, causing a hang.

    • Related issue: IMS 54177

  • Modified tmadmin cfg details

    • The following abnormal display error in the tmadmin cfg contents has been corrected.

      • Modify tmadmin cfg -n, -g to show maxrstart value

      • Fixed a bug where [Y/N] was entered as a number in tmadmin cfg -v rs [Y/N]

    • Related issue: IMS 67759

  • Fixed abnormal output of -x option result when using st -s information sort option (-o)

    • Fixed the following issue that occurred when using the tmadmin st -o option:

      • Fixed the issue where some of the detailed information in the -x option was not visible when using the -x (detailed information) and -o (sorting) options, which are additional options in st -s or -p in tmadmin.

      • Fixed the issue where when using st -p -x -o, -x would print from utime to smaxtime first and then show general information.

    • Related issue: IMS 69155

4.6. Java Gateway

  • Fixed an abnormal termination issue when using the -a option of the CLOPT entry.

    • When specifying a file by adding the -a option to the CLOPT entry in the GATEWAY section of the JEUS_ASYNC type, the phenomenon of the gateway terminating abnormally if the file does not actually exist has been corrected.

    • Related issue: IMS 71122

  • Fixed the TPESYSTEM error that occurred when calling remote from javagwa

    • When using the -n option and -A option together in javagwa during a request from Tmax to webtasync (jtmax), the phenomenon of TPESYSTEM occurring when a request comes in from CLH while the alive check msg is sent and no response is received has been fixed.

    • Related issue: IMS 41526

  • Fixed a bug in -H option of JAVAGW/JAVAGWA CLOPT entry and changed the CDATE macro

    • When specifying a file by adding the -a option to the CLOPT entry in the GATEWAY section of the JEUS_ASYNC type, the phenomenon of the gateway terminating abnormally if the file does not actually exist has been corrected.

      • Fixed the issue where the live check was performed when applying the -D[1|4|7] -H option to the CLOPT item.

      • Fixed log file creation when date is changed with CDATE

    • Related issue: IMS 70952

4.7. Tuxedo Gateway

  • Fixed a crash when receiving a SIGHUP signal from the Tuxedo gateway.

    • Fixed the issue where tuxgw and tuxgwa would terminate when receiving SIGHUP.

    • Related issue: IMS 51608

  • Fixed the TPETIME issue that occurred when calling undefined services via tuxgw

    • Fixed the issue of TPESYSTEM being raised when calling an undefined FML Buffer service in Tuxedo through the Tuxedo gateway.

    • Related issue: IMS 65904

  • Fixes a potential incorrect memory reference when listening to a Tuxedo Gateway socket.

    • Fixed a potential issue where incorrect memory could be referenced when listening to a Tuxedo Gateway socket.

4.8. TDL

  • Fixed an error to ensure consistency when calling tdlcall during tdlupdate.

    • The phenomenon of a new module being called when tdlcall is called during tdlupdate has been corrected to be called after tdlupdate is completed.

    • Related issue: IMS 66958

  • Fixed a core occurrence issue

    • Fixed the issue where core occurred when performing tdlcall after dynamically changing the monitoring function.

    • Related issue: IMS 39497

  • Fixed excessive memory usage of processes using TDL when MONITOR=Y is set

    • The phenomenon of memory usage on servers or clients using tdlcall increasing proportionally to MAXMODULE when MONITOR=Y is set in tdl.cfg has been fixed. The MONITOR=Y function has been modified so that memory usage is reduced as when MONITOR=N is set.

    • Related issue: IMS 39622

  • Enhanced error messages when running tdlclean

    • When running tdlclean, modules in the '/run' directory that were in use by other processes were not deleted due to the nature of unlink. However, the log indicated that they were 'removed' even though they were not actually deleted. Therefore, we modified the log to record the deletion even if they were not.

      (W) TDLCLEAN: cannot remove lib001.4a4eb491 in use[TDL0546][Text file busy]
    • Related issue: IMS 48530

4.9. WebtService Gateway

  • Fixed the infinite wait issue when requesting a non-existent web server from the WebService Gateway (WSGW)

    • The infinite waiting phenomenon that occurred when requesting a non-existent web server in the WebService Gateway (WSGW) was fixed so that a failure response can be returned after GWCONNECT_TIMEOUT.

4.10. WebT

  • Fixed the magic number error

    • The phenomenon of a magic number error occurring when calling after setting the WebT String Buffer to a NULL value has been fixed.

    • Related issue: IMS 67917

4.11. WebAdmin

  • Fixed the WebAdmin CRYPTPORT recognition error

    • If CRYPTPORT is present in Tmax’s configuration file, it has been modified so that WebAdmin can access the node normally.

  • Fixed an error where existing connections remained when changing the number of connections in WebAdmin agent registration.

    • The issue where existing connections did not disappear even when the number of connections was changed when modifying a domain through the [Agent Registration] menu in Tmax WebAdmin has been fixed.

    • Related issue: IMS 66143

  • Fixed an error in WebAdmin that caused the CLOPT entry in the GATEWAY section to be handled abnormally.

    • When modifying the configuration file in Tmax WebAdmin, the CLOPT item in the GATEWAY section has been modified to allow the entry of a value of " ".

    • Related issue: IMS 66363

  • Fixed an error where the status tree in WebAdmin would not display anything.

    • A memory corruption error occurred when reading the configuration file or log file in wsgw, so this has been fixed to handle that part normally.

    • Related issue: IMS 66353

  • Fixed domain deletion and user deletion failure errors in WebAdmin

    • Fixed the issue where a domain is not deleted when registering a domain in Tmax WebAdmin, saving a configuration file for the corresponding domain, or saving a temporary file even once.

      Also fixed the deletion failure that occurred in the above case.

    • Related issue: IMS 66353

  • Fixed the issue where error codes would accumulate when the same error message occurred.

    • The phenomenon of error codes being accumulated and displayed when the same error message occurs has been corrected.

    • Related issue: IMS 66353

  • Fixed an error that prevented STD_DYN and UCS_DYN servers from being displayed properly in the WebAdmin server process information view menu.

    • When performing the View Server Process Information function in Tmax WebAdmin, the issue where information on STD_DYN and UCS_DYN servers was displayed incorrectly or missing in the table has been corrected.

    • Related issue: IMS 66353