| Author | 
		  Message
		 | 
		
		  | TJW | 
		  
		    
			  
				 Posted: Wed Mar 12, 2003 8:10 am    Post subject: [SOLVED]Clustered UPES causes execution server to die | 
				     | 
			   
			 
		   | 
		
		
		   Novice
 
 Joined: 11 Dec 2002 Posts: 16 Location: UK 
  | 
		  
		    
			  
				Has anyone else experienced this 'problem' ...
 
 
A UPES is defined with a queue name but a blank queue manager name (this will be a clustered queue).
 
 
An activity in a process is defined as using this UPES. 
 
 
If the queue refered to by the UPES does not exist then when an execution server reaches this activity it fails with error : 
 
 
FmcAssertionException,.Condition=***.Pre-condition.failed.in.e:\v332\src\fmckstr.inl(323):
 
.!IsNull().&&.!rhs.IsNull() 
 
 
 
Ouch! Surely an MQError 2085 (MQRC_UNKNOWN_OBJECT_NAME) would have been much friendlier. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | DJGoodrich | 
		  
		    
			  
				 Posted: Wed Mar 12, 2003 9:38 am    Post subject: Clustered UPES causes execution server to die | 
				     | 
			   
			 
		   | 
		
		
		   Apprentice
 
 Joined: 12 Dec 2001 Posts: 30 Location: SW Florida 
  | 
		  
		    
			  
				TJW, 
 
 
While not(yet) a UPES expert, the problem could be more MQ specific. 
 
 
Whether or not you are using clusters or distributed queuing, my understanding and experience has been you can only issue a GET from a locally defined queue. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | vennela | 
		  
		    
			  
				 Posted: Wed Mar 12, 2003 10:00 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Jedi Knight
 
 Joined: 11 Aug 2002 Posts: 4055 Location: Hyderabad, India 
  | 
		  
		    
			  
				DJG:
 
Workflow would PUT message to UPES and GET from EXEXMLINPUTQ. 
 
 
TJW
 
My exec server is not failing. 
 
 
Is it a synchronous activity or asynchronous. Where are you seeing this error. 
 
 
-------
 
Venny | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | TJW | 
		  
		    
			  
				 Posted: Thu Mar 13, 2003 1:24 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Novice
 
 Joined: 11 Dec 2002 Posts: 16 Location: UK 
  | 
		  
		    
			  
				I can replicate this error with both synchronous and asynchronous activities.  
 
 
If I specify a queue manager for the (still) undefined queue then the UPES activity generates the expected MQerror 2085 rather than crashing the execution server. Unfortunqtely this isn't a work around that I can use as it defines the UPES queue as local instead of clustered.
 
 
By the way, this is MQWF 3.3.2 SP 2 on WindowsNT ... yes I know SP3,4 and v3.4 are available but it isn't possible to upgrade the system just yet.
 
 
Below is a sample fdl that I've used to test the problem - it requires a local queue SYNCH_QUEUE to be defined otherwise the activity that uses it will also cause the execution server to fail  
 
 
 
 
   
	| Code: | 
   
  
	
 
/*
 
 *
 
 *  FDL definitions generated by MQSeries Workflow 
 
 *
 
 */
 
CODEPAGE 1252
 
FM_RELEASE V3R3 2
 
 
/*
 
 *  PROGRAMs
 
 */
 
PROGRAM 'Dummy'
 
  DESCRIPTION "Dummy application taking any data structure"
 
  STRUCTURES_FROM_ACTIVITY
 
  UNATTENDED
 
  WINNT EXE PATH_AND_FILENAME "c:\winnt\system32\cmd.exe"
 
    INHERIT ENVIRONMENT
 
    STYLE VISIBLE
 
    START FOREGROUND
 
END 'Dummy'
 
 
/*
 
 *  SERVERs
 
 */
 
SERVER 'BADUPES'
 
  DESCRIPTION "UPES using an undefined queue"
 
  RELATED_GROUP 'FMCGRP'
 
  RELATED_SYSTEM 'FMCSYS'
 
  TYPE USER_DEFINED_PROGRAM_EXECUTION_SERVER
 
    MQSYSTEM MQSERIES
 
    MESSAGE_FORMAT XML
 
    PHYSICAL_QUEUE_NAME "UNDEFINED_QUEUE"
 
    VERSION 3
 
    RELEASE 3
 
    LEVEL 0
 
END 'BADUPES'
 
 
SERVER 'SYNCH'
 
  DESCRIPTION "Dummy UPES used for synchronisation - QUEUE MUST EXIST"
 
  RELATED_GROUP 'FMCGRP'
 
  RELATED_SYSTEM 'FMCSYS'
 
  TYPE USER_DEFINED_PROGRAM_EXECUTION_SERVER
 
    MQSYSTEM MQSERIES
 
    MESSAGE_FORMAT XML
 
    PHYSICAL_QUEUE_NAME "SYNCH_QUEUE"
 
    VERSION 3
 
    RELEASE 3
 
    LEVEL 0
 
END 'SYNCH'
 
 
/*
 
 *  PROCESSes
 
 */
 
/*
 
 *  PROCESS SERTEST
 
 */
 
