Thursday, September 26, 2013

ERROR: "The mapping contains blocking transformations which may cause the mapping to hang while executing." when validating a PowerCenter mapping with multiple Joiner transformations
Problem Description
When validating a PowerCenter mapping with multiple joiners, the mapping is invalidated and the following message appears:
The mapping contains blocking transformations [Joiner_Name] which may cause the mapping to hang while executing.
What is the main Joiner Validation Rule?
Cause
This message indicates that one or more Joiner transformations may be blocked based on the master/detail relationship set up in the mapping.
Solution
The basic rule for this validation is that the active reader should not be blocked.

Example


S1 Source1
S2 Source2
D Detail
M Master
J1 Joiner1
J2 Joiner2
J3 Joiner3
In this example the validation for the first Joiner takes the master thread as a first reader (S2), so S2 is the active reader, and this reader will read data first.
When it attempts to start reading the data (as it is the master thread for J1), J2 is requesting to block (as it is a Detail thread in J2) which will cause the session to hang.

Example

If the master and detail reader is switched for the second Joiner (J2) as in the following example:
  
The first reader (S2 - evaluated based on the first Joiner master) will not be blocked because both threads which are linked to that particular reader are expecting data (requesting to read data).
Once that reader (S2) is finished reading the data, it will start the second reader (S1).
For the second reader, even though we have detail and master threads connecting to S1, both threads are expecting data, so this reading source will not be blocked.