Web Client Exception in P4210 after upgrading Tools Release

Purpose of Document

The purpose of this document is to guide possible issue in Sales Order Entry (P4210) application through Case Study. However this document is not to encompass commonly reported issue in this application.

 

Table of Contents:

 

Case Study 1 - All users are not able to add/update Sales Order after upgrading tools release

Symptom

After upgrading tools release from 8.98.3.2 to 9.1.3.1, all users are not able to enter Sales Order.
Web Client Exception error message appears on HTML client but it does not show Transaction Failure or Asynchronous business function error message in it.

For example,

WEB CLIENT EXCEPTION
An exception has been caught by the Web client. Please contact your system administrator. See log for details. Exception id
= Exception 2013-09-22 16:41:41.022_USERID  There was a problem with the server while running the business function F4211FSEndDoc.
The sever may still be available, but because of state information, the entire unit of work must be resubmitted.
Please exit the application and restart it.
Post Button clicked Line number 87
P4210_W4210A

Note: Message represented in HTML/Web Client has to be repeated in e1root_mmddyy.log (mmddyy is the date when JAS Service started) so get/review e1root_*.log

 

22 Sep 2013 16:38:11,018 [WARN  ]  - [RUNTIME]         *ERROR* CallObject@179b0cd7: COSE#1000 Request timeout: timeout after 90000ms host EnterprisServerMachineID:6015(51643) SocID:58369 PID:4576 BSFN:F4211FSEndDoc user:USERID Env:JPD900
22 Sep 2013 16:38:11,019 [WARN  ]  - [RUNTIME]         *ERROR* CallObject@179b0cd7: Server problem. The server may still be available, but because of state information, the entire unit-of-work must be resubmitted user:USERID Env:JPD900
22 Sep 2013 16:38:29,440 [WARN  ]  - [RUNTIME]         HTMLClientHandler:doService: Abnormal error: Silent post request can not be processed due to busy status

22 Sep 2013 16:38:39,001 [SEVERE]  - [RUNTIME]         FormEngine.doEvent(): BSFN failed and need roll back!! | Form Name : P4210_W4210A com.jdedwards.runtime.base.SystemException: There was a problem with the server while running the business function F4211FSEndDoc.\nThe server may still be available, but because of state information, the entire unit of work must be resubmitted.\nPlease exit the application and restart it.\nPost Button Clicked Line number 87\nP4210_W4210A

Note: Refer to

 

This log does not contain any error message and F4211FSEndDoc returns 0 but after F4211FSEndDoc is returned it calls "Entering JDB_RollbackUser (UserHandle 05284580)" and this user handle (pointer) is same with user handle initialized in calling F4211FSEndDoc.

Sep 22 16:36:42.440295 - 4576/3268 WRK:Init Remote User                  Entering JDB_InitUser with (MANUAL commit mode)
Sep 22 16:36:42.440296 - 4576/3268 WRK:Init Remote User                  Entering JDB_BeginTransaction (UserHandle 05284580)
Sep 22 16:36:42.440297 - 4576/3268 WRK:Init Remote User                  Starting Commit Point No : 1 for Transaction ID : 419434668_4576_3268_422634946
Sep 22 16:36:42.440298 - 4576/3268 WRK:Init Remote User                  Exiting JDB_BeginTransaction with Success (UserHandle 05284580)
Sep 22 16:36:42.440330 - 4576/3268 WRK:Starting jdeCallObject            Calling Business function F4211FSEndDoc from Level 1 for USERID. Application Name [P4210], Version [ZJDE0001] (BSFNLevel = 1)
...
Sep 22 16:39:25.398959 - 4576/3268 WRK:Starting jdeCallObject            Return value is 0 for F4211FSEndDoc. (BSFNLevel = 1)
Sep 22 16:39:25.398969 - 4576/3268 WRK:Call Object                       Error count: Sent back - Server new #Error[0], #Warning[0]: Both Server&Client #Error[0] #Warning[0]
Sep 22 16:39:25.398997 - 4576/3268 WRK:Rollback Remote User              Entering JDB_RollbackUser (UserHandle 05284580)
Sep 22 16:39:25.398998 - 4576/3268 WRK:Rollback Remote User              Rolling back commit point 1 of the transaction : 419434668_4576_3268_422634946
Sep 22 16:39:25.398999 - 4576/3268 WRK:Rollback Remote User              ORACLE DBRollbackCon envr=05459718 conn=07BAC5F0