PROCESS 'SERTEST' ( 'Default Data Structure', 'Default Data Structure' )
 
  DESCRIPTION "Test serial processing when a queue does not exist"
 
  DO NOT PROMPT_AT_PROCESS_START
 
  WINDOW VIEW_REFERENCE_POINT XPOS 0 YPOS 378
 
  WINDOW SHOW ALL CONNECTORS
 
  WINDOW SHOW NO CONDITIONS
 
  SOURCE 1 XPOS -600 YPOS 600
 
  PROGRAM_ACTIVITY 'FINISH' ( 'Default Data Structure', 'Default Data Structure' )
 
    DESCRIPTION "If we get here then the test activity has been processed"
 
    START AUTOMATIC WHEN AT_LEAST_ONE CONNECTOR TRUE
 
    EXIT AUTOMATIC
 
    LAYOUT XPOS 600 YPOS 300
 
    NAME_POSITION XPOS 600 YPOS 225
 
    PRIORITY DEFINED_IN INPUT_CONTAINER
 
    PROGRAM 'Dummy'
 
    PROGRAM_EXECUTION_UNIT 'SYNCH.FMCSYS.FMCGRP'
 
    SYNCHRONIZATION NESTED
 
  END 'FINISH'
 
  PROGRAM_ACTIVITY 'LAUNCH' ( 'Default Data Structure', 'Default Data Structure' )
 
    DESCRIPTION "Activity to launch the UPES activity under test"
 
    START AUTOMATIC WHEN AT_LEAST_ONE CONNECTOR TRUE
 
    EXIT AUTOMATIC
 
    LAYOUT XPOS -400 YPOS 300
 
    NAME_POSITION XPOS -400 YPOS 225
 
    PRIORITY DEFINED_IN INPUT_CONTAINER
 
    PROGRAM 'Dummy'
 
    PROGRAM_EXECUTION_UNIT 'SYNCH.FMCSYS.FMCGRP'
 
    SYNCHRONIZATION NESTED
 
  END 'LAUNCH'
 
  PROGRAM_ACTIVITY 'TESTUPES' ( 'Default Data Structure', 'Default Data Structure' )
 
    DESCRIPTION "If clustered UPES queue used by this acitivity is undefined then it leads to execution server failure"
 
    START AUTOMATIC WHEN AT_LEAST_ONE CONNECTOR TRUE
 
    EXIT AUTOMATIC
 
    LAYOUT XPOS 100 YPOS 600
 
    NAME_POSITION XPOS 100 YPOS 525
 
    PRIORITY DEFINED_IN INPUT_CONTAINER
 
    PROGRAM 'Dummy'
 
    PROGRAM_EXECUTION_UNIT 'BADUPES.FMCSYS.FMCGRP'
 
    SYNCHRONIZATION NESTED
 
  END 'TESTUPES'
 
  CONTROL
 
    FROM 'LAUNCH' TO 'TESTUPES'
 
  CONTROL
 
    FROM 'TESTUPES' TO 'FINISH'
 
  DATA
 
    FROM SOURCE 1 TO 'LAUNCH'
 
    MAP '_STRUCT' TO '_STRUCT'
 
END 'SERTEST'
 
 | 
   
 
 | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | jmac | 
		  
		    
			  
				 Posted: Thu Mar 13, 2003 6:00 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Jedi Knight
 
 Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC 
  | 
		  
		    
			  
				Is there some reason why the UPES queue is not defined?
 
 
It seems to me that the solution to this is to make sure the queue is defined.  In the beginning there was an issue with the Execution server crashing when the queue was not defined, but we're talking V3.2 here.  
 
 
I know that the ES no longer dies for a synchronous UPES, but I can't say for sure about asynchronous, when the queue is not defined. _________________ John McDonald
 
RETIRED | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | TJW | 
		  
		    
			  
				 Posted: Thu Mar 13, 2003 6:57 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Novice
 
 Joined: 11 Dec 2002 Posts: 16 Location: UK 
  | 
		  
		    
			  
				The UPES queue is undefined because of an 'administrative error' (someone deleted the wrong queue). 
 
 
As mentioned previously the ES dies whether the activity is synchronous or asynchronous. 
 
 
An MQ2085 error would have enabled us to track the problem down much faster beacause the state of the UPES activity would have been recorded as InError. When the ES dies the workflow backs out to the previous activity, so it is not immediately obvious that the problem is with queue definitions. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | jmac | 
		  
		    
			  
				 Posted: Thu Mar 13, 2003 7:23 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Jedi Knight
 
 Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC 
  | 
		  
		    
			  
				TJW:
 
 
I am running V332 sp3 and when I start an instance whose first activity uses a Queue which is not existant the ES does not die, the Workitem goes into an "In Error" state with the following Error reason:
 
 
Error reason is: FMC32008E The program Dummy could not be started.
 
 
 
The system call MQPUT to OVISIT@FMCQM returned rc=2 and an error code of 2085.
 
 
 
I see nothing in the Readme of SP3 to indicate that this was new with SP3. _________________ John McDonald
 
RETIRED | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | TJW | 
		  
		    
			  
				 Posted: Thu Mar 13, 2003 7:28 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Novice
 
 Joined: 11 Dec 2002 Posts: 16 Location: UK 
  | 
		  
		    
			  
				I have just procured a test machine to see if the problem occurs on later service packs.
 
 
With 3.3.2 SP4, for both synchronous and asynchronous UPES, the ES no longer dies and the expected 2085 error is generated. 
 
 
Problem solved.
 
 
Hopefully we can move to SP4 before any more admin. errors     | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | 
		    
		   |