Navigation:  Intermediate Phase > Key Concepts II >

An important debugging concept

Early on when using Clover, I spent an embarrassing amount of time trying to debug a graph. In fact, had I read the Console output properly I would have wasted no time at all. However, I didn't and I did.

 

Take a quick look at the graph below.

 

DebugProperly

 

 

Notice that :

while the "Load Customer Name" and "Thrash" components have a '?' symbol
the Aggregate has a red '!' error symbol

 

What I did was to spend an awfully long time trying to figure out what was wrong with the "Load Customer Name" component. It had been fine so what had gone wrong with it suddenly? I ignored the Aggregate error on the basis that the Load Customer Name came before it in the graph.

 

WRONG!

 

In fact, all graph components in the same phase (see this link for an explanation) run in parallel. Components are multi-threaded. This means that data is arriving at the Aggregate component before it has necessarily been read in or processed by the earlier components. As soon as the Aggregate component throws its error (and this is where the real error was happening) the "Marshalling" component tells all other components "Stop what you are doing, there has been a disaster". So, the Load Customer Name had not finished processing which is why it gets stamped with the yellow '?'.

 

The earlier components upstream HAD finished processing and you can see that the debug record counts are set accordingly.

 

Moral of the story

Deal with the red '!'s and ignore the yellow '?'s.