Tmax 5 SP2 Fix#2
This chapter briefly describes newly added and changed features in Tmax 5 SP2 Fix#2. For detailed information, refer to the relevant guide.
1. Added features
This section describes the major features added.
1.1. Engine
-
Added a feature to change the status information notification of COUSIN servers on other nodes to be handled by CLH.
-
In a multi-node environment tied to COUSIN, when scheduling from a remote node to a local node, a TPNOREADY error occurred when the COUSIN server’s status information became NOTREADY due to a CLH abnormal termination or certain circumstances. Previously, the TMM was responsible for notifying the COUSIN server of status information on other nodes, and this notification occurred only when a connection between the server and the TMM was established. A function has been added to change this to CLH. This should be taken into consideration when applying, as the CLH may incur a large load during startup.
-
CLHOPT = " -c"
To use this feature, you must set the above on all nodes.
-
Related issue: IMS 82476
-
-
Added the NON_PERSISTENT RQ feature
-
The existing structure of RQ always operates as PERSISTENT. This means that enqueued messages are always written to a file, so there is no loss.
For certain tasks, you may want to use the queue functionality but not log to a file. Therefore, the default behavior for calling the tpenq_ctl function is to log to a file, but a flag has been added to store the data only in memory.
-
You can set the maximum number of messages that can be stored in the MAX_MEMQCOUNT entry of the RQ section of the environment settings.
-
If you set TPRQS_NON_PERSISTENT in the flags of TMQCTL, the message will not be written to a file, but only to memory.
-
Related issue: IMS 85811
-
-
Added the SEED-based encryption/decryption function
-
Setting environment variables
In order to ensure that all modules that handle encrypted portions of Tmax’s environment settings apply common settings, environment variables must be set.
Before executing tmboot, export the environment variables as follows.
Environment variables Description TMAX_TENC_CIPHER
The encryption method is specified by the SEED-based encryption/decryption utility related settings available in the Tmax configuration file.
If a value other than SEED is set or not set, it is processed using the existing encryption method.
TMAX_TENC_KEYFILE
Specifies the location of the secret key file. This is required if the encryption method is SEED.
-
tencrypt: Added SEED-based encryption/decryption functionality.
Added the -g option to generate a secret key for SEED use, and the -e option is the same as the existing usage.
Item Description -e sentence [-d]
Enter the sentence to be encrypted.
tencrypt -e ORACLE_XA+Acc=P/scott/tiger+SesTm=6
When used, it is displayed on the screen as follows.
Please insert the following text in the configuration file "OPENIFNO" field. [@@QEAzMWU4Y0lOYXd2Y2lkSzdpTW1lL0F4U0d1NCswekkxSFlaMjJweld OTERaM2ptVT0jQEBvNVJPVUE9PQ==@@]
Then copy the contents inside [] to the OPEINFO field.
OPEINFO = "@@QEAzMWU4Y0lOYXd2Y2lkSzdpTW1lL0F4U0d1NCswekkx SFlaMjJweldOTERaM2ptVT0jQEBvNVJPVUE9PQ==@@"
When the -d option is used together, the decrypted result is also printed.
-g
To use SEED, a file is created that stores the secret key commonly used by all modules and nodes.
Encryption and decryption are only possible after generating a secret key file. Changing the secret key requires re-encryption. When applying to multiple nodes, the contents of the generated secret key file must be copied and applied to other nodes to ensure the same secret key is applied.
If the encryption method is not SEED, a secret key file is not created.
-
Encryption and decryption in tmslib/svrlib
tmax_tencrypt() has been added. The libtencrypt library must be linked during build. The tencerrno variable is a global variable and is not thread-safe.
-
Prototype
#include <usrinc/tencrypt.h> int tmax_tencrypt(char *src, int srclen, char **dest, int *destlen, int mode)
-
Parameters
Parameter Description src
Specifies the address value of the input data to be encrypted or decrypted.
srclen
Specifies the length of the input data. If 0 is specified, strlen() is called internally and used.
dest
Specifies the address to which the buffer address of the output data will be passed after encryption or decryption. The buffer is internally allocated and returned, and free() must be called for the address after the function call.
destlen
Specifies the length of output data after encryption or decryption is performed .
mode
If you want to encrypt src, specify TENC_ENCRYPT. If you want to decrypt src, specify TENC_DECRYPT. In the case of TENC_ENCRYPT, the maximum length of the plaintext of src is limited to 255 characters.
-
Return value
Return value Description 0
The function call is successful.
-1
The function call failed and an error code is set in tencerrno. The possible values are the same as those for tperrno.
-
Error
If tmax_tencrypt() fails, tperrno is set to one of the following values:
Error code Description [TPEPROTO]
Failed to load secret key file when performing encryption/decryption.
[TPEINVAL]
The input data is incorrect or NULL when performing encryption or decryption.
[TPEOS]
Memory allocation failed.
[TPELIMIT]
The ciphertext generated during encryption exceeded the allowable size.
-
Example
#include <stdio.h> #include <string.h> #include <usrinc/tencrypt.h> int main(int argc, char **argv) { int n, len; char *cipher, *plain; if (argc < 2) return 1; cipher = plain = NULL; n = tmax_tencrypt(argv[1], strlen(argv[1]), &plain, &len, TENC_ENCRYPT); if (n < 0) printf("ENC failed. error = %d\n", tencerrno); else printf("ENC [%s] ==> [%s][%d]\n", argv[1], plain, len); n = tmax_tencrypt(plain, len, &cipher, &len, TENC_DECRYPT); if (n < 0) printf("DEC failed. error = %d\n", tencerrno); else printf("DEC [%s] ==> [%s][%d]\n", plain, cipher, len); free(cipher); free(plain); return 0; }
-
Build
cc test.c -o test -I$TMAXDIR -L $TMAXDIR/lib64 -ltencrypt
-
-
Related issue: IMS 86574
-
-
Added an option to apply CLHQTIMEOUT selectively per server
-
Currently, CLHQTIMEOUT is a value set on a node, and all servers included in the corresponding node will follow this value. A function has been added to ignore CLHQTIMEOUT when IGNORE_CLHQTIMEOUT is set to Y.
-
Related issue: IMS 89604
-
-
DB2 support for multiple RMs
-
Supports DB2 in Multiple RMs. For detailed usage information, refer to Tmax Application Development Guide.
-
-
Added Term License
-
Tmax License now provides a Term License feature that can be used for a certain period of time.
-
Related issue: IMS 97968
-
-
Added a feature to fix the 60-second waiting time for connections other than Tmax clients.
-
Added the "-s sec" option to CLHOPT entry
CLH forcibly terminates a client’s connection if it does not receive a TPSTART message within 60 seconds of connecting. If this option is enabled, the specified number of seconds will be applied instead of the default of 60 seconds.
-
Add the TMAX_TPSTART_TIMEOUT environment variable
When calling tpstart() on the client, the TMAX_TPSTART_TIMEOUT environment variable, which indicates the wait time for sending and receiving TPSTART messages after connect, has been added. If this environment variable is not specified, the default wait time of 60 seconds is applied.
-
Related issue: IMS 80005
-
-
When starting JEUSGW with jesgw -h 1 -R IGN, there is an error that the TLM does not store the transactions and deletes them. So, it has been modified to continue to store the pending transactions in the JEUS type gateway in TLM.
-
Related issue: IMS 96525
-
-
Fixed the issue where sub-files could not be created when creating a directory in Tmax after IPCPERM=650 was set because the user did not have x permission.
-
When the server was first started, the file permissions of the logs left behind with clopt’s -e and -o options did not follow the ipcperm settings in the environment file. An option was added to follow the ipcperm settings when the environment variable TMAX_APPLY_IPCPERM was set to y or Y.
-
Related issue: IMS 86434
-
-
Added the -c option to the server’s clopt options.
-
When the date is changed, the ulog file FD is automatically closed. However, in the case of UCS, the FD closing function does not work if tpschedule(0).
-
Related issue: IMS 94321
-
1.2. Client/Server
-
Added the TIP SERVER stat information query function
-
If TIP_SECTION is set to SVR or SERVER, you can view server information like tmadmin’s st -v.
-
Related issue: IMS 80456
-
-
Added an API to obtain the spri of the server process in a multi-node environment.
-
tmax_get_my_unique_spri_in_domain
-
Prototype
int tmax_get_my_unique_spri_in_domain();
-
Example
#include <usrinc/tmaxapi.h> ... int spri; printf("service is started!\n"); spri=tmax_get_my_unique_spri_in_domain(); printf("spri = %d\n", spri);
-
-
tmax_make_unique_spri_in_domain
-
Prototype
int tmax_make_unique_spri_in_domain(int nodeno, int spri);
-
Example
#include <usrinc/tmaxapi.h> ... TMAXSVRINFO *info; printf("service is started!\n"); info = (TMAXSVRINFO *)malloc(sizeof(TMAXSVRINFO)); if(info == NULL) { tpreturn(TPFAIL, -1, NULL, 0, TPNOFLAGS); } tmax_my_svrinfo(info); spri=tmax_make_unique_spri_in_domain(info->nodeno, info->spri); printf("spri = %d\n", spri);
-
-
Related issue: IMS 88194
-
1.3. RQ
-
Added the POD functionality to RQ
-
If you enter "POD" in the TMSNAME field, RQ will act as a POD. It will only perform startup for tpenq requests.
-
Related issue: IMS 85795
-
-
Added the DEQ ACK feature to RQS
-
A feature was added so that when DEQ is performed, it does not disappear from RQS immediately, but requires an ACK request to disappear.
-
When setting the exp_time of TMQCTL, if there is no response within the given time after DEQ, the Q element returns to a state where DEQ can be performed again. If not set, it is not recorded in SLOG.
-
When setting the flags of TMQCTL, it works as follows:
Flag Description TPRQS_AUTOACK
In case of DEQ, it is deleted from RQS without giving a separate ACK.
TPRQS_NOAUTOACK
When DEQing, make sure it is not deleted from RQS.
TPRQS_ACK_SUCCESS
The Q element corresponding to the CTL is deleted by giving an ACK.
TPRQS_ACK_FAIL
When DEQing, make sure it is not deleted from RQS.
-
Related issue: IMS 85499
-
-
Added the ability to call a user callback function in RQ
-
If the AnyLink gateway sets deq_time, deq_time must be reset when the RQ goes down to ensure uninterrupted processing. However, the AnyLink gateway cannot detect when the RQ goes down and then starts again, making it unable to compensate. Since deq_time is also reset when the AnyLink gateway goes down, there are also situations where ordering cannot be guaranteed.
Allows deq_time to be applied by RQ, rather than by the AnyLink gateway. Since RQ cannot determine deq_time on its own, a callback function is called when applying deq_time to allow it to call the AnyLink library.
You can use it by setting the environment variables that RQS starts as follows.
RQ_DEQTIME_CALLBACK=libanme.so
If this setting is present, the corresponding library is dlopen and the callback function is called to apply deq_time.
-
How to use
-
Prototype
int compute_rq_deqtime(TMQCTL *ctl, char *dp, int datasize);
-
Parameters
Parameter Description ctl
- * deq_time: When writing a function, it must be written to record deq_time within the structure. (Unit: seconds)
dp
A pointer to the message body to be inspected.
datasize
The length of the message.
-
Return value
Return value Description 1
deq_time calculation is successful.
0
The magic number in the AnyLink header does not exist or does not match the data passed to the callback function. (Assuming RQ is called from a service other than the AnyLink engine.)
-1
An error occurred during processing.
-
Related functions
tpenq_ctl(), tpenq()
-
-
Related issue: IMS 85795
-
1.4. Domain Gateway
-
Added the CLOPT -m option to also terminate domain gateway when TMM terminates abnormally.
-
If the -m option is set, tmgw(nt) will also terminate if TMM terminates abnormally, similar to the MAC = Y function in the SERVER section.
-
Related issue: IMS 88835
-
-
Added a feature to disable domain gateway looping prevention technology.
-
In a multi-domain environment connected with the TMAXNONTX Type, if a request from a gateway calls a service bound to the gateway and COUSIN, it will not be scheduled to the COUSIN-bound gateway. The CLHOPT -k option allows scheduling to the COUSIN-bound gateway by adding a feature. Note that in environments connected with the TMAX Type, scheduling is performed by default on the COUSIN-bound gateway.
-
Related issue: IMS 89623
-
1.5. Java Gateway
-
JEUS, JEUS_ASYNC GATEWAY log level dynamic change feature added
-
Added the ability to dynamically change the -D option in CLOPT of the GATEWAY section using tmadmin’s setopt.
-
Example
$$1 tmax (tmadm): setopt -gw gwname -D loglevel
-
Related issue: IMS 91590
-
-
Added the ability to not log pings sent from WebT to JEUSGW when setting the -H option to JEUSGW CLOPT
-
Related issue: IMS 95586 / 84396
-
1.6. Tuxedo Gateway
-
Tuxedo Gateway Feature Improvements
-
This feature works without the -t option when connecting Tuxedo Gateway and Tuxedo in Tuxedo 7.2 or later. If this option is not specified, the -t option must be specified in Tuxedo.
-
Related issue: IMS 97823
-
1.7. TCP gateway
-
Added the tcpgw CLOPT option
-
tcpgw CLOPT option
Option Description [-XCHK_UID]
In a situation where get_msg_info() returns as REMOTE_REQUEST, if the value set to info->uid exceeds the allowable range (16777215), the message is dropped.
(E) SVR6226 UID(16777216) range is exceeded in get_msg_info [HLINK9060] (E) SVR6228 msg discarded due to user routine error in get_msg_info : 0 10 [HLINK9065]
[-XCHK_END_SIZE]
If the size of the returned data is larger than the size of the received data in check_end_msg(), the message is dropped.
(E) SVR6227 user routine error: returned size(23) is larger than its orginal size(12) in chk_end_msg [HLINK9062] (E) SVR6228 msg discarded due to user routine error in chk_end_msg : 0 12 [HLINK9064]
-
Related issue: IMS 99925
-
1.8. Utility
-
Extended the racer -c feature
-
Added the -e option to the racdr -c option to enable use of commands other than tmboot, tmdown, cfl, and gst.
Item Description [ -e ]
Allows execution of commands not permitted by the -c option. Must be specified before the -c option. If the command needs to be executed by a shell program on the node when it is executed, use the -w option together.
[ -c command ]
Executes commands in racd.
All parameters following the -c option are considered command-line parameters. Therefore, when specifying other racdr options, they must be specified before the -c option. Only tmboot, tmdown, cfl, and gst commands are allowed. To execute other commands or shell scripts, the -e option must be specified.
One thing to note is that tmboot and tmdown append internally used options to the end of the command-line parameters when executing commands in racd. If you use an option that requires an argument as the last parameter but do not specify one, unintended behavior may occur, so caution is advised.
For example, if you execute the command "racdr -c tmboot -d", it is normal for an error to be output because an incorrect parameter of tmboot was used (the -d option requires an argument). However, when executed by racd, the command may be executed by processing a strange value due to the option added after -d. Therefore, you need to be very careful when entering parameters when entering a command.
-
Example
$ racdr -n $RMTNAME -ec cp $RMTDIR/config/node3.m $RMTDIR/config/node3.m.cp
-
Related issue: IMS 86668
-
-
Added an ability to prevent backup files from being created when using the racdr -s option.
-
Added the ability to not create a backup file when the -r option is specified while using the -s option.
-
Example
$ racdr -n $RMTNAME -s backupfile -d 3 -r
-
Related issue: IMS 86668
-
-
Added an option to allow the use of shell commands such as wildcard characters (*) when using the racdr -ec option.
-
When sending a command with -ec, if the command contains the '*' character, you can use the -w or -W option to get the desired result.
Item Description [ -w ]
When executing a command with the -e, -c options, it is executed through a shell program.
The default shell used is the "sh" program. To use a different shell program, use the -W option instead of this option.
When using wildcard characters in the parameters of a command, you must enclose the command or command line parameters in single quotes (' ') to pass the wildcard characters literally to racd.
[ -W shell program ]
When executing a command using the -e and -c options, it is executed through the specified shell program.
Specify the name of the shell program you want to use, such as ksh, tsh, or bash, as an argument.
-
Example
$ racdr -n $RMTNAME -w -ec ls $RMTDIR/config/'backupfile*' $ racdr -n $RMTNAME -W ksh -ec ls $RMTDIR/config/backupfile'*'
-
Related issue: IMS 97793
-
-
Added the ability to not use the svct/svctab.c file when performing mksvr.
-
The mksvr -d option allows you to build services without referencing the existing svctab.c file. This is used when dynamically registering services independently, without being affected by existing environment settings.
-
Related issue: IMS 79919
-
1.9. Management tools
-
Added the admnoti feature
-
Added the ability to send events from tmadmin to TCS, UCS, and RDP servers.
When tmadmin requests an event from specified servers, the servers process the event by calling the user-specified callback function. If no callback function is registered, the event is ignored.
Note that if you are running in tmadmin master mode and do not specify the -l or -n option, the same request will be forwarded to all nodes by RACD.
-
How to use
admnoti supports the following options:
admnoti [-a | -g svgname | -v svrname | -p spri | -P pid] [notification message]
Option Description [-a]
Sends an event to all server processes.
[ -g svgname]
Sends an event to all server processes belonging to svgname.
[-v svrname]
Sends an event to all server processes corresponding to svrname.
[-p spri]
Sends an event to the server process of the corresponding spri.
[-P pid]
Sends an event to the server process of the given pid.
[notification message]
Enter the message to be passed to the callback function. (Optional)
-
Function definition
The user defines a callback function as TPADMNOTI type.
-
Prototype
#include <usrinc/tmaxapi.h> typedef int (__EXPORT *TPADMNOTI)(int reqno, int len, char *args);
-
Parameters
Parameter Description reqno
The sequence number for an command request from tmadmin.
len
The string length of the notification message.
args
A buffer containing the notification message string. This buffer is freed by the server library upon return.
-
Return value
Return value Description 0 or more
The event processing is successful.
Negative
The event processing failed.
-
Related functions
tpregancb(), tpunregancb()
-
-
Registering a function
Register a callback function using the tpregancb() function. If a callback function is not registered, the received event is ignored.
-
Prototype
#include <usrinc/tmaxapi.h> int __EXPORT tpregancb(TPADMNOTI);
-
Parameters
Parameter Description TPADMNOTI
Specifies a callback function of type TPADMNOTI. If there is an existing callback function, it is changed to the specified callback.
-
Return value
Return value Description 1
The function call is successful.
-1
The function call failed and an error code is set in tperrno.
-
Error
If tpregancb() fails, tperrno is set to one of the following values:
Error code Description [TPEINVAL]
The function address specified in callback is incorrect.
-
-
Function release
The tpunregancb() function releases a previously registered callback function. Any subsequent events received are ignored.
-
Prototype
#include <usrinc/tmaxapi.h> int __EXPORT tpunregancb();
-
Return value
Return value Description 1
The function call is successful.
-1
The function call failed and an error code is set in tperrno.
-
Error
If tpunregancb() fails, tperrno is set to one of the following values:
Error code Description [TPEPROTO]
There is no registered callback function.
-
Example
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <usrinc/atmi.h> #include <usrinc/tmaxapi.h> int admnoti(int reqno, int len, char *args); TOUPPER(TPSVCINFO *msg) { int i; printf("TOUPPER service is started!\n"); printf("INPUT : data=%s\n", msg->data); for (i = 0; i < msg->len; i++) msg->data[i] = toupper(msg->data[i]); printf("OUTPUT: data=%s\n", msg->data); tpreturn(TPSUCCESS,0,(char *)msg->data, 0,0); } UNREG(TPSVCINFO *msg) { int ret; printf("UNREG service tpunregancb is started!\n"); ret=tpunregancb(); printf("tpunregancb ret = %d\n",ret); sprintf(msg->data,"%d",ret); tpreturn(TPSUCCESS,0,(char *)msg->data, 0,0); } int tpsvrinit(int argc, char *argv[]) { if (tpregancb(admnoti) < 0) { printf("callback reg error\n"); } } int admnoti(int reqno, int len, char *args) { printf("callback reqno[%d] \n",reqno); return 0; }
-
-
Related issue: IMS 80093
-
-
Added the -j option to print in one line when searching with st -p
-
When using st -p -x and st -p -d, a function was added to display items appearing on multiple lines on a single line.
-
How to use
st -p -j st -p -x -j st -p -d -j st -p -d -x -j
-
Related issue: IMS 83120
-
-
Added the ability to view cumulative COUNT of RQ
-
Modified to display Accumulated queue activities when querying with rqs -s qname.
-
How to use
$$1 tmax (tmadm): rqs -s rq1 -------------------------------------------------------- Number of queue entries of RQ [rq1] -------------------------------------------------------- request 0 reply 1 fail 0 -------------------------------------------------------- Accumulated queue activities -------------------------------------------------------- request enqueued 0 request dequeued 0 reply enqueued 10 reply dequeued 0 --------------------------------------------------------
-
Related issue: IMS 84700
-
-
Added a function to output the status of all RQs in list format.
-
When querying with rqs -a, the status of all RQs is printed in list format.
-
How to use
$$1 tmax (tmadm): rqs -a rq1 RDY 0 0 0 0 0 5 5 total count : 1
-
Related issue: IMS 84700
-
-
Added the ability to dynamically change the TXTIME of the service.
-
Added a function to dynamically change TXTIME in the SERVICE section using the set command.
-
How to use
$$1 tmax (tmadm): set -s svcname txt value
-
Related issue: IMS 91590
-
-
Added the TXTIME output option when running cfg -s
-
Added the -x option to output TXTIME when running cfg -s.
-
How to use
$$1 tmax (tmadm): cfg -s -x, cfg -s svcname -x, cfg -s -x svcname
-
Related issue: IMS 91590
-
-
Added the notify_reconnect_clh function
-
During Tmax operation, situations may arise where a specific server process fails to connect to a specific CLH. In such cases, a command has been added to manually establish a connection to a specific server process and a specific CLH if the connection fails automatically.
-
How to use
$$1 tmax1 (tmadm): notify_reconnect_clh clh index spr index
-
Related issue: IMS 96544
-
-
Added the -d option to check the scheduling elapsed time of the server process in the RUN state.
-
When querying server processes (st -p -d), the elapsed time is displayed if the server process is in the RUN state. In any other state, it is displayed as '-'. This must be used in conjunction with st -p.
-
Example
$$1 tmax1 (tmadm): st -p -d $$1 tmax1 (tmadm): st -p -x -d
-
Related issue: IMS 44140
-
-
Added transaction processing functions: txc / txr / txq [-t upper xid / lower xid]
-
For a transaction started from a gateway, if a local transaction is restarted due to a failure and a decision is not received from the remote, the transaction remains pending, and it is difficult to clean up a transaction that does not retry remotely. Therefore, a query/commit/rollback function has been added for a pending transaction started from the remote.
-
The first part of the ID is the upper xid, the second part is the lower xid, and the third xid is the bqual no.
-
Query (txq -t)
$$1 tmaxi9 (tmadm): txq -t -------------------------------------------------------------------------------- XID svgno RXID gwname -------------------------------------------------------------------------------- 00000000:00032088:00000000 3 05000403:00000001:00000000 gw1 00000000:00032089:00000000 3 00000102:00000001:00000000 gw1
-
Commit
$$4 tmaxi9 (tmadm): txq -t -------------------------------------------------------------------------------- XID svgno RXID gwname -------------------------------------------------------------------------------- 00000000:0002d088:00000000 3 09090906:00000001:00000000 gw1 $$5 tmaxi9 (tmadm): txc -t 0 2d088 XID 00000000:0002d088:00000000 svgno 3. Are you really want to commit?(n|y) y txcommit completed. Please monitor by txquery -t 0 2d088
-
Rollback
$$4 tmaxi9 (tmadm): txr -t 0 00032088 $$4 tmaxi9 (tmadm): XID 00000000:00032088:00000000 svgno 3. Are you really want to roll back?(n|y) n txrollback was canceled
-
-
Related issue: IMS 97235
-
2. Changed features
This section describes the major changes to the features.
2.1. Engine
-
Improved dynamic change of svg load value
-
When a server group with COUSIN set is initially set to a negative number, there is a phenomenon in which scheduling is not performed with the desired load value when attempting to make a dynamic change such as set -g svg ld 1 in tmadmin during operation. In addition, when a server group with COUSIN set is initially set to a negative number and attempting to make a dynamic change using the set command in tmadmin during operation, tmadmin returns a failure.
In tmm, the correct value was set in svgno of the svc area of shared memory so that CLH can schedule normally even when changing from negative to other value, or from other value to negative, and in tmadmin, the restriction was lifted so that it can be changed to negative numbers (-1, -2, -3).
-
Related issue: IMS 94898, 83463
-
-
Improved performance for the phenomenon where tpgetrply takes 0.03 to 0.04 seconds when performed in a multi-node environment.
-
Added the -y option to CLHOPT in the NODE section. It is called with setsockopt (TCP_NODELAY...) for the connected socket.
-
Related issue: IMS 90859
-
2.2. Management tools
-
Modified to allow shutdown even in NRDY state when using the "discon -c cld_id -f" option.
-
When using the "discon -c cli_id -f" command to terminate an abnormally connected client in tmadmin’s NRDY state, the connection was not terminated even when calling "discon -c cli_id -f". This feature has been changed to allow termination even in NRDY state when using the "discon -c cld_id -f" option.
-
Related issue: IMS 80005
-
2.3. Binary
-
Removed the libtmaxcfl.so library
-
Changed to distribute only the libtmaxcfl.a static library.
-
Related issue: IMS 87275
-
3. Bug Patches
3.1. Engine
-
Error when running as a dynamic server type
-
The following error has been fixed so that it does not occur when operating as a dynamic server type.
-
Fixed tmadmin rbs and restart functions not taking DYN_SVR_TYPE into account.
-
The part where DYN_SVR_TYPE is not considered when obtaining svr information and spri information from snmp has been corrected.
-
The part where svr and spri information are obtained from twagent has been corrected to not consider DYN_SVR_TYPE. (Tmax WebAdmin)
-
Fixed the issue where DYN_SVR_TYPE was not considered when calling spracall from clh (tpspracall function).
-
Fixed the issue in svrlib and tmm where DYN_SVR_TYPE was not considered in the chtrc function. (chtrc function)
-
Fixed the issue where DYN_SVR_TYPE was incorrectly used when terminating spri in tmm (when requesting tmdown via the tmadmin API).
-
Fixed the issue where DYN_SVR_TYPE was not considered when notifying spri that clh was restarted in tmm (CLH restart or notify_reconnect_clh command).
-
-
Related issue: IMS 82021
-
-
Problem with TMM0190 error log when restarting Tmax engine
-
When TMM manages restart processes, a restart command is issued, and once the restart is complete, the server process properly dequeues, but the engine processes do not dequeue. The same issue was fixed when terminating other engine processes.
-
Related issue: IMS 84528, 96336
-
-
Fixed the issue where service calls bound to COUSINs on other nodes would not work after dynamically adding servers with CFGADD.
-
Fixed the issue where the svri information of COUSINs to which cfgadd does not belong was not updated on the svc side of shm.
-
Related issue: IMS 84649
-
-
Abnormal CLH shutdown when load occurs in an environment where COUSIN is bound after setting up as a DYN server
-
Fixed the issue where the DYN_SVR_TYPE server index was incorrectly referenced during rescheduling after scheduling failed to another node in a COUSIN configuration in CLH.
-
Related issue: IMS 84659
-
-
Fixed the issue where the POD server would not start when shut down with tmdown -S.
-
Fixed the issue where the POD server would not start automatically when a service request was made to the POD server after it was shut down with tmdown -S.
Added a log that is distinct from the one started by the ASQCOUNT setting when the POD server prays as shown below.
(I) TMM3060 SVR (svr2) is started due to POD, pid = 20364 [TMM0299]
-
Related issue: IMS 84685
-
-
When calling tpconnect, a TPELIMIT error occurs even if the maxconv_node setting is not reached when queued.
-
When calling tpconnect, if the request is waiting in the server queue, concurrent requests are initially processed up to the maxconv_node setting, but after that, only one request is processed, and a TPELIMIT error occurs for the remaining concurrent requests, and the number of concurrent requests that can be processed is reduced by the number of times queueing occurs. This has been fixed.
-
Related issue: IMS 88519
-
-
The phenomenon of the SERVER section’s MAC setting not working as specified
-
The phenomenon of MAC=Y operating the same as MAC=N setting in the SERVER section has been corrected to only perform operations according to the MAC setting.
-
Related issue: IMS 89155
-
-
Fixed the issue where CLH would terminate abnormally when performing tmdown.
-
Fixed a bug that occurred when performing tmdown and server down by referencing the wrong svri(-1).
-
Related issue: IMS 89976
-
-
TMM terminates abnormally when an abnormal message comes into TMM (port scan, etc.)
-
The abnormal termination phenomenon was fixed by adding logic to read the message and determine whether the message is a message used by Tmax (MAGIC NUMBER).
-
Related issue: IMS 90293
-
-
After repeatedly killing CLH with kill and restarting, the system hangs when searching with tmadmin ci.
-
Fixed a bug that caused an infinite loop to occur when CLH restarts and servers are connected simultaneously, failing to properly organize epoll-related information.
-
Related issue: IMS 90861
-
-
Fixed the issue where the server would terminate abnormally when CLH terminated abnormally and SIGPIPE was generated on the server.
-
Fixed the issue where incorrect fd values were referenced during the process of cleaning up CLH’s fd when CLH terminates abnormally and SIGPIPE is detected on the server.
-
Related issue: IMS 90944
-
-
Fixed the issue where cllblock was not applied when changing dynamically.
-
Fixed the issue where blocks would not be released when dynamically changing cllblock to N after booting with the tmadmin set command without specifying cllblocktime and setting cllblock to Y in the settings file.
-
Related issue: IMS 92065
-
-
Fixed the issue where the SERVER section’s CLOPT -m option was incorrect.
-
The memory usage measurement of server processes has been modified to suit each platform. Linux, HP-UX, and SUN platforms operate based on the VSZ value, while AIX platforms operate based on the RSS value.
Every 10 calls to the user server program, the server program’s memory is checked and if it uses more than the size specified in the -m option, the server program is terminated and restarted. (Unit: KB)
-
Related issue: IMS 92210
-
-
Hang phenomenon when booting after setting SQ on zLinux (s390x)
-
Fixed the hang phenomenon when starting up after setting SQ.
-
Related issue: IMS 93335
-
-
The phenomenon that SVCTIME cannot be changed in the MKSVR COUSIN group.
-
The phenomenon where changing the service timeout using the -T option of mksvr was not reflected when restarting a server belonging to the COUSIN group in multinode after recompiling was corrected.
-
Related issue: IMS 79032
-
-
Modified to prevent new servers from connecting when starting tmdown -g or tmdown -A
-
The issue where tmdown would not be performed properly when a new server was started due to asqcount or abnormal server termination when shutting down a specific server group or servers with tmdown -g or tmdown -A has been fixed.
-
Related issue: IMS 98268
-
-
Fixed the issue where CLH would die when sigbus occurred when called with DDR set
-
In the part where STRING is compared to FIELD Buffer, the part where the key value is retrieved was incorrect, so it was corrected.
-
Related issue: IMS 82888
-
-
tpforward GW irt bug fix
-
Fixed the issue where the GW would not connect when the tpforward service was set to COUSIN - GW.
-
tpforward call
-
CLH is scheduled to the first GW
-
Failure response because the first GW is not connected
-
CLH fails to process scheduling to the next GW set to COUSIN after receiving a failure response.
-
-
The phenomenon of GW handling the message error by sending an incorrect message to the next GW while using it after freeing the message has been fixed.
-
Related issue: IMS 89623
-
-
TPENOENT error occurs when mksvr compiled server process times out
-
When a service built with mksvr times out due to exceeding svctime and is restarted (TPEXIT), a TPENOENT error occurs intermittently in requests waiting in the server queue at that time.
-
Modified to not delete dynamically registered services when a server built with mksvr is restarted due to an abnormal termination.
-
Added a feature to delete dynamically registered services belonging to a server with 0 server processes via tmadmin.
(both COUSIN and non-COUSIN cases of multi-node)
Command : > cleandynsvc(cleands) [-s svcname]
-
Related issue: IMS 86678
-
-
Abnormal termination when calling CLH losssvc
-
When calling the losssvc service, the message is copied to a new buffer and then called as the specified service. This causes the buffer to become corrupted as additional information is added to the copied message buffer. This issue has been fixed to allow for additional space when allocating the new buffer.
-
Related issue: IMS 101112
-
-
When configuring a multi-node cousin/backup, the secondary node’s server startup order is modified to be the same as the main node’s.
TMM.13807.175634:(I) TMM0211 General Infomation : CFGADD started [TMM0902] TMM.13807.175634:(I) TMM0211 General Infomation : CFGADD request cancelled [TMM0910]
-
Related issue: IMS 81787
-
-
Modified to recognize contents within double quotes (" ") when using ENVFILE
-
When the environment variable value in the environment variable file specified in ENVFILE contains an equal sign (=) character, the following error occurs.
-
Related issue: IMS 97888
-
-
Fixed the abnormal CLH shutdown issue
-
Modified to forcibly terminate a CLH when the channel with TMM is terminated.
When the CLH terminates the channel with the TMM due to insufficient memory, the TMM recognizes that the CLH has terminated abnormally and starts a new CLH. However, since the existing CLH is operating normally, the newly started CLH is unable to listen to the port and hangs for 10 minutes before CLH abnormally terminates.
-
If the CLH port is in use, it has been modified to automatically shut down after 10 minutes.
In the above situation, the startup process continued even if the newly started CLH failed to listen to the TCP socket, but in the future, it will be forcibly terminated when it fails.
-
Related issue: IMS 95652
-
-
Fixed the issue where transactions would hang when TMS’s TMSRECOVERY was Y.
-
In a Linux 32-bit environment, when a file larger than 2 GB is written, a SIGXFSZ signal is generated and TMM is terminated, lifting the file size limit in the same way as in 64-bit.
-
Related issue: IMS 90824
-
-
The 2GB log file size limit has been lifted in Linux 32-bit environments.
-
In a Linux 32-bit environment, when a file exceeds 2BG, a SIGXFSZ signal is generated and TMM is terminated, lifting the file size limit in the same way as in 64-bit.
-
Related issue: IMS 88836,89347
-
-
Added a workaround option to address cases where xa_open would fail for unknown reasons when the Oracle RM server was restarted multiple times.
-
If the server specifies a number with -J in the CLOPT section, or TMS specifies a number with -J in the TMSOPT section, the server will restart after the specified number of seconds have passed since the first time xa_open failed.
It is not included in the MAXRSTART count, and the following log is output.
(I) TMM0211 General Infomation : server closed due to (CLOPT:-J) : SVR, pid = 29037 [TMM0197] (I) TMM3004 SVR (svr2xa) is restarted the 0th time (MAXRSTART = 5) [TMM0166]
-
Related issue: IMS 85419
-
-
When starting JEUSGW with jesgw -h 1 -R IGN, there is an error that the TLM does not store the transactions and deletes them. So, it has been modified to continue to store the pending transactions in the JEUS type gateway in TLM.
-
Related issue: IMS 96525
-
-
Fixed the issue where only the first svri server (primary server group) would start/stop when performing tmdown/tmboot when setting two or more SVRGROUPs as COUSINs within the same NODE.
-
The tmboot -S option starts all identical servers in the COUSIN server group on the same node, each up to the MIN number.
The tmdown -S option shuts down all identical servers in the COUSIN server group on the same node.
-
The specifications related to the TMADM_BOOT and TMADM_DOWN commands of the tmadmin() API of the server library have been changed.
-
Added TMADM_USFLAG, which has the same meaning as the -S option of tmboot/tmdown.
-
When using TMADM_USFLAG instead of TMADM_SFLAG, do not specify a value for args.count of struct tmadm_boot.
-
If TMADM_USFLAG and TMADM_GFLAG are specified together, only servers in the corresponding server group will be affected.
-
-
The following are the flag combinations available in TMADM_BOOT and TMADM_DOWN of tmadmin().
Flag Description TMADM_SFLAG
Same as the -s option. Count must be specified.
TMADM_SFLAG |
TMADM_GFLAG
s Same as the -g option. Count must be specified.
TMADM_TFLAG
Same as the -t option. Count must be specified.
TMADM_USFLAG
-S Same as the option.
TMADM_USFLAG |
TMADM_GFLAG
-S Same as the -g option.
In all of the above cases |
TMADM_FFLAG
Same as the -i option. Can only be used with TMADM_DOWN.
-
Related issue: IMS 79295
-
3.2. Client/Server
-
Fixed symbol errors when using tloglib
-
Fixed a symbol error that occurred when building using tloglib.
-
Related issue: IMS 81886
-
-
Problem with functions not being hooked in SYSMASTER
-
In AIX, the -G option was applied during compilation to enable hooking.
-
Related issue: IMS 82140
-
-
TMM connection is lost when many _errwork functions are called at once in libtmaxgw.so
-
Fixed the issue where TMM connections would be lost when calling many _errwork functions in libtmaxgw.so at once.
-
Related issue: IMS 87275
-
-
Expanded support to issue SYSMASTER UCS type GIDs
-
Even when SMSUPPORT=Y was set, a GID was not issued when calling another service from a UCS type server, and a GID was not issued for requests coming from TCP_GATEWAY (CUSTOM_GW), so this was modified to support this type.
-
Related issue: IMS 89944
-
-
Error when using tpsleep inside tpprechk
-
tpprechk() is called before the shared memory information for the server is created. The problem occurred when accessing the server name in the shared memory during logging in tpsleep(). To prevent abnormal termination, the server name is changed to be expressed as $svr before the shared memory is created.
-
Related issue: IMS 90800
-
-
If an error occurs during xa_start on the MultipleRm server, the TPETRAN error continues to occur.
-
Fixed the issue where TPETRAN errors would continue to occur for all subsequent service requests when an error occurred during xa_start or xa_end on the MultipleRm server.
-
Related issue: IMS 94261
-
-
Fixed a TPETIME error that occurred when running tpgetrply with TPNOBLOCK
-
Fixed a TPETIME error occurring while calling tpgetrply with TPNOBLOCK.
-
Related issue: IMS 95168
-
-
Fixed tpgetsprlist and tpspracall2 errors
-
Fixed the issue where tpgetsprlist and tpspracall2 were not functioning properly.
-
Related issue: IMS 98708
-
-
Fixed an error that left pending transactions on the MultiRM server.
-
Fixed an error where commit was not performed and pending transactions remained when performing tx_begin ~ tx_commit on the MultipleRM server.
-
-
Fixed abnormal termination when calling tx_-related APIs before calling tpstart
-
Abnormal termination occurred when tpstart() was not called or failed to be called, or when the following functions were called after calling tpend().
tx_info, tx_set_commit_return, tx_set_transaction_control, tx_set_transaction_timeout, userlog , tpacall(TPNOREPLY), tpgetrply, tprecv, tpsend, tpdiscon
-
When calling without tpstart, a TPEPROTO, TX_PROTOCOL_ERROR occurred, which has been fixed. Depending on whether encryption is used, encryption must be set in the client configuration file.
-
Related issue: IMS 66462
-
-
Fixed the issue where the tmax and tmaxnontx gateway information query function did not work in the tmadmin API.
-
The issue where the tmax and tmaxnontx gateway information query function did not work in the tmadmin API has been fixed.
-
Related issue: IMS 97276
-
-
Fixed the issue where the TPCONNECT message was displayed when restarting the server.
-
The message was also modified to be stored in the server queue and then taken out of the queue and processed after startup.
-
Related issue: IMS 99557
-
-
Error: libtmaxgwmt* not built with Thread version
-
Fixed an error where libtmaxgwmt* was not built with thread version.
-
Related issue: IMS 92399
-
-
Fix an error that occurred when calling tpcall() with TPNOCHANGE flag
-
Fixed the issue where TPEOTYPE occurs when tpreturn data(null) is called with tpcall() TPNOCHANGE flag.
-
Fixed the issue where TPEOTYPE occurs when calling tpcall() with TPNOCHANGE flag and the server is not running.
-
Related issue: IMS 85588
-
-
Fixed the issue where client-initiated conversations would not be sent to the client when tpsend(TPEPROTO) was used from the server to the client.
-
Related issue: IMS 87289
-
-
Fixed the issue where tperrno was set to TPESYSTEM when txtimeout occurred.
-
Related issue: IMS 83380
-
-
Fixed a core issue in the tpend section of the client when using multi-threading.
-
An error that caused intermittent core crashes due to double frees caused by interference from other threads in the part where transaction information is freed in tpend has been fixed.
-
Related issue: IMS 84808
-
-
Fixed an error when using the multi-threaded client library.
-
The phenomenon of tperrno returning 0 when calling tpend(), but returning -1, has been fixed.
-
Fixed the issue where the TMAX_TRACE log setting was not applied.
-
It was modified to be output from the libclithr.so library as well.
-
The phenomenon in which a TPESYSTEM error occurs unconditionally even when the connection is normal when calling the tmax_chk_conn(0) API has been fixed.
-
This is when an error occurs due to a problem with the channel connection status between CLH and client when calling another API after the tpstart() function succeeds.
The phenomenon of tpend() and tpsetctxt(corresponding ctxtid) failing with an error after an error occurred has been fixed.
-
This is a phenomenon in which calling tpend() and tpsetctxt(the corresponding ctxtid) fails with an error after an error occurs. This has been corrected to properly handle the phenomenon in which a TPEPROTO error occurs when calling tpend().
-
The phenomenon of TPENOENT error occurring when calling tpsetctxt(relevant ctxtid) has been corrected to be reflected normally in the relevant context.
-
Fixed a memory leak issue that occurred when a TPEPROTO error occurred when calling tpend() after an error occurred. (About 1KB of leak occurred each time it occurred.) -> Leak fixed.
-
Fixed a problem where a TPECLOSE error would occur when calling the client API without calling tpend() after an error occurred.
-
-
Added a function to print the number of threads sharing the ctxtid specified in the tpgetctxt() API.
Call it by assigning a value to the ctxtid variable and setting TPFUNC in flags. A negative return value indicates an error and 0, while a positive return value indicates the number of threads currently using the context.
Example) ctxtid = check_context_id; num = tpgetctxt(ctxtid, TPFUNC);
-
The phenomenon of abnormal termination in other threads when memory is freed when calling tpend() in a situation where one context is shared by multiple threads with tpsetctxt() has been fixed.
-
Related issue: IMS 89118
-
-
Fixed client errors
-
Fixed a potential memory leak that could occur when TPEPROTO is encountered in tpend.
-
Fixed a problem where tperrno could be set incorrectly after tpend execution.
-
Fixed the issue where tperrno = 0 occurs when an error occurs in tpgetrply.
-
Fixed the issue where tpetime occurs when executing tpgetrply.
-
Related issue: IMS 94203
-
-
Fixed the issue where tpsendtocli requests to clients connected to domain sockets would fail and TPENOREADY would be set.
-
Related issue: IMS 91192
-
-
Fixed the issue where values were not populated in f_list among the tpmcallx return values.
-
Related issue: IMS 86402
-
-
Fixed the issue where only the server group of the own node was returned when calling tpgetsvglist() if COUSIN and LOAD=-1.
-
Related issue: IMS 86514
-
-
Fixed an intermittent hang that occurred when calling tp_sleep().
-
If the time entered as an argument has already timed out before the select() call or the argument is negative, an error occurs in select immediately after the function call, and a hang occurs when entering the read function. The service function has been modified to not detect TMM events when calling tp_sleep().
-
CLOPT option: add -i
When tp_sleep() and tp_usleep() are called in the usermain() function of a UCS type server, the behavior varies depending on the [-i] option.
It has been modified to not detect TMM events. If the -i option is not specified, TMM events are not detected, and if the option is specified, TMM events are detected.
In the usermain() function, tpschedule() must be used to process events such as service requests or tmdown. The tp_sleep() function waits until a CLH event occurs, but if this function is used in usermain(), the tpschedule() call may be delayed due to the wait. Therefore, before the recent patch, TMM events were also detected, but since TMM events were not internally processed after the event occurred, CPU overload could occur depending on the AP logic implementation. In the recent patch, it was changed to process TMM events directly, but this method also has some problems, so it is safer to not detect or process TMM events in tp_sleep() at all.
However, if a tmdown request, etc. comes in while waiting in tp_sleep(), the TMM event is not detected and it continues to wait. However, if the -i option is explicitly specified, the TMM event is detected so that the TMM event can be processed through tpschedule() (If tpschedule() is not called when the tp_sleep() return value is 2 or higher in the AP logic, tpschedule() must be called because TMM events will continue to occur after tp_sleep()).
-
Related issue: IMS 87508
-
-
Fixed an error that occurred when using the fbisfbuf() function.
-
Related issue: IMS 84464
-
-
Fixed a core issue that occurred when using the tpgetcliaddr function.
-
An error occurred while using the sockaddr_in6 structure even though it is an IPv4 type.
-
Related issue: IMS 83605
-
-
Fixed the issue where the LONG type would not work properly when used in the FDL function.
-
The engine has fixed the issue of abnormal termination when using the LONG type in the fbgetalloc_tu and fbgetalloc_tut functions in a 32-bit environment on a 64-bit AP.
-
Fixed the issue where fbput -2 to long on a 32bit client and fbget to LONG type on a 64bit server resulted in a positive output.
-
Cause: Since the value is stored in the LONG type variable as (unsigned int) without storing the sign, all numbers, whether negative or positive, are converted to positive.
-
Solution: The sign sign was saved together with the field buffer so that positive/negative numbers are correctly converted when fbget is performed in a 64-bit environment.
-
-
You must specify export TMAX_FDL_LONGSIGN=Y for the modified function to work.
-
Related issue: IMS 86928
-
-
Fixed an error that occurred when using tmax_chk_conn in a multi-threaded client.
-
Fixed a TPESYSTEM error that occurred when using tmax_chk_conn(0) between tpacall and tpgetreply.
-
Fixed the issue where a Msg discarded error would occur when using tmax_chk_conn(1) with a positive number between tpacall and tpgetreply.
(E) CLI 2008 tpcall reply arrived after timeout. Msg discarded : 2003 11 [CSC5708]
-
Related issue: IMS 83330
-
-
Fixed a hang that occurs when calling service in case of incorrect server that links sdl.o under lib instead of normal *_sdl.o file
-
Related issue: IMS 47096
-
-
libtmaxcfl changed to distribute only static libraries
-
There are no symbol problems when other executors link the static library of libtmaxcfl.
-
Related issue: IMS 87275
-
-
Fixed the issue where tpstart reconnection timeout did not work properly.
-
Fixed the issue where a timeout occurred before 1 second even though the reconnection timeout was set to 1 second when not connected to the main server during tpstart.
-
Related issue: IMS 99750
-
3.3. RQ
-
Fixed the issue where additional startups would occur due to mintms when starting a BACKUP on the RQ POD server.
-
When setting tmsname = "POD", when the backup server group is started due to an abnormal termination of a node, the RQS set to POD type was recognized as TMS, and the problem of trying to start a large number of servers due to incorrect mintms settings was fixed.
-
Related issue: IMS 86561
-
-
Fixed the issue when configuring RQ Server BACKUP
-
Fixed the issue where rqs -s was not being retrieved from nodes in the backup server group in tmadmin.
-
Modified to follow IPCPERM settings when creating RQ data files.
-
Related issue: IMS 79429
-
-
When RQ QSIZE is set to a value greater than 16 and not a multiple of 4, RQ terminates abnormally when multiple RQ files are created.
-
When creating a file, instead of creating a file with the QSIZE value, the file is created with the size of the actual segment size * number, so that an error does not occur when restoring an existing RQ file.
-
Related issue: IMS 86561
-
-
Modified to record in slog when full occurs when enqing RQ
-
When performing tpenq, the operator cannot be notified because qfull occurs in RQ without being recorded in slog. Therefore, we modified tpenq so that when qfull occurs, a log is also left in slog.
(W) RQS3027 RQ(rq name) full [RQS0225]
-
Related issue: IMS 85795
-
-
Fixed the issue where request queues were not saved until service transmission when using RQS tpenq_ctl deq_time.
-
The problem with RQS internally storing messages only in memory until the service is sent has been fixed to store them in the request queue immediately when a tpenq_ctl request is received.
-
The count increases immediately when querying rqstat(). Unlike before, even those that have not yet been serviced are counted.
-
Related issue: IMS 83488
-
-
Changed RQS to send enq requests to the CLH from which they came when requesting a qcall to a user-specified service.
-
When requesting a service via qcall in RQS, the request is now routed to the CLH index from which the request was received. Additionally, if the CLH channel is unavailable, the request is moved to the fail-queue.
-
Related issue: IMS 83488
-
-
Fixed the issue where messages coming to TPENQ were not sorted when rolling back from RQS.
-
Related issue: IMS 84845
-
-
Fixed a bug in RQ transaction processing
-
The phenomenon of tx_commit() not receiving a response and causing a hang when qfull occurs during tx_begin(), tpenq_ctl(), and tx_commit() calls has been fixed.
-
The phenomenon of dequeue and reply count becoming negative when tpdeq_ctl() is called during tpenq_ctl() and tx_commit() has been fixed.
-
Related issue: IMS 84962,85971
-
3.4. Domain Gateway
-
Fixed an error that caused scheduling to fail in a multi-domain environment consisting of Tmax 4 SP3 Fix9 or lower and Tmax 5 or higher.
-
In a multi-domain environment consisting of Tmax 4 SP3 Fix9 or lower and Tmax 5 or higher, if a request is made from Tmax 4 to a service bound to the gateway and COUSIN of Tmax 5, and TPENOREADY occurs because the Tmax 5 service is in NRDY state, scheduling will not continue even if the Tmax 5 service is restarted. Setting the -k option in the Tmax 5 environment file will prevent the service NRDY state from being sent to Tmax 4, which will resolve the issue of non-scheduling.
-
Related issue: IMS 89623
-
-
GATEWAY0209 internal error: no clh is available [TMGW0024] error phenomenon
-
When requesting service from CLH for a request from remote, if the appropriate CLH channel is not selected, the log is generated. When selecting the CLH channel in G/W, the correct value is selected by determining whether the xid part is a negative value.
-
Related issue: IMS 83169, 81275
-
-
TPERDOWN error occurs when tmgwnt domainIRT request fails and TMAX_BACKUP_ADDR connection attempt occurs
-
In an environment where domain A and domain B are composed of the same server group/server/service, and the server group and tmgwnt are set to COUSIN and LOAD is set to -2 and -3 (cousin backup), if all servers in the server groups of both domains are in NRDY state, when requesting a service, tmgwnt is called 11 times for one request, and then a TPERDOWN error occurs and a connection attempt is made to TMAX_BACKUP_ADDR.
-
The phenomenon of attempting to connect to TMAX_BACKUP_ADDR while receiving a TPERDOWN error has been fixed.
-
Fixed the issue where st -s was called 11 times for 1 request.
-
The phenomenon of receiving the TPERDOWN error as above when receiving an error response when the gateway of the local domain does not belong to the cousin group and calls a service that belongs to the cousin group of the remote domain and all server groups of the remote domain are in the NRDY state has been fixed.
-
Related issue: IMS 88775
-
-
Fixed the issue where scheduling failed when a service in the other domain was restarted in tmaxgwnt.
-
When configured as a domain between Tmax 4.x and Tmax 5.x, a memory leak occurred when the server and gateway configured as COUSIN in Tmax 5.x sent a restart message to Tmax v4.x when NOTREADY/channel was not connected.
-
Added a feature to prevent the status information of the Tmax 5.x domain service from being sent to Tmax 4.x using the -k option of CLOPT.
If set on a gateway composed of Tmax 5.x, abnormal operation will occur.
-
Related issue: IMS 89623
-
3.5. Tuxedo Gateway
-
Fixed a core error in tuxgw that occurs when using MTYPE in Tuxedo domain configuration
-
MTYPE is a function that bypasses encoding/decoding when the local/remote domains in TUXEDO have the same Machine Type.
-
Related issue: IMS 81392
-
-
Fixed an error that caused the connection to tuxgw to be forcibly terminated when requesting an FML buffer type service outbound from the Tuxedo domain gateway (GWTDOMAIN).
-
When sending a message from Tmax tuxgw to GWTDOMAIN on a little-endian system like Linux, the code that sets the size-related field of the FML buffer to htonl was missing, so the wrong size was transmitted. It worked normally in the None patch level version of Tuxedo, but as the patch level increased and the check was strengthened, the Tuxedo domain gateway judged the header to be incorrect and forcibly terminated the connection with tuxgw.
-
Related issue: IMS 88345
-
3.6. Java Gateway
-
Fixed an error where JEUS GW’s CLOPT’s CDATE setting did not work as intended.
-
Related issue: IMS 91698
-
3.7. TCP gateway
-
Fixed an error where the next day’s logs would be written to the previous log file if the first service was inbound after changing the log date with the tcpgw -e, -o options.
-
Related issue: IMS 72427
-
-
Fixed an error that prevented backup calls from being made due to a parsing error in the CLOPT section of the configuration settings when setting up backups in TCP client mode.
-
Related issue: IMS 81637
-
-
Fixed an error that caused bidirectional calls to not work when setting the -P and -r options simultaneously in tcpgw.
-
Example settings
ex) tcpgw SVGNAME = svg1, MIN = 1, MAX = 1,CPC = 2, SVRTYPE = CUSTOM_GATEWAY, CLOPT = "-o $(SVR).out -e $(SVR).out -- -P 36254 -N 2 -r 192.168.1.86:31065(O) -n 2 -d 0"
-
Related issue: IMS 81637
-
-
Fixed an error where the latter part of the received data was discarded when the size of the returned data from check_end_msg() was smaller than the received data.
-
Related issue: IMS 99925
-
3.8. TDL
-
Fixed an error where only one function name was called even though the links were different when the same function name existed in two different libraries.
-
The phenomenon that occurs when dlopen’s mode flag is set to RTLD_GLOBAL has been fixed.
-
Related issue: IMS 82393
-
-
Fixed an error that said the tdlupdate library could not be found in a TDL multi-node environment.
-
The phenomenon that occurred due to an error in the logic that checks the library compatibility in the mod path in advance when performing tdlupdate has been fixed.
-
Related issue: IMS 82677
-
-
Fixed core error when using tdlshm -u s -m for monitoring
-
The phenomenon that occurred when incorrectly passing the name value address in the module index search section was corrected.
-
Related issue: IMS 83539
-
-
Fixed an error that occurred when calling tdlcall with time(NULL) set in urcode and TDL_TRAN set in flags: TDL_ENOLIB
-
Related issue: IMS 79973
-
3.9. RPC
-
Fixed an error occuring when compiling RPC
-
When compiling RPC, the error "Too many arguments specified for macro dce_dbgwrite" occurred, so tmaxrpc.h was modified.
-
Related issue: IMS 82010
-
3.10. Utility
-
twagent core log
-
Fixed the issue where Core would crash when clicking on a large file under the Log Management menu in the webadmin screen.
-
Related issue: IMS 80424
-
-
The STD_DYN server not terminating when executing tmdown -g.
-
Fixed the issue where the STD_DYN server would not terminate when tmdown -g was used.
-
Related issue: IMS 80748
-
-
Error when running tmadmin -n on remote node (Linux machine)
-
Fixed a problem where a socket connect error occurred when issuing the tmadmin -n command from Unix to a Linux machine in a multi-node environment where Unix and Linux are mixed.
-
Related issue: IMS 82830, 77024, 96522
-
-
BOOT3007 error when calling system(tmboot) in a server program
-
When calling system(tmboot) in the server program, it was modified to refer to the $TMAXDIR/path/tmconfig path instead of the $TMAXDIR/config/tmconfig file.
-
Related issue: IMS 83216
-
-
Error preventing DYN_SVR_TYPE servers from shutting down when requesting tmdown -A
-
Fixed the issue where DYN_SVR_TYPE servers would not shut down when requesting tmboot -A, tmdown -A.
-
Related issue: IMS 84576
-
-
When tmapm is used, all Tmax engine and server processes are forcibly terminated.
-
Fixed the issue where all Tmax engine and server processes were forcibly terminated due to tmapm calling the kill script with pid set to 0.
-
Related issue: IMS 89277
-
-
IDLC binding/substitution
-
It can be used selectively through environment variables (TMAX_RPC_BIND, TMAX_RPC_BIND2).
-
If the original text is '$ww_shipno'
TMAX_RPC_BIND is set : :ww_shipno TMAX_RPC_BIND is not set : '$ww_shipno'
-
If the original text is $ww_shipno[char]
TMAX_RPC_BIND2 is set : :ww_shipno TMAX_RPC_BIND2 is not set : $ww_shipno
-
-
Related issue: IMS 89687
-
-
Error that occurred when performing cfl on an uncfl file
-
Modified the default value of hmsmsglive and hmsmaxbulksize and the range of hmsmaxbulkthr.
-
Related issue: IMS 91233
-
-
Error message when cfl after setting IPCPERM value out of range
-
The MIN and MAX values were incorrectly displayed and corrected to be displayed as 0600 ~ 0700.
-
Related issue: IMS 97401
-
-
The response buffer is not printed when calling the tmd STRUCT type.
-
Fixed the issue where the response buffer was not printed when calling the tmd STRUCT type.
-
Related issue: IMS 97768
-
-
tmapm checks the TMAXNONTX type gateway in RUN status.
-
tmapm has been modified to check only TCS and UCS type servers.
-
Related issue: IMS 96726
-
-
Specific explanation of the cause of tmadmin connection error
-
When a connection error occurs in any tmm connection program, including tmadmin, tmboot, tmdown, libsvr, and libtms, there is no explanation of the cause of the error.
-
When a connection fails, the specific cause can be output to the user console as follows.
(E) ADM2045 failed to register to TMM : ADM_MAIN_STARTED [COM0615] (F) ADM3010 failed to register to TMM [ADM0015]
-
Related issue: IMS 100280
-
-
When executing tmaxlibver, if there is an undefined symbol in the library, version verification is not possible.
-
tmaxlibver has improved the function of dynamically checking for undefined symbols in the library using nm, ldd, etc. and automatically adding the symbols to the stub file so that the build does not fail, instead of the existing method of hard-coding undefined symbols internally each time.
-
Added -c compiler, -u libc, and -V options.
-
Related issue: IMS 99925, 101587
-
-
Fixed an error that occurred when performing cfadd after tmdown on a server built with mksvr.
-
Fixed an error that occurred when tmdowning a server built with mksvr, causing service information to be deleted.
-
Related issue: IMS 85742
-
-
Fixed the issue where SIGSEGV occurred in the slave’s racd when tdlinit was performed in a TDL multi-node environment.
-
Fixed an error that occurred when using an incorrect address value when outputting to the debug log due to the effect of TMAX_LOGLVL=DEBUG4.
-
Related issue: IMS 95816
-
-
Fixed the issue where (F) CFL0091 shared memory get error occurs when performing cfl while Tmax is running with IPCPERM set to 06XX.
-
When performing cfl, the error that occurred due to checking with 0700 permission was fixed.
-
Related issue: IMS 91204
-
-
Fixed the issue where the contents output to stderr were not transmitted when tmbooting a remote node using racd.
-
Related issue: IMS 86809
-
3.11. Management Tools
-
Fixed the issue where the server st -s of type STD_DYN was displayed as NRDY in a multi-CLH environment.
-
The phenomenon of NRDY appearing when querying a server st -s of type STD_DYN in a multi-CLH environment has been corrected.
-
Related issue: IMS 85351
-
-
Fixed missing entries in the tmadmin cfg command
-
DOMAIN section maxsacall, maxcacall, maxconvn, maxconvs, domain_id, fdlversion, gwchkint, gwconnect_timeout
-
NODE section curclh, sprcount, tmscount, cpccount, loginsvc, cllbindip
-
SVRGROUP section curtms, tmsloglvl, loglvl
-
SERVER section target, ctx_ereply
-
Related issue: IMS 79983, 81187
-
-
Fixed a bug that occurred when adding a server group with cfgadd in an environment with a TmaxCFGADD gateway.
-
The failure symptom with the following error when adding a server group while a gateway exists in the environment settings and the environment settings are added using cfl -i -a -o has been fixed.
invalid cfgfile at SYSTEM SVRGROUP, old(TMAXGW) add(IV_GRP02) [ADM0431]
-
Related issue: IMS 101028
-
3.12. HostLink
-
Fixed the issue where user headers were overwritten when responding to an error due to a timeout.
-
Related issue: IMS 34043, 98180
-
-
Fixed duplicate logging error caused by LU62R POSTSVC
-
Related issue: IMS 34331, 98180
-
-
Fixed the issue where previously received data would be lost when AP_DATA_INCOMPLETE occurred while receiving data from lu62rgw.
-
Related issue: IMS 100643
-
-
When setting up DTP in lu62rgw, an abnormal termination occurs when receiving for the second time.
-
When receiving the second data, the internally managed variable was not initialized, so it referenced the wrong array index, which caused an abnormal phenomenon in which an incorrect memory address was accessed. This has been corrected.
-
Related issue: IMS 100643
-
-
Abnormal termination when referencing an incorrectly sized buffer when under load in lu62rgw
-
If primary_rc is set, the corresponding value rather than the Tmax error code is returned, but since the response must always be sent to the Tmax service, it was modified so that the value is not set in primary_rc.
-
Related issue: IMS 79965
-
-
The phenomenon of setting the error code to an incorrect value during a lu62sgw error.
-
Modified to properly manage the status information of each thread in lu62rgw.
-
Related issue: IMS 100643
-
-
Differences in FQPLUNAME behavior due to the introduction of lu62r sysplex
-
In a single mainframe setup, there was only one FQPLUNAME, but with the introduction of sysplex, redundancy in mainframe configuration became possible, and in an environment where there was more than one FQPLUNAME, after a mainframe was shut down and started up, an error occurred where the hostlink could not properly process the mainframe’s request.
-
In hkcfl, for lu62rgw only, the functionality has been extended to allow setting the FQPLUNAME entry as follows:
-
Modified hkcfl to work without setting the FQPLUNAME entry (previously, it was a required option).
-
The FQPLUNAME entry now allows you to specify one or more plunames separated by commas (,). (Up to 32 can be specified, and no spaces are allowed other than the delimiters.)
-
-
In the liblu62rgw library, when multiple FQPLUNAMEs are specified with a comma as a delimiter, an attach notify is received from the communication server for each FQPLUNAME.
-
In the libtmaxgwmt library, the phenomenon of an undefined error occurring in the _init_header function symbol in the case of a shared library has been fixed.
-
Related issue: IMS 101080
-
-
Fixed a SegFault issue when using the hkcfl comment character in a name.
-
The part where the name could not be set properly because the part after the hash symbol (#) was ignored when the comment character, the hash symbol (#), was included in a name enclosed in double quotation marks (" ") has been fixed.
-
Related issue: IMS 85617
-