Note:

 

JDE.INI

[NETWORK QUEUE SETTINGS]
JDENETTimeout=60

JAS.INI

[JDENET]
enterpriseServerTimeout=90000

Note:

  

 

Change

Tools release upgrade from 8.98.4.5 to 9.1.4.2

Note: This case study shows that the only change made in system is upgrade of tools release and full package deployment for followup action, but actual cause is not related with this change made. Refer cause section

 

Cause

Probable cause is Index file for the table F42199 (Sales Order Detail Ledger) file is corrupted. Because it takes 2 minute 40 seconds in inserting a single record into F42199 as below,

Sep 22 16:36:43.438026 - 4576/3268 WRK:Starting jdeCallObject            Entering JDB_InsertTable (Table F42199) (hRequest 07BCEFE8)
Sep 22 16:36:43.438165 - 4576/3268 WRK:Starting jdeCallObject INSERT INTO PRODDTA.F42199 (SLKCOO, SLDOCO, SLDCTO, SLLNID, SLSFXO, SLMCU, SLCO, SLOKCO, SLOORN, SLOCTO, SLOGNO, SLRKCO, SLRORN, SLRCTO, SLRLLN, SLDMCT, SLDMCS, SLAN8, SLSHAN, SLPA8, SLDRQJ, SLTRDJ, SLPDDJ, SLADDJ, SLIVD, SLCNDJ, SLDGL, SLRSDJ, SLPEFJ, SLPPDJ, SLVR01, SLVR02, SLITM, SLLITM, SLAITM, SLLOCN, SLLOTN, SLFRGD, SLTHGD, SLFRMP, SLTHRP, SLEXDP, SLDSC1, SLDSC2, SLLNTY, SLNXTR, SLLTTR, SLEMCU, SLRLIT, SLKTLN, SLCPNT, SLRKIT, SLKTP, SLSRP1, SLSRP2, SLSRP3, SLSRP4, SLSRP5, SLPRP1, SLPRP2, SLPRP3, SLPRP4, SLPRP5, SLUOM, SLUORG, SLSOQS, SLSOBK, SLSOCN, SLSONE, SLUOPN, SLQTYT, SLQRLV, SLCOMM, SLOTQY, SLUPRC, SLAEXP, SLAOPN, SLPROV, SLTPC, SLAPUM, SLLPRC, SLUNCS, SLECST, SLCSTO, SLTCST, SLINMG, SLPTC, SLRYIN, SLDTBS, SLTRDC, SLFUN2, SLASN, SLPRGR, SLCLVL, SLCADC, SLKCO, SLDOC, SLDCT, SLODOC, SLODCT, SLOKC, SLPSN, SLDELN, SLTAX1, SLTXA1, SLEXR1, SLATXT, SLPRIO, SLRESL, SLBACK, SLSBAL, SLAPTS, SLLOB, SLEUSE, SLDTYS, SLNTR, SLVEND, SLCARS, SLMOT, SLROUT, SLSTOP, SLZON, SLCNID, SLFRTH, SLSHCM, SLSHCN, SLSERN, SLUOM1, SLPQOR, SLUOM2, SLSQOR, SLUOM4, SLITWT, SLWTUM, SLITVL, SLVLUM, SLRPRC, SLORPR, SLORP, SLCMGP, SLGLC, SLCTRY, SLFY, SLSO01, SLSO02, SLSO03, SLSO04, SLSO05, SLSO06, SLSO07, SLSO08, SLSO09, SLSO10, SLSO11, SLSO12, SLSO13, SLSO14, SLSO15, SLACOM, SLCMCG, SLRCD, SLGRWT, SLGWUM, SLSBL, SLSBLT, SLLCOD, SLUPC1, SLUPC2, SLUPC3, SLSWMS, SLUNCD, SLCRMD, SLCRCD, SLCRR, SLFPRC, SLFUP, SLFEA, SLFUC, SLFEC, SLURCD, SLURDT, SLURAT, SLURAB, SLURRF, SLTORG, SLUSER, SLPID, SLJOBN, SLUPMJ, SLTDAY, SLSO16, SLSO17, SLSO18, SLSO19, SLSO20, SLIR01, SLIR02, SLIR03, SLIR04, SLIR05, SLSOOR, SLVR03, SLDEID, SLPSIG, SLRLNU, SLPMDT, SLRLTM, SLRLDJ, SLDRQT, SLADTM, SLOPTT, SLPDTT, SLPSTM, SLXDCK, SLXPTY, SLDUAL, SLBSC, SLCBSC, SLCORD, SLDVAN, SLPEND, SLRFRV, SLMCLN, SLSHPN, SLRSDT, SLPRJM, SLOSEQ, SLMERL, SLHOLD, SLHDBU, SLDMBU, SLBCRC, SLODLN, SLOPDJ, SLXKCO, SLXORN, SLXCTO, SLXLLN, SLXSFX, SLPOE, SLPMTO, SLANBY, SLPMTN, SLNUMB, SLAAID, SLPRAN8, SLSPATTN, SLPRCIDLN, SLCCIDLN, SLSHCCIDLN, SLOPPID, SLOSTP, SLUKID, SLCATNM, SLALLOC, SLFULPID, SLALLSTS, SLOSCORE, SLOSCOREO, SLCMCO, SLKITID, SLKITAMTDOM, SLKITAMTFOR, SLKITDIRTY, SLOCITT, SLOCCARDNO) VALUES ('00002',2.000000,'SO',2000.000000,'000',' H01','00002',' ',' ',' ',0.000000,' ',' ',' ',0.000000,' ',0.000000,10847.000000,10847.000000,10847.000000,108105,108105,108105,0,0,0,0,108105,108105,108105,' ',' ',64.000000,'002101001Y1 ','002101001Y1 ',' ',' ',' ',' ',0.000000,0.000000,0.000000,'xxxxx=1.0MM ','1250*2500/1250*3050 ','S ','540','520',' H01',' ',0.000000,0.000000,0.000000,0.000000,' ',' ',' ',' ',' ','A49',' ',' ',' ',' ','SD',100.000000,100.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,'S',' ',100000.000000,1000.000000,0.000000,'1',' ',' ',0.000000,0.000000,0.000000,'0',0.000000,' ',' ',' ',' ',0.000000,0.000000,' ','P ',' ',0.000000,' ',0.000000,' ',0.000000,' ',' ',0.000000,0.000000,'Y','VAT17 ','V ',' ','0',' ','Y','Y','Y',' ',' ',' ',' ',9855.000000,0.000000,' ',' ',' ',' ',' ',' ',' ',' ',' ','SD',100.000000,'SD',100.000000,'SD',0.000000,'LB',0.000000,'GA',' ',' ',' ','07','IN10',20.000000,8.000000,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',0.000000,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','CNY',0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,' ',0,0.000000,0.000000,' ','USERID','USERID','EP4210','JDE',113265,163633.000000,' ',' ','0',' ',' ',' ',' ',' ',' ',' ',0,' ',0.000000,' ',' ',0.000000,0.000000,0,0.000000,0.000000,0.000000,0.000000,0.000000,'0',0.000000,' ',' ',' ',0.000000,10847.000000,' ',' ',0.000000,0.000000,0.000000,0.000000,0.000000,' ',' ',' ',' ',' ',0.000000,108105,' ',0.000000,' ',0.000000,' ',' ',' ',11119.000000,' ',0.000000,0.000000,0.000000,' ',0.000000,0.000000,0.000000,0.000000,' ',0.000000,' ',' ',0,' ',0.000000,' ',' ',2000.000000,0.000000,0.000000,' ',' ',0.000000)
Sep 22 16:39:23.932000 - 4576/3268 WRK:Starting jdeCallObject ORACLE usage 16:36:43 (32 FTCH 16 rows 12 LOBs) (0 UPD) (1 INS 1 rows) (0 DEL) (0 MISC)
Sep 22 16:39:23.932001 - 4576/3268 WRK:Starting jdeCallObject ORACLE speed 16:36:43 ( 223 usec per call, 67 FTCH+LOB calls)
Sep 22 16:39:23.932002 - 4576/3268 WRK:Starting jdeCallObject Exiting JDB_InsertTable with Success (Table F42199)

 

