ON AS/400 CLIENTS GET TPEPERM AGAINST TUXEDO APPLICATION WITH SECURITY OFF IN UBB (Doc ID 1625366.1)

Last updated on NOVEMBER 04, 2016

Applies to:

Oracle Tuxedo - Version 11.1.1.2.0 and later
IBM i on POWER Systems

Symptoms

Tuxedo application runs on IBM iSeries v7r1.
NO security is configured on ubbconfig.
When launching 500 native clients from a CL program within a DOFOR loop, the 199th clients fails to connect getting TPEPERM.


 Launching from a CL program 500 times the same C program which is a Tuxedo native client :

              DOFOR      VAR(&X) FROM(1) TO(500)
              CHGVAR     VAR(&XX) VALUE(&X)
              CHGVAR     VAR(&XX) VALUE(&XX *TCAT &NULL)
              CALL       PGM(CLILOOP2) PARM(&XX)
              ENDDO

  


 The C tuxedo native client just executes tpinit()/tpterm() :

   userlog("before tpinit, %s", argv[1]);
   if (tpinit((TPINIT *) NULL) == -1) {
           printf("Tpinit failed %s\n", argv[1]);
           userlog("tpinit failed, %s", argv[1]);
           exit(1);
   }
   userlog("tpinit is OK, %s", argv[1]);
   printf("OK %s\n", argv[1]);
   tpterm();
   userlog("tpterm executed, %s", argv[1]);
   return(0);

  


 The 199th client launched from the DOFOR loop of CL program fails to connect. TPEPERM is returned.



 ULOG reports :

 135754.ASTSTMAC.bz400!?proc.275287.0X00000005C.-2: 11-06-2013: Tuxedo Version 11.1.1.2.0, 32-bit
 135754.ASTSTMAC.bz400!?proc.275287.0X00000005C.-2: before tpinit, 0198
 135754.ASTSTMAC.bz400!?proc.275287.0X00000005C.0: TRACE:at:  { tpinit(0)
 135754.ASTSTMAC.bz400!?proc.275287.0X00000005C.0: TRACE:ia:    { tpchkauth()
 135754.ASTSTMAC.bz400!?proc.275287.0X00000005C.0: TRACE:ia:    } tpchkauth = 0
 135754.ASTSTMAC.bz400!?proc.275287.0X00000005C.0: TRACE:at:  } tpterm = 1
 135754.ASTSTMAC.bz400!?proc.275287.0X00000005C.-2: tpterm executed, 0198
 135754.ASTSTMAC.bz400!?proc.275287.0X00000005C.-2: TRACE:ia:  { tpgetctxt(0x80000000, 0x0)
 135754.ASTSTMAC.bz400!?proc.275287.0X00000005C.-2: TRACE:ia:  } tpgetctxt = 0
 135754.ASTSTMAC.bz400!?proc.275287.0X00000005C.-2: TRACE:at:  { tpterm()
 135754.ASTSTMAC.bz400!?proc.275287.0X00000005C.-2: TRACE:at:  } tpterm = 1
 135755.ASTSTMAC.bz400.pl!ICB_SERV.272414.0X000000071.0: dla (118509332)
 135755.ASTSTMAC.bz400!?proc.275287.0X00000005C.-2: 11-06-2013: Tuxedo Version 11.1.1.2.0, 32-bit
 135755.ASTSTMAC.bz400!?proc.275287.0X00000005C.-2: before tpinit, 0199
 135755.ASTSTMAC.bz400!?proc.275287.0X00000005C.0: TRACE:at:  { tpinit(0)
 135755.ASTSTMAC.bz400!?proc.275287.0X00000005C.0: TRACE:at:  } tpinit = -1 [tperrno TPEPERM]
 135755.ASTSTMAC.bz400!?proc.275287.0X00000005C.-2: TRACE:ia:  { tpsetctxt(-2, 0x0)
 135755.ASTSTMAC.bz400!?proc.275287.0X00000005C.-2: TRACE:ia:  } tpsetctxt = 0 [tperrno TPEPERM]
 135755.ASTSTMAC.bz400!?proc.275287.0X00000005C.-2: tpinit failed, 0199

  
 

Changes

 

 If the loop is not within the CL program but within the C program :

      for (i=0;i<5000;i++) {
              if (tpinit((TPINIT *) NULL) == -1) {
                      printf("Tpinit failed %s\n", argv[1]);
                      exit(1);
              }
              printf("OK %s\n", argv[1]);
              tpterm();
      }

  
  Launching only C client executing a loop of 500 tpinit()/tpeterm() there is no problem or not to connect.
 There is NO problem.

 

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms