Conflict Detection

When executing the tools from the command line, it is possible to violate some of the dependency constraints. Without FlowTracer, conflicts go undetected, causing loss of data, tool failures, wasted time.

FlowTracer detects three types of conflicts:
  • Input Conflict
  • Output Conflict
  • Cycle Conflict

Input Conflict

An input conflict occurs whenever a job uses an input that is not VALID. The designer who has invoked the job is notified of the problem and given a chance to avoid it.

Here is an example where the user is trying to copy file 'bb' which is not up to date:
VOV: ATTENTION!  Input conflict detected! VOV: ATTENTION! 
VOV: ATTENTION!  Input conflict detected! VOV: ATTENTION! 

----------  User Decision Required  ---------------
INPUT CONFLICT for tool
vw cp bb cc
(directory ${HOME}/tmp)

The tool needs
FILE:${HOME}/tmp/bb
which is currently INVALID

1 --     CONTINUE
2 --     STOP ASKING
3 -- (*) ABORT
Please choose (1--3) >>>>

Output Conflict

An output conflict occurs when a job declares as output a file that is already the output of another job. Normally, a file can be the output of only one job.

The designer is asked to confirm the decision to forget the old job and replace it with the current one. In the following example, the designer has previously run vw cp bb cc and is currently running vw cp aa cc which changes the way of creating cc. FlowTracer prompts the user with this dialog:
VOV: ATTENTION!  Output conflict detected! VOV: ATTENTION! 
VOV: ATTENTION!  Output conflict detected! VOV: ATTENTION! 

----------  User Decision Required  ---------------
OUTPUT CONFLICT caused by data item
FILE:${HOME}/tmp/cc
Command lines are different.
Common part is 6 characters long.
'bb cc' != 'aa cc'.
^____      ^____  

1 --     CONTINUE
2 -- (*) ABORT
3 --     MORE INFO
Please choose (1--3) >>>>

Cycle Conflict

The graph cannot contain cycles, and the server must check each dependency declaration to ensure it does not introduce one. Cycle conflicts are rare, but when they occur, there is no choice other than abortion of the run.
VOV: ATTENTION!  Cycle detected! VOV: ATTENTION! 
VOV: ATTENTION!  Cycle detected! VOV: ATTENTION! 
vw Jun 07 15:01:00 Failed VOV call libconnect.cc,152

vw ERROR Jun 07 15:01:00 Cycle conflict for ${HOME}/tmp/aa
vw Jun 07 15:01:00 This job 008269147 must be forgotten

Control Conflict Detection

Conflict detection cannot be disabled. What you can do is to avoid the waiting for user input caused by the pop-up dialogs. This can be controlled by the environment variable VOV_CONFLICT_CONTROL, which can take either the value ABORT or CONTINUE.

During automatic retracing, VOV_CONFLICT_CONTROL is always set to ABORT.