Note: Overall time take is computed from Entering JDB_InsertTable (Table F42199) (hRequest 07BCEFE8) through Exiting JDB_InsertTable with Success (Table F42199)

 

Try

Possibly,

Note:

 

 

Solution

Since we determined issue is coming from database level. Interestingly INSERT takes long time to commit. So probable cause can be corrupted index for data files. Then only option we have is drop table and create it again with index information. 

  1. Capture jdedebug.log
  2. Check any DML statement which takes longer time
  3. In case time is taking long time against INSERT most probable cause is corrupted index file
  4. Try to generate index
  5. If 4 does not fix issue, then generate table through OMW

 

Considerations

Before take any Table Operation through OMW, make it sure you have backed up as-is data using query tool.

Currently, a few option is available for this type of issue and general routine can be:-

A. Generate Table

1. DropTable
   Entering JDB_DropTable( Table = F42199 )
   Entering JDB_DropTableOvrWithSpecs( Table = F42199 )
   sql> DROP TABLE PRODDTA.42199

2. CreateTable
   Entering JDB_TableExists (Table F42199 )
   Exiting JDB_TableExists with Failure(Table F42199)
   Entering JDB_CreateTable for (Table F42199)
   Entering JDB_CreateTableX (Table F42199)
   sql> CREATE TABLE PRODDTA.F42199 (...with data size and type...)
   sql> GRANT ALL ON PRODDTA.F42199 TO PUBLIC
   Entering JDB_CreateIndex (Table = F42199)
   Entering JDB_AddPrimaryKeyX (Table F42199)
   sql> ALTER TABLE PRODDTA.F42199 ALTER COLUMN SLKCOO nchar(5) NOT NULL
   sql> ALTER TABLE PRODDTA.F42199 ALTER COLUMN SLDOCO float NOT NULL
        ... (repeat for all columns in Primary Key)
   sql> ALTER TABLE PRODDTA.F42199 ADD CONSTRAINT F42199_PK PRIMARY KEY (SLKCOO, SLDOCO, ...) for primary key
   sql> ALTER TABLE PRODDTA.F42199 ADD CONSTRAINT F42199_2 PRIMARY KEY (SLKCOO, SLDOCO, ...) for secondary key


B. Copy Table

1. CopyTable
   Entering JDB_TableExists (Table F42199)
   sql> SELECT  COUNT(*)  FROM CRPDTA.F42199
   Entering JDB_DropIndex (Table = F42199)
   sql> DROP INDEX CRPDTA.F42199.F42199_1
   sql> DROP INDEX CRPDTA.F42199.F42199_2
   sql> ALTER TABLE CRPDTA.F42199 DROP CONSTRAINT F42199_PK
   Entering JDB_DropTable( Table = F41001 )
   sql> DROP TABLE CRPDTA.F42199
   Entering JDB_GetTableProperties
   sql> CREATE TABLE PRODDTA.F42199 (...with data size and type...)
   sql> GRANT ALL ON PRODDTA.F42199 TO PUBLIC
   sql> SELECT  *  FROM PRODDTA.F42199
   Entering JDB_InsertTable (Table F42199)
   sql> INSERT INTO CRPDTA.F42199 VALUES (...)
        ... (repeat this for all data from PRODDTA.F42199 (source) to CRPDTA.F42199 (target)
   Entering JDB_CreateIndex (Table = F42199)
   Entering JDB_AddPrimaryKeyX (Table F42199)
   sql> ALTER TABLE PRODDTA.F42199 ALTER COLUMN SLKCOO nchar(5) NOT NULL
   sql> ALTER TABLE PRODDTA.F42199 ALTER COLUMN SLDOCO float NOT NULL
        ... (repeat for all columns in Primary Key)
   sql> ALTER TABLE PRODDTA.F42199 ADD CONSTRAINT F42199_PK PRIMARY KEY (SLKCOO, SLDOCO, ...) for primary key
   sql> ALTER TABLE PRODDTA.F42199 ADD CONSTRAINT F42199_2 PRIMARY KEY (SLKCOO, SLDOCO, ...) for secondary key



C. Create Index: Drop Index and Create Index

 

Below case study is to be added in the future.

Case Study 2 - Intermittently P42101 issues "Transaction Failure Message"

Symptom:
Intermittently users are getting Transaction Failure error in running P42101 with error in e1root_*.log as below,

26 9 2013 12:59:16,834 [WARN  ] USERID - [RUNTIME]         *ERROR* CallObject@5eab5eab: CallObject.executeRequest(): Problem executing function [SalesOrderApplCtrlEX] lib [CSALES] TM_TRAN_CANCELLED was received from CallObject user:USERID Env:JPD910
26 9 2013 12:59:17,519 [SEVERE] USERID - [RUNTIME]         AsynFormState.executeAsync(): async BSFN failed and need roll back!! .There was a problem with the sever while running the business function SalesOrderApplCtrlEX.\nThe server may still be available, but because of state information, the entire unit of work must be resubmitted.\nPlease exit the application and restart it.
Post Button Click - Asynch Line number 0 | Form Name : P42101_W42101D


Change
Through customer query they have implemented purging of Sales Order Files including related tables.

Cause
Orphaned records from F49211 (Sales Order Detail File - Tag File) and F49219 (Sales Order Detail - Tag History). Commonly owing to table naming convention, you may miss out to handle this table from your custom routine. Make it sure all data from F4211 vs F49211 are a pair and F42119 vs F49219 are a pair.

If possible, try to simulate issue by adding same order number. For this case study, jdedebug.log (namely, Call Object Kernel log) reads as below,

INSERT INTO PRODDTA.F49211 VALUES (13000033.000000,'SO','00016',1000.000000,' ',0.000000,0,'   ','P',0.000000,' ',' ',0.000000,0.000000,0.000000,0.000000,0.000000,0,' ',0,0.000000,0,0.000000,' ',0.000000,' ',0.000000,' ',0.000000,' ',0.000000,'A',' ',0.000000,0.000000,' ',0.000000,' ',0.000000,' ',' ',' ',0.000000,0.000000,' ',' ',' ',' ',' ',' ',' ',0.000000,0.000000,364753.000000,' ',0.000000,' ',' ',-1.000000,' ','PPN       ','V',' ',' ',' ',' ',' ',' ',' ',0.000000,0.000000,' ',0.000000,0.000000,' ',0.000000,0.000000,0,0.000000,0,0.000000,0,0.000000,0,0.000000,' ',' ',' ',' ',' ',' ',0.000000,0,' ','USERID','EP42101','jasmachineID',113270,175832.000000,' ',' ',' ',' ',0,0,0,' ',' ',' ',' ',' ',' ','Y',' ',' ',' ',' ',0.000000,' ',' ',0.000000,' ',' ',' ',0.000000,' ',' ',' ',0.000000,' ',' ',0.000000,'Y','Y','Y','Y',' ',' ',' ','N',' ',' ',' ',' ',' ')
Entering DBPerformRequest
ODBC:W DBPerformRequest req=33b340b8 con=34954da8 env=00000001 dbc=00000004 spid=0 jddv-db1 M (JDE@JDE_PY16)
ODBC[jdbodbc.c,4023] wSQLExecute failure. rc = -1
ODBC[jdbodbc.c,4023] STMT:00 [23505][-803] [IBM][CLI Driver][DB2/AIX64] SQL0803N  One or more values in the INSERT statement, UPDATE statement, or foreign key update caused by a DELETE statement are not valid because the primary key, unique constraint or unique index identified by "1" constrains t
ODB0000163 - wSQLExecute failure. rc=-1
ODB0000164 - STMT:00 [23505][-803][2] [IBM][CLI Driver][DB2/AIX64] SQL0803N  One or more values in the INSERT statement, UPDATE statement, or foreign key update caused by a DELETE statement are not valid because the primary key, unique constraint or unique index identified by "1" constrains t
Exiting DBPerformRequest
JDB9900401 - Failed to execute db request
JDB3400009 - Failed to perform Insert for F49211
JDB9901232 - Canceling transaction because: TC052 InsertTable:  Insert failed
Cancelling Transaction : 2886801884_15925452_423015921
Exiting JDB_InsertTable with Failure(Table F49211)



Try
The reason it appears to be intermittent is that at once order number is retrieved next number is to get updated. So by chance, same order does not exist from F49211 user shall not hit same error.

For this type of issue,

1. Get e1root_*.log from JAS (this will give you PID for Call Object Kernel)
2. Get JDE_PID.log from log folder in your logic server. In case error message in e1root_*.log does not contain any PID (Process Identifier) then get all JDE_*.logs in your logic server
3. (if you know how to simulate) capture/trace jdedebug.log



Solution
Delete orphaned data from F49211 and F49219.

Considerations
In case you need to implement your custom Purge/Archive routine, refer to <Document 625602.1> E1: 42: Data File Purges in Sales (R42119P / R42199P / R4201P / R4211P / R42800). If possible, analyze how purge is working in R42800 and make it sure all tables related with Sales Order are handled correctly