AVFP repeat all pages code more times

Topics: Developer Forum
Dec 16, 2015 at 10:41 AM
Hi friends,
i've a problem with AVFP in my project. The same steps executing from server and from client make me different results. I've make a log file and i see that the client execute more times the same code instead server.

If you compare the following logs you can see the differences.

SERVER-LOG
START
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - ELIMINA_VECCHIE_SESSIONI
FINE - ELIMINA_VECCHIE_SESSIONI
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - __POP
FINE - __POP
INIZIO - __PUSH(xdatadoc2_16/12/2015)
FINE - __PUSH(JDATADOC2_16/12/2015)
INIZIO - __PUSH(xmsg_)
FINE - __PUSH(JMSG_)
INIZIO - __PUSH(xoldProgr_)
FINE - __PUSH(JOLDPROGR_)
INIZIO - __PUSH(xhdoc_prog_)
FINE - __PUSH(JHDOC_PROG_)
INIZIO - __PUSH(xnumregPr_)
FINE - __PUSH(JNUMREGPR_)
INIZIO - __PUSH(xtipodoc_)
FINE - __PUSH(JTIPODOC_)
INIZIO - GET_PULSANTI_TIPDOC
INIZIO - __POP
FINE - __POP
INIZIO - GET_CAMPO_TAB
INIZIO - GET_CAMPO_TAB
FINE - GET_PULSANTI_TIPDOC
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - __PUSH(xtipodoc_N)
FINE - __PUSH(JTIPODOC_N)
INIZIO - __PUSH(xtipdoc_N)
FINE - __PUSH(JTIPDOC_N)
INIZIO - __PUSH(xfiltradoc_.F.)
FINE - __PUSH(JFILTRADOC_.F.)
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
INIZIO - __PUSH(xpathdb_C:\ApplicazioniWeb\Progetti\webdoc\data\PROVA2015\)
FINE - __PUSH(JPATHDB_C:\ApplicazioniWeb\Progetti\webdoc\data\PROVA2015\)
INIZIO - __POP
FINE - __POP
INIZIO - GET_CLIENTI
INIZIO - __POP
FINE - __POP
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
FINE - GET_CLIENTI
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - __POP
FINE - __POP
INIZIO - __PUSH(xmsg_)
FINE - __PUSH(JMSG_)
INIZIO - __PUSH(xoldprogr_)
FINE - __PUSH(JOLDPROGR_)
INIZIO - __PUSH(xhdoc_prog_)
FINE - __PUSH(JHDOC_PROG_)
INIZIO - __PUSH(xnumregPr_)
FINE - __PUSH(JNUMREGPR_)
INIZIO - SCRIVI_HEADER_DOC
INIZIO - __POP
FINE - __POP
INIZIO - __PUSH(xcodcli_0001052)
FINE - __PUSH(JCODCLI_0001052)
INIZIO - GET_DESCR_CLIENTE
INIZIO - __POP
FINE - __POP
FINE - GET_DESCR_CLIENTE
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
INIZIO - GET_CAMPO_TAB
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
INIZIO - GET_CAMPO_TAB
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
INIZIO - GET_CAMPO_TAB
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
INIZIO - GET_CAMPO_TAB
INIZIO - __PUSH(xcausMag_20)
FINE - __PUSH(JCAUSMAG_20)
INIZIO - __PUSH(xcausCon_1)
FINE - __PUSH(JCAUSCON_1)
INIZIO - __PUSH(xdesCaus_NOTA                     )
FINE - __PUSH(JDESCAUS_NOTA                     )
INIZIO - __PUSH(xhdoc_alfa_)
FINE - __PUSH(JHDOC_ALFA_)
INIZIO - __PUSH(xhdoc_prog_0005997)
FINE - __PUSH(JHDOC_PROG_0005997)
FINE - SCRIVI_HEADER_DOC
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - __POP
FINE - __POP
INIZIO - GET_DESCR_CLIENTE
INIZIO - __POP
FINE - __POP
FINE - GET_DESCR_CLIENTE
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
INIZIO - GET_CAMPO_TAB
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
INIZIO - GET_CAMPO_TAB
INIZIO - __PUSH(xnumdoc_0005997)
FINE - __PUSH(JNUMDOC_0005997)
INIZIO - __PUSH(xalfdoc_)
FINE - __PUSH(JALFDOC_)
INIZIO - __PUSH(xdatdoc_16/12/2015)
FINE - __PUSH(JDATDOC_16/12/2015)
INIZIO - __PUSH(xclidoc_0001052)
FINE - __PUSH(JCLIDOC_0001052)
INIZIO - __PUSH(xdesclid_A ALESSANDRO                            )
FINE - __PUSH(JDESCLID_A ALESSANDRO                            )
INIZIO - __PUSH(xmezzo_0)
FINE - __PUSH(JMEZZO_0)
INIZIO - __PUSH(xtipdoc_N)
FINE - __PUSH(JTIPDOC_N)
INIZIO - __PUSH(xdestipdoc_NOTA)
FINE - __PUSH(JDESTIPDOC_NOTA)
INIZIO - GET_CODICE_PRENOTAZ
FINE - GET_CODICE_PRENOTAZ
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - __POP
FINE - __POP
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
INIZIO - GET_CAMPO_TAB
FINE - GET_CAMPO_TAB
INIZIO - GET_CAMPO_TAB
INIZIO - GET_SALDIPREC
INIZIO - __POP
FINE - __POP
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
FINE - GET_SALDIPREC
INIZIO - GET_SALDIPREC
INIZIO - __POP
FINE - __POP
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
FINE - GET_SALDIPREC
CLIENT-LOG
START
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - ELIMINA_VECCHIE_SESSIONI
FINE - ELIMINA_VECCHIE_SESSIONI
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - ELIMINA_VECCHIE_SESSIONI
FINE - ELIMINA_VECCHIE_SESSIONI
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - __POP
FINE - __POP
INIZIO - __PUSH(xdatadoc2_16/12/2015)
FINE - __PUSH(JDATADOC2_16/12/2015)
INIZIO - __PUSH(xmsg_)
FINE - __PUSH(JMSG_)
INIZIO - __PUSH(xoldProgr_)
FINE - __PUSH(JOLDPROGR_)
INIZIO - __PUSH(xhdoc_prog_)
FINE - __PUSH(JHDOC_PROG_)
INIZIO - __PUSH(xnumregPr_)
FINE - __PUSH(JNUMREGPR_)
INIZIO - __PUSH(xtipodoc_)
FINE - __PUSH(JTIPODOC_)
INIZIO - GET_PULSANTI_TIPDOC
INIZIO - __POP
FINE - __POP
INIZIO - GET_CAMPO_TAB
INIZIO - GET_CAMPO_TAB
FINE - GET_PULSANTI_TIPDOC
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - __POP
FINE - __POP
INIZIO - __PUSH(xmsg_)
FINE - __PUSH(JMSG_)
INIZIO - __PUSH(xoldProgr_)
FINE - __PUSH(JOLDPROGR_)
INIZIO - __PUSH(xhdoc_prog_)
FINE - __PUSH(JHDOC_PROG_)
INIZIO - __PUSH(xnumregPr_)
FINE - __PUSH(JNUMREGPR_)
INIZIO - __PUSH(xtipodoc_)
FINE - __PUSH(JTIPODOC_)
INIZIO - GET_PULSANTI_TIPDOC
INIZIO - __POP
FINE - __POP
INIZIO - GET_CAMPO_TAB
INIZIO - GET_CAMPO_TAB
FINE - GET_PULSANTI_TIPDOC
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - __PUSH(xtipodoc_N)
FINE - __PUSH(JTIPODOC_N)
INIZIO - __PUSH(xtipdoc_N)
FINE - __PUSH(JTIPDOC_N)
INIZIO - __PUSH(xfiltradoc_.F.)
FINE - __PUSH(JFILTRADOC_.F.)
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
INIZIO - __PUSH(xpathdb_C:\ApplicazioniWeb\Progetti\webdoc\data\PROVA2015\)
FINE - __PUSH(JPATHDB_C:\ApplicazioniWeb\Progetti\webdoc\data\PROVA2015\)
INIZIO - __POP
FINE - __POP
INIZIO - GET_CLIENTI
INIZIO - __POP
FINE - __POP
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
FINE - GET_CLIENTI
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - __POP
FINE - __POP
INIZIO - __PUSH(xmsg_)
FINE - __PUSH(JMSG_)
INIZIO - __PUSH(xoldProgr_)
FINE - __PUSH(JOLDPROGR_)
INIZIO - __PUSH(xhdoc_prog_)
FINE - __PUSH(JHDOC_PROG_)
INIZIO - __PUSH(xnumregPr_)
FINE - __PUSH(JNUMREGPR_)
INIZIO - __PUSH(xtipodoc_)
FINE - __PUSH(JTIPODOC_)
INIZIO - GET_PULSANTI_TIPDOC
INIZIO - __POP
FINE - __POP
INIZIO - GET_CAMPO_TAB
INIZIO - GET_CAMPO_TAB
FINE - GET_PULSANTI_TIPDOC
INIZIO - INIT
INIZIO - __PUSH(xthisPage_)
FINE - __PUSH(JTHISPAGE_)
INIZIO - __PUSH(xprevPage_)
FINE - __PUSH(JPREVPAGE_)
FINE - INIT
INIZIO - __POP
FINE - __POP
INIZIO - __PUSH(xmsg_)
FINE - __PUSH(JMSG_)
INIZIO - __PUSH(xoldprogr_)
FINE - __PUSH(JOLDPROGR_)
INIZIO - __PUSH(xhdoc_prog_)
FINE - __PUSH(JHDOC_PROG_)
INIZIO - __PUSH(xnumregPr_)
FINE - __PUSH(JNUMREGPR_)
INIZIO - SCRIVI_HEADER_DOC
INIZIO - __POP
FINE - __POP
INIZIO - __PUSH(xcodcli_0001052)
FINE - __PUSH(JCODCLI_0001052)
INIZIO - GET_DESCR_CLIENTE
INIZIO - __POP
FINE - __POP
FINE - GET_DESCR_CLIENTE
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
INIZIO - GET_CAMPO_TAB
INIZIO - GET_PATH_AZIENDA
FINE - GET_PATH_AZIENDA
Coordinator
Dec 16, 2015 at 5:01 PM
I am not sure about what exactly is your problem. Do you mean the same AVFP code get execute twice when called from a browser outside the websever ? The actual AVFP code would be useful too.


