× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi Basilio,

If the program B was activated earlier in some activation group and this activation group still exist when you call CRTPGM with REPLACE(*YES) parameter, the old program B object moves to QRPLOBJ library with machine generated name and new program object B created instead of.

The meaning of Activating program object process includes operation system steps to resolve 16 byte system pointer(SYSPTR) by program name(fully-qualified or by lib list). For performance reason this operation usually happens once on the first program call.

So if program A “remembered” program’s B system pointer, it will call old program B until the new system pointer will be available to program A. As Craig said, the behavior differs from what kind of activation group programs A and B do have.

If you have program A and B in *NEW AG, then it will resolve to new program B sys pointer right after the first call of A. But it’s very expensive to create new AG on each call.

If you have A in *CALLER, and B in *NEW then you just call the old program B.

If both in *CALLER then behavior varies on what resource management does web server job have. If web server jobs run in default activation group and one job runs old program B and one job runs new program B you may get undefined behavior and possibly leave shared lock on table.

That’s the reason why it is better to restart all jobs that use recompiled program.

Best regards,
Anton.



24 февр. 2018 г., в 13:49, Craig Richards <craig@xxxxxxxxxxxxxxxx> написал(а):

Hi Basilo,

I'm not any kind of expert in this area but I have seen similar issues
recently.

In our environment at least, when a client connects to the web service ,
what I see on the IBMi is that a job running with user QTMHHTP will start a
new thread running with user QTMHHTP1 and that thread seems to remain
active until the web server is restarted.

If you have recompiled the program, it could either be destroyed now or
running out of QRPLOBJ depending on how you recreated it.

Also it depends on what Activation group it is running in as to what
happens next time you call it.
If it is running in Activation Group *NEW then you shouldn't have a problem
with any old version running but it is expensive to start a new activation
group each time.
It if is running in a named activation group, then you may have resources
open until you RCLACTGRP even if the program sets on *INLR.
Or is it running in the default activation group or *CALLER?

It's probably a good idea to restart the web server when you recompile the
code if that is practical to do in your situation.

But that's just my opinion based on my small experience in this area.

If you want to see the program running there are a few ways you can do it:
One way is to use RDi if you have it and set a SEP for the program and User
QTMHHTP1.

Another, if the program is running in a named activation group and you are
using SQL, once it has run the SQL more than one time it will probably
leave what looks like a shared lock on the tables it uses ( though it's not
quite the same thing ) and if that is the case you might be able to find
the job by looking for object locks on a table it accesses via SQL - again
this will only be the case if it has run the SQL more than one time.

best regards,
Craig

On 24 February 2018 at 10:06, Merlino, Basilio <b.merlino-nisext@xxxxxxxxx>
wrote:

Dear All
Let's me describe the following scenario.
Program A is called by a web service request
Program A in one point call a second program “B"
Program "B" have 2 file under journal and write on it
On Tuesday I have recompile pgm B without end the apache server and I was
wondering to discover (on Wednesday) that all the transactions was not
written on the file defined in program "B"
Initially I was thinking a bug on the program but neither Wednesday and
the day after I faced the problem
I didn't find any kind of log so my question is this behavior is correct?
It's seem that the ws "lost" the program. It's mandatory to close and
restart the server
Why as happen in a normal case new object is not use?
Thanks to all for your answers
Basilio

************************************************************
***********************************************
CONFIDENTIALITY NOTICE

This message is for the named person's use only. It may contain
confidential, proprietary or legally privileged information.

If you receive this message in error, please immediately delete it and all
copies of it from your system, destroy any hard copies of it and notify us
by email to email.security@xxxxxxxxxxxxxxxxx with a copy of this message.
You must not, directly or indirectly, use, disclose, distribute, print or
copy any part of this message if you are not the intended recipient. NISSAN
EUROPE and any of its subsidiaries each reserves the right to monitor all
e-mail communications through its networks.

NISSAN EUROPE is neither liable for the proper, complete transmission of
the information contained in this communication nor any delay in its
receipt. This email was scanned for the presence of computer viruses. In
the unfortunate event of infection NISSAN EUROPE does not accept liability.

Any views expressed in this message are those of the individual sender,
except where the message states otherwise and the sender is authorised to
state them.

************************************************************
***********************************************
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate link: http://amzn.to/2dEadiD


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.