| > not knowing the first thing about IMS, i have some
> questions. you say you
> 1) attach to a temporary queue
> 2) attach to a secondary temporary q
> 3) send an ENABLE_NOTIFY to the PAMS_CONNECT_SERVER
> 4) you post a get ?
> 5) startup the same program without exiting the first
>
> my question is which of these steps are done by you
> and which of these steps are done by IMS ?
I do all 5 steps. By "post a get" I assume you
mean call pams_get_msgw() ?
I call pams_get_msgw() on that 2ndry temp q. I
perform reads with a configurable timeout -
usually 20 secs.
Is my assumption from .0 correct??: ie:
>> I register the ENABLE_NOTIFY with a pams_put_msg, after
>> earlier doing the pams_attach to the 2ndry Q.
>> Does this mean **ALL** E'_NOTIFY responses will be sent
>> to that 2ndry Q, cause that's the key assumption I'm
>> making.
All IMS stuff should only be happening on the primary
q (also temporary). It should not be touching my
2ndry q - atleast that is what I understand, and will
get confirmation from an IMS engineer.
> Basically
> i want to know if it works without IMS. If it does
> then I defer to the IMS people to track down the prob-
> lem. If it doesn't then maybe it is our problem.
>
Assuming IMS doesn't touch the 2ndry Q, and my
assumption above is correct, then I believe it
is in the DMQ ball-park.
> one thing to try is to turn on scripting (to see what
> messages you are sending and receiving). once you
> have the output, you can check to see what you are
> actually receiving from the connect server and what
> IMS is actually passing back to you. You are likely
I tried running with PAMS_TRACE setenv'd to 1. Can
u pls give me an into to understanding its output ?
Here's the trace from my process as I start a 2nd copy of it.
16:17:39:167: dmq_poller.cxx:2881 ==> DmqReadMsg(): timeout (1/10ths sec): 600
<in a blocking read for 60 seconds here>
16:18:02:230: dmq_poller.cxx:2987 - Process CONNECT to 2966.731
16:18:02:231: dmq_poller.cxx:1470 ==> ImsPing(): timeout (1/10ths sec): 1
16:18:02:345: dmq_poller.cxx:1625 <== ImsPing()
16:18:02:345: dmq_poller.cxx:3224 <== DmqReadMsg() - status: PAMS__SUCCESS
16:18:02:345: dmq_poller.cxx:2881 ==> DmqReadMsg(): timeout (1/10ths sec): 600
16:18:09:757: dmq_poller.cxx:3024 - Process DISCONNECT from 2966.708
16:18:09:758: dmq_poller.cxx:3224 <== DmqReadMsg() - status: PAMS__SUCCESS
16:18:09:758: dmq_poller.cxx:2881 ==> DmqReadMsg(): timeout (1/10ths sec): 600
16:18:09:763: dmq_poller.cxx:3024 - Process DISCONNECT from 2966.731
16:18:09:764: dmq_poller.cxx:3224 <== DmqReadMsg() - status: PAMS__SUCCESS
16:18:09:764: dmq_poller.cxx:2881 ==> DmqReadMsg(): timeout (1/10ths sec): 600
<back to the blocking read for 60 seconds>
As u can see, 2 disconnects, but only 1 connect, even when the IMS read
only blocked for 1/10th of a second.
Here is the PAMS_TRACE for that run. I've tried
looking through the p_*.h files to find meanings for
some of the numbers below, but no luck.
PAMS 10636:PAMS-****** received message ******
PAMS 10636:PAMS-IPI Type :, 19 (13)
PAMS 10636:PAMS-Source :, 194379876 (B960064)
PAMS 10636:PAMS-Target :, 194380502 (B9602D6)
PAMS 10636:PAMS-Type / Class:, -65011683 (FC20001D)
PAMS 10636:PAMS-Priority :
PAMS 10636:PAMS-Length :, 4 (4)
PAMS 10636:PAMS-IPI Del Opt :
PAMS 10636:PAMS-IPI UMA :, 1 (1)
PAMS 10636:PAMS-Msg Seq High:, 892571 (D9E9B)
PAMS 10636:PAMS-Msg Seq Low :, 194379875 (B960063)
PAMS 10636:PAMS-******************************
PAMS 10636:PAMS-PAMS_get_cleanup
PAMS 10636:PAMS-****** sending message ******
PAMS 10636:PAMS-Source :, 194380502 (B9602D6)
PAMS 10636:PAMS-Destination :, 194380507 (B9602DB)
PAMS 10636:PAMS-Redirected to :, 194380507 (B9602DB)
PAMS 10636:PAMS-Type / Class :, 3276850 (320032)
PAMS 10636:PAMS-Delivery :, 29 (1D)
PAMS 10636:PAMS-UMA :, 5 (5)
PAMS 10636:PAMS-Resp Q :
PAMS 10636:PAMS-******************************
PAMS 10636:PAMS-****** sent message ******
PAMS 10636:PAMS-Msg Seq High:, 1669 (685)
PAMS 10636:PAMS-Msg Seq Low :, 194380785 (B9603F1)
PAMS 10636:PAMS-******************************
PAMS 10636:PAMS-Received unblocking msg
PAMS 10636:PAMS-PAMS_put_cleanup
PAMS 10636:PAMS-PAMS_deq
PAMS 10636:PAMS-****** received message ******
PAMS 10636:PAMS-IPI Type :, 19 (13)
PAMS 10636:PAMS-Source :, 194379876 (B960064)
PAMS 10636:PAMS-Target :, 194380502 (B9602D6)
PAMS 10636:PAMS-Type / Class:, -65011683 (FC20001D)
PAMS 10636:PAMS-Priority :
PAMS 10636:PAMS-Length :, 4 (4)
PAMS 10636:PAMS-IPI Del Opt :
PAMS 10636:PAMS-IPI UMA :, 1 (1)
PAMS 10636:PAMS-Msg Seq High:, 893339 (DA19B)
PAMS 10636:PAMS-Msg Seq Low :, 194379875 (B960063)
PAMS 10636:PAMS-******************************
PAMS 10636:PAMS-PAMS_get_cleanup
PAMS 10636:PAMS-PAMS_deq
PAMS 10636:IPI-Dequeue Message failed, -42 (FFFFFFD6)
PAMS 10636:PAMS-PAMS_get_cleanup
PAMS 10636:PAMS-PAMS_deq
PAMS 10636:PAMS-****** received message ******
PAMS 10636:PAMS-IPI Type :, 19 (13)
PAMS 10636:PAMS-Source :, 194379876 (B960064)
PAMS 10636:PAMS-Target :, 194380502 (B9602D6)
PAMS 10636:PAMS-Type / Class:, -65077219 (FC1F001D)
PAMS 10636:PAMS-Priority :
PAMS 10636:PAMS-Length :, 4 (4)
PAMS 10636:PAMS-IPI Del Opt :
PAMS 10636:PAMS-IPI UMA :, 1 (1)
PAMS 10636:PAMS-Msg Seq High:, 894875 (DA79B)
PAMS 10636:PAMS-Msg Seq Low :, 194379875 (B960063)
PAMS 10636:PAMS-******************************
PAMS 10636:PAMS-PAMS_get_cleanup
PAMS 10636:PAMS-PAMS_deq
PAMS 10636:PAMS-****** received message ******
PAMS 10636:PAMS-IPI Type :, 19 (13)
PAMS 10636:PAMS-Source :, 194379876 (B960064)
PAMS 10636:PAMS-Target :, 194380502 (B9602D6)
PAMS 10636:PAMS-Type / Class:, -65077219 (FC1F001D)
PAMS 10636:PAMS-Priority :
PAMS 10636:PAMS-Length :, 4 (4)
PAMS 10636:PAMS-IPI Del Opt :
PAMS 10636:PAMS-IPI UMA :, 1 (1)
PAMS 10636:PAMS-Msg Seq High:, 895899 (DAB9B)
PAMS 10636:PAMS-Msg Seq Low :, 194379875 (B960063)
PAMS 10636:PAMS-******************************
PAMS 10636:PAMS-PAMS_get_cleanup
PAMS 10636:PAMS-PAMS_deq
Thanks !!
Craig.
|
|
I **never** expect to get a DISABLE_NOTIFY !
What I am expection is:
2 x MSG_TYPE_PROCESS_DCL
then
2 x MSG_TYPE_PROCESS_EXIT
If your seeing MSG_TYPE_DISABLE_NOTIFY in that trace then does that
mean DMQ believes I sent it a DISABLE_NOTIFY request ? For the
entire life of my process, it always wants to rcv notifications of
Links Up or Down, or Q's attaching & detaching.
If that's what the trace shows, then that's probably part of the
problem(s) I'm seeing.
** PLEASE TELL ME IF MY ASSUMPTION CORRECT **
>>> I register the ENABLE_NOTIFY with a pams_put_msg, after
>>> earlier doing the pams_attach to the 2ndry Q.
>>> Does this mean **ALL** E'_NOTIFY responses will be sent
>>> to that 2ndry Q, cause that's the key assumption I'm
>>> making.
The Test, Step by Step.
=======================
1. Start 1st instance of the Application (call this one "Poller")
a. Call sl_connect.. (IMS) routine. It attaches to a primary Q.
b. Call pams_attach_q() It attaches to a 2ndry Q.
c. Call pams_put_msg() to send a MSG_TYPE_ENABLE_NOTIFY
d. Call pams_get_msgw() in an infinite loop, with a
timeout of 20->60 secs.
2. Start another instance of the Application (call this one Test)
Hence it goes through steps a -> d itself.
3. "Poller" rcvs a MSG_TYPE_PROCESS_DCL as "Test" does its'
step (a).
4. "Poller" issues the IMS Ping to the group.queue it got out of
the MSG_TYPE_PROCESS_DCL message it just rcvd. To do this an IMS
message is sent on the primary Q setup in 1.(a). A read for a
"short" time is done on that primary Q is performed, waiting for
the ping response. As it turns out, no Ping response comes back.
This probably explains step "4)" in -.1.
>> 4) timed out an a get
While this step 4 has been going on, "Test" would've performed its'
step (b). Hence another MSG_TYPE_PROCESS_DCL should be sent to
"Poller". This is the message I am not seeing.
I don't tell the IMS API (now called MSG+) I have a 2ndry Q. I don't
know if it can find out.
** Can you guarantee the PAMS_CONNECT_SERVER is sending the **
** notifications to the 2ndry Q ?? **
I know if they're going to the Primary Q, IMS will be discarding
them which is why I'm not seeing them. That is why it is SO
IMPORTANT someone please tell me the answer to my assumption.
Thanks,
Craig.
|
| > when you are registering for the ENABLE_NOTIFY are you
> supplying a response queue ? if not then the connect
> server thinks the message came from your primary queue
> and will send responses and notifications to that
> address, and if that is the queue attached by IMS,
> then you probably get nothing.
Yes & No. When I tried using a response Q, I got
nothing at all, so I went back to not specifing
one.
The reason I wasn't rcv'ing any thing on the response
q was my selection filter on the pams_get_msgw() was
broken !! That puts this note in the User-Error basket,
(hence why I deleted the original version of this note) a
developers favourite type!
My filter is now:
int32 selectnFilter = (PSEL_AQ << 16) | qAddress.au.queue;
dmqStatus = pams_get_msgw(msgArea,
...,
&selectnFilter,
...,
...);
Can u see any problem with that ?
> one more note. you may notice that the PROCESS_DCL
> and PROCESS_EXIT messages have not appeared in the
> documentation for over 4 years now.
I've been having to work with Jan 1994 Prog' Guide.
I asked the other day in another note for something
newer. The answer was wait until .ps versions of
ya html doc have been created.
> .....in V4.0 they are going away
Thanks ! I've logged it as a bug against our apps
that use it.
> or ENABLE_Q_NOTIFY.
As long as we can still get q AND link notifications,
and the transition from the old stuff to these new
ones isn't too painful, we'll be right I think.
Sorry for "run"- around.
Thx
Craig.
|