ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » IBM MQ API Support » 2033 when using MQGMO_COMPLETE_MSG

Post new topic  Reply to topic Goto page Previous  1, 2
 2033 when using MQGMO_COMPLETE_MSG « View previous topic :: View next topic » 
Author Message
jefflowrey
PostPosted: Tue May 23, 2006 2:40 pm    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

EddieA wrote:
Quote:
If you start the copy process in m071, and then immediately start your get process, then you get all messages

But, if the GET specified Complete Message, then the GET wouldn't return anything until they were "all present and correct". It wouldn't return a partial message. And if:
Quote:
Is the last message in the segment incorrect somehow

Then it would fail, no matter at what point in the process the GET was issued.


I'd expect a Get with Complete Message and Wait to return a 2033 if the wait interval expires before all the segments arrive.

I might expect something funny to occur if the putting process produces a duplicate sequence number on the segment as the last message - or produces two messages that claim to be the last segment. In that case, if the GET has started before the second message is produced, then the first "termination" message will terminate the GET with what looks like a complete set. But if the GET starts when both messages are there, then it might cause issues.

It would be helpful for hjdur to run the putting process, use amqsbcg to examine the messages and pretend to be the MQ Get and confirm that the segmentation looks right and the segmentation information in each message is correct and etc.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
hdjur
PostPosted: Tue May 23, 2006 11:24 pm    Post subject: Reply with quote

Centurion

Joined: 16 Sep 2004
Posts: 116
Location: Zagreb

First of all, I was unable to continue discussion yesterday, because I couldn't connect to www.mqseries.net. Was there any problem with this server or is it only me?
Secondly, how can I set MQMD version to MQMD_VERSION_2 from C++? There is a protected method setVersionSupported in ImqMessage class which I can't use, there is a similar method in ImqGetMessageOptions to set MQGMO version, and does that all make any difference regarding this problem I am reporting?
Because, I don't see any progress in the rest of your suggestions.
It must be that all segments of all messages are there in the original queue, and that they are correct, including last segments, if I don't receive 2033 when ... you remember what I reported.
Back to top
View user's profile Send private message
hdjur
PostPosted: Tue May 23, 2006 11:37 pm    Post subject: Reply with quote

Centurion

Joined: 16 Sep 2004
Posts: 116
Location: Zagreb

Correction, now I see a potential for progress in Jeff's suggestions in his last post, which I haven't read before my previous post.
Back to top
View user's profile Send private message
hdjur
PostPosted: Wed May 24, 2006 12:28 am    Post subject: Reply with quote

Centurion

Joined: 16 Sep 2004
Posts: 116
Location: Zagreb

I have analyzed the content of the queue with amqsbcg, and nothing indicates there is a problem in data.
Here are the numbers:

there are 17524 messages in a queue
there are 17133 distinct GroupId attributes
there are 17133 messages with MsgFlags='6'
there are 391 messages with MsgFlags='2'
there are 17133 messages with Offset='0'
there are 391 messages with Offset>'0'
there are 17524 messages with MsgSeqNumber='1'

Although, this is superficial analysis, it seems everything is O.K.
Besides that, our programmer convinces me there is no logical error
in putting application regarding that matter.
Back to top
View user's profile Send private message
hdjur
PostPosted: Wed May 24, 2006 1:16 am    Post subject: Reply with quote

Centurion

Joined: 16 Sep 2004
Posts: 116
Location: Zagreb

Now I realized that our programmer does not do exactly what he is told to do. Namely, instead of:

MQPUT MD.MsgFlags = MQMF_SEGMENT
MQPUT MD.MsgFlags = MQMF_SEGMENT
...
MQPUT MD.MsgFlags = MQMF_SEGMENT
MQPUT MD.MsgFlags = MQMF_LAST_SEGMENT

he does:

MQPUT MD.MsgFlags = MQMF_SEGMENT
MQPUT MD.MsgFlags = MQMF_SEGMENT
...
MQPUT MD.MsgFlags = MQMF_SEGMENT
MQPUT MD.MsgFlags = MQMF_SEGMENT + MQMF_LAST_SEGMENT

Otherwise, there would be no MsgFlags='6' messages in a queue.
Could this be the source of the problem? Because, it does not appear always, to be a problem. Sometimes, queue manager does not complain about it, and does reassembling, and sometimes (with same messages in the same queue) it returnes 2033. I didn't mention this fact at all, until now, because it seemed very strange to me.
Back to top
View user's profile Send private message
hdjur
PostPosted: Wed May 24, 2006 3:15 am    Post subject: Reply with quote

Centurion

Joined: 16 Sep 2004
Posts: 116
Location: Zagreb

Correction, again. Programmer is doing exactly what he is supposed to do.
If message flags of a message is set before put operation to a constant MQMF_LAST_SEGMENT (defined as 4), after put operation browsing shows a value of '6'. So, it must be normal thing, although I don't know where are this "details" documented?
Back to top
View user's profile Send private message
EddieA
PostPosted: Wed May 24, 2006 8:02 am    Post subject: Reply with quote

Jedi

Joined: 28 Jun 2001
Posts: 2453
Location: Los Angeles

Quote:
It must be that all segments of all messages are there in the original queue, and that they are correct, including last segments, if I don't receive 2033 when

Hang on. That's not what you said earlier:
Quote:
As I said, I receive 2033 when I try to get messages from the original

Quote:
there are 17524 messages in a queue
.
.
there are 17524 messages with MsgSeqNumber='1'

That doesn't seem right, because of:
Quote:
there are 17133 distinct GroupId attributes

Cheers,
_________________
Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Wed May 24, 2006 8:04 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

You need to start fresh.

In a test environment, try sending ONE segmented message. See what happens in the different cases you've mentioned - where the receiver starts before the sender has finished, and where the receiver starts after the sender has finished.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
Nigelg
PostPosted: Thu May 25, 2006 11:50 pm    Post subject: Reply with quote

Grand Master

Joined: 02 Aug 2004
Posts: 1046

Quote:
there are 17524 messages with MsgSeqNumber='1'

That is right. MsgSeqNumber refers to the msg sequence inside a group; all segments of a msg have the same sequence number.
_________________
MQSeries.net helps those who help themselves..
Back to top
View user's profile Send private message
hdjur
PostPosted: Fri May 26, 2006 4:21 am    Post subject: Reply with quote

Centurion

Joined: 16 Sep 2004
Posts: 116
Location: Zagreb

Eddie, I think Nigel is completely right. We are doing segmentation of logical messages into one or more physical messages. We do not group logical messages.
I can't reproduce the problem anymore, because I didn't make the copy of messages which produced it, and my coleague started a process expecting to receive 2033, instead of that he wasted messages.
I don't know which factor influenced not to receive 2033 this time, the same program which gets messages whith option MQGMO_COMPLETE_MSG was successful.
Thank you all for your answers and suggestions. Does anyone has a comment on 6 (not 4) value for msgflags, or setting MQMD version from C++?
Back to top
View user's profile Send private message
EddieA
PostPosted: Fri May 26, 2006 4:31 pm    Post subject: Reply with quote

Jedi

Joined: 28 Jun 2001
Posts: 2453
Location: Los Angeles

Quote:
Does anyone has a comment on 6 (not 4) value for msgflags

Even though it's the last segment (4) it's still a segment (2) as well. Hence 6.

Cheers,
_________________
Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page Previous  1, 2 Page 2 of 2

MQSeries.net Forum Index » IBM MQ API Support » 2033 when using MQGMO_COMPLETE_MSG
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.