Victor
Dec 17, 2015 at 8:44 AM
vespina wrote:
I am not sure about what exactly is your problem. Do you mean the same AVFP code get execute twice when called from a browser outside the websever ? The actual AVFP code would be useful too.


Victor
Hi Victor,
it's not simple to post all code because during the execution i use more page and procedures. If you want, i can send you all project by email.
Coordinator
Dec 17, 2015 at 10:02 AM
Understand. Maybe a little context then? are you calling a avfp page or a REST service?

Victor
Dec 17, 2015 at 10:21 AM
vespina wrote:
Understand. Maybe a little context then? are you calling a avfp page or a REST service?

Victor
I only use AVFP page. I've :
  • a file .app, loaded in main.prg, that include all my procedures and functions.
  • some page for navigation
  • a page without html code for algorithm (get form and querystring parameters, call procedure or function and redirect to the correct page)
So... when i start to navigating from home page to the first 4 pages, on the server all works right, but when i do the same on another client machine i can't see the 4th page because my session variable is resetted from first page (i have a code to reset when go to homepage).

I've put a LOG function to follow the code that is executed and i noticed that client machine run the code of all page twice and at the 3th page, is reloaded the homepage (so i get error for session's variable) before to show me an error in the 4th page.
Coordinator
Dec 17, 2015 at 4:32 PM
Do you have any JS code in place? Had you checked the JS console for errors?


Victor
Dec 18, 2015 at 11:30 AM
Yes i have. I use jQuery for Bootstrap framework and jQuery mobile for Listview with autofilter. No relevat error in JS console...
Developer
Dec 18, 2015 at 1:17 PM
It is difficult to make a diagnosis with that information , analyzing the files with a differentiator , show that the running code calls different routines, listings are the same to the line 21, in the line 22 of the client log, a call is made to a procedure nested that does not exist in the server log (same in the lines 62 and 122 ) , in the line 160 is a series of procedure calls that are not in server log , another clue that do not run the same procedures is that in the line 138 of the log on the client side there is a call to a procedure called " xoldProgr " (note the ' P' in uppercase ) in the server side , the same procedure name is " xoldprogr " ( note the "p" in lower case ) , all this makes me think of a routing problem , if you develop on the server (bad idea), it is probable that it is a problem of path (versions ) of development. I recommend you make your proper analisys with a file comparer, you probably see that don't duplicate execution code here, may be diferent procedure calls. I hope helping you ;)
Coordinator
Dec 18, 2015 at 2:09 PM
mr_ocean, send me your project so I can check it out.

Victor
Dec 22, 2015 at 9:47 AM
vespina wrote:
mr_ocean, send me your project so I can check it out.

Victor
It's not anymore necessary. I found a solution to solve my problem. I think there is a bug in AVFP when in page there is a oResponse.Redirect string. In my case, this instruction is executed every time, bypassing my if condition. I don't know why...

I solved with an other if that protect my important variables that is resetted by redirect.
Coordinator
Dec 22, 2015 at 7:55 PM
Do you think you can prepare a test AVFP page that shows the problem, so I can fix it in the AVFP code ?
Dec 28, 2015 at 8:50 AM
vespina wrote:
Do you think you can prepare a test AVFP page that shows the problem, so I can fix it in the AVFP code ?
Sure.
Dec 28, 2015 at 2:44 PM
I made a simple project for showing you the problem but in this case all works fine. Now, i think that is a code conflict problems. I continue to investigate...