Way to lock an Application to current CallObject Kernel

shortdog

Active Member
Here is what I am observing. We have a custom application that opens many tables and caches when entering an interactive application. This is done once for performance reasons. We close these resources when exiting the application. The user may stay in this application for a long time, maybe hours. Now, some time ago in 8.11 after some tools update, the system seems to move users to a differnt CallObject Kernel than they originally were assigned to when they signed in. We have since moved to 9.1 and the latest tools update and we are still seeing this "user moving kernels" issue. My theory is that this is somehow tied to Kernel Recycling as we started observing this phenominon around the time we started recycling kernels. The problem is when they get moved, all the things that are tied to memory pointers are no longer valid on the new kernel. So the new kernel will zombie and presumably leave the resources haning on the original kernel.

So my question is: does any one know of an API I can call that would "lock" the user to the Kernel they are on. Obviously I can release the lock once I have freed all my resources.

We are currently on 9.1, iSeries, 9.1.2.4. But I have seen this over many tools updates.
 
I'm just a code monkey, but shouldn't your web session expire before the call object kernel recycles? What is your session expire set to?

Craig
 
As Craig stated, this shouldn't be happening. I'm just a code monkey also, so I don't mess around with the JAS/JDE Session timeouts like our CNC group does and as such I don't know what the best practices are for these types of settings, but I would also think you would need the JAS session to timeout in advance of the JDE session on the enterprise server.

This should NOT be a code thing... in other words as a developer you shouldn't have to manage the session or "lock a user on a COK" through code. If this were the case 90% of JDE would quit working correctly.
 
in your jde.ini if you don't have the timeToForcedExit value set and the user is "active" and there is no "inactiveUserTimeout" setting, the Call Object kernel recycling will wait until the user is logged off before starting the recycling. So no kernel recycle occurs if your users have an active session.

Check the your setting and be sure the no session timeout occurs due to user inactivity.

Regards

Bruno Condemi
 
You if you think you CO was recycled just look the log. Each time recycle occurs it's logged. You say you are on 9.1 so kernel resource management can help you to find this kind of problems.
 
Back
Top