Using A4D 402 and 4D 2004.5 server/client on OSX.3.9

We have a site that members use to change their registrations and
personal data.  This site, as far as we know, has been running OK for
about 6mo, but now has started to accumulate zombies and not clean
sessions correctly.

We do have On Abandon Session code running that saves the session to a
blob and to their record.  The record is unloaded after the query/save
happens.

With zombies created, the Abandon Session code is not being run.  And
therefore the sessions are not being saved.  Ugh.

We have log level 7 and have examined the error log to see if there
are syntax errors, there are none that we can see.

So my questions are this:
* Can we jumpstart the housekeeper to clean up the sessions properly
* If so, is there ANY possibility that save session code will run and
save the data?
* How can we troubleshoot/solve this issue?

FROM Active4D.a4l
method "On Session End"

        if (session has("sessionType"))
                case of
                :(session{"sessionType"}="PRDU")
                        PR_Lib.saveSession
                        PR_dataUpdate.clearGlobals
                :(session{"sessionType"}="PR_APP")
                        PR_Lib.saveAPPSession
                        PR_application.clearAppGlobals
                end case
        end if
        
end method


FROM PR_Lib.a4l
method "saveSession"
                if(session{"state"}#"Read Only") //only save the session if the
update wasn't already submitted
                        if(session{"Modified"})
                                C_blob($sessionBlob)
                                
$sessionBlob:=PR_SessionConvert.sessionToBlobObject
                
                                query([WebPortal];[WebPortal]TypeID = 
num(session{"personID"}))
                                if (records in selection([WebPortal])=0)
                                        // get a new highest index number and 
increment by 1
                        
                                        // wait if another app id is being 
retrieved
                                        while (semaphore("prdus_create.load"))
                                                // wait
                                        end while

                                        c_longint($id)

                                        READ ONLY([webportal])
                                        SCAN INDEX([webportal]webportalID;1;<)
                                        $id:=[webportal]webportalid+1

                                        //create the new account
                                        create record ([WebPortal])
                                        [webportal]webportalID:=$id
                                        [WebPortal]Created:=current date
                                        [WebPortal]Type:="PRDUS"
                                        
[WebPortal]TypeID:=num(session{"personID"})
                                        
[WebPortal]TypeLabel:=session{"person"}{"last"}{1} + ", " +
session{"person"}{"first"}{1}+" ("+session{"peerReviewIDNum"}+")"
                                        [WebPortal]Session:=$sessionBlob
                                        [WebPortal]modified:=current date
                                        save record ([WebPortal])
                                
                                        clear semaphore("prdus_create.load")
                        
                                else
                                        
if(a4d.utils.unlockAndLoad(->[WebPortal]))
                                                [WebPortal]Session:=$sessionBlob
                                                [WebPortal]modified:=current 
date
                                                save record ([WebPortal])
                                        end if
                                end if
                                unload record([WebPortal])
                                session{"Modified"}:=false
                        end if
                end if
        end method


Thanks,

Michael Check
_______________________________________________
Active4D-dev mailing list
[email protected]
http://mailman.aparajitaworld.com/mailman/listinfo/active4d-dev
Archives: http://mailman.aparajitaworld.com/archive/active4d-dev/

Reply via email to