Java Client Freezes During field_write in Modal Widget of Combined Form (Doc ID 1508854.1)

Last updated on JULY 11, 2016

Applies to:

Oracle Agile Engineering Data Management - Version 6.1.1.0 and later
Information in this document applies to any platform.
Checked for Relevance on 28-NOV-2014

Symptoms

On Oracle Agile e6.1.1, e6.1.2.0 and e6.1.2.2 with the Java Client (6.1.1. HF 78 / 6.1.2.0 HF 15 / 6.1.2.2 HF 7)
Find that the Java Client hangs when opening a modal widget that has a longtext field that is filled in the edit action userexit. This happens only if the userexit to call the General tab of the recursive widget (which is a combined mask) is the LIST userexit (to combine the call to several userexits in that tab).
This issue happens only on unix server machines (tested: HP and Linux)

What is working:
As soon as the LIST userexit is removed and only the standard userexit bvb_usx_cmb_rpl is called, the issue does not happen and the Java Client works fine. But then it is not possible to call additional userexit while the tab opens.

The issue can be reproduced at will with the following steps in a standard dump:
------------------------------------------------------------------------------------------
1. Create LogiView procedure Test/LGV1:
10 RES = @dal_mdl_wdg_opn ("bvb_usx_opn_ent /PAR= \"EDB-TXT-TEMPLATE /EDB-F=EDB-TXT-TMP-CFR @>\"")
20 RES = @iwf_cls_edt()
30 RES=@iwf_ins_elm()

2. Create a LogiView procedure Test/LGV2:
10 EP_WDG = widget_id()
20 test = "test123"
30 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
40 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
50 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
60 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
70 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
80 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
90 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
100 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
110 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
120 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
130 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
140 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
150 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
160 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
170 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
180 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
190 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
200 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
210 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
220 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
230 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
240 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
250 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
260 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
270 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
280 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
290 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
300 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
310 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
320 test = strcat(test, "ERR: Fehlerhafte Datenverarbeitung B 06.07.2012 08:45:58.727")
400 field_write(EP_WDG,"T_TXT_TPL_DAT.EDB_TEXT_DEF",1,test)

With following variables:
EP_WDG  I Widget Id
test        S

3. Add Test/LGV2 as Edit-Action-Userexit to EDB-TXT-TMP-CFR
4. Adapt the Button/NOS menu of EDB-TXT-TMP-TFR and adapt selection EDB-TXT-TMP-GEN (the one that opens the General tab):
Change the userexit to LIST and adapt the parameter to bvb_usx_cmb_rpl(F>EDB-TXT-TMP-SBF-GEN /MAINFORM)
Here only the standard userexit is called but the customer needs to call his own userexits additionally which is only possible with the "LIST" userexit.
5. Restart the Java Client
6. Open the LogiView mask again, select the LogiView procedure TEST_LGV1 and press the button "Processing".
=> The LogiView procedure is executed but the Java Client hangs.
7. Restart the Java Client and revert back the changes from step 4: remove the LIST userexit and set bvb_usx_cmb_rpl as userexit and F>EDB-TXT-TMP-SBF-GEN /MAINFORM as parameter again.
8. Repeat steps 5 and 6
=> Now the mask EDB-TXT-TMP-TFR opens as recursive widget in insert mode with filled field "Template" and a record can be inserted. Afterwards the mask closes again and the Java Client can be used as expected. This should work also with the LIST userexit.

Additional hint: If the Template field in the mask is not preset or only filled with less characters (less than 1264 bytes according to the customer), the hanging Java Client is not appearing either.

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