Detect Conflicts
If you make no mistakes, FlowTracer remains invisible. However, if in your design activity you accidentally violate dependency constraints, FlowTracer will alert you. FlowTracer will warn you if you try to execute a tool with invalid inputs.
-
Execute the following:
% touch aa % vw cp bb cc
In this case, the modification to aa invalidated bb and therefore made the request to run the job of copying bb to cc a wasted step because bb was no longer valid. When you request that job to be done, FlowTracer will prompt you as follows:FlowTracer: ATTENTION! Input conflict detected! FlowTracer: ATTENTION! FlowTracer: ATTENTION! Input conflict detected! FlowTracer: ATTENTION! ---------- User Decision Required --------------- INPUT CONFLICT for tool vw cp bb cc (directory ${HOME}/tutorial) The tool needs FILE:${HOME}/tutorial/bb which is currently INVALID 1 -- CONTINUE 2 -- STOP ASKING 3 -- (*) ABORT Please choose (1--3) >>>
Here you have the chance to abort from an operation that has to be redone anyway later, or continue as you would have without FlowTracer. At least you are aware that the computation is likely to be incorrect.
-
If you try to redefine the source of a file, FlowTracer
will ask you if you really want to change how the file is generated. Try the
following
% vw cp aa bb % vw cp bb cc % vw cp aa cc
Example of an output conflict :FlowTracer: ATTENTION! Output conflict detected! FlowTracer: ATTENTION! FlowTracer: ATTENTION! Output conflict detected! FlowTracer: ATTENTION! ---------- User Decision Required --------------- OUTPUT CONFLICT caused by data item FILE:${HOME}/tutorial/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) >>>
You can see that
cc
is already dependent onbb
. -
Answer 2 (Abort).
FlowTracer will also prevent you from creating cyclic dependencies.
% vw cp aa bb % vw cp bb cc % vw cp cc aa # whoops, a cycle (aa->bb->cc->aa)
Example of an cycle conflict :FlowTracer: ATTENTION! Cycle detected! FlowTracer: ATTENTION! FlowTracer: ATTENTION! Cycle detected! FlowTracer: ATTENTION! vw Mar 30 12:36:03 Failed FlowTracer call libconnect.cc,146 vw ERROR Mar 30 12:36:03 Cycle conflict for ${HOME}/tutorial/aa vw Mar 30 12:36:03 This tool invocation is now forgotten vw Mar 30 12:36:03 Serious dependency violation (status -3)