Check All Files in a Project

When you request a run, the FlowTracer server checks the timestamp of all primary inputs in the upcone of the target.

To check all files in the up-cone, instead of only the primary inputs, we recommend the VOV_VW_CHECK_UPCONE variable, which tells the wrapper to check all files in the up-cone at runtime.

To check the timestamps of all the files in a project, including therefore also all the intermediate files, use vovcheckfiles.

vovcheckfiles: Usage Message
     Check the timestamp of all files in a project.
     This is an expensive operation, so this script
     implements a semaphore to avoid concurrent checks.
      % vovcheckfiles  [OPTIONS]
      -v     -- Verbose
      -h     -- This help
      % vovcheckfiles -h
      % vovcheckfiles    
      % vovcheckfiles -v

If the timestamp of any file in the project has changed, for example by being modified by an editor or other program run outside of the flow, the vovserver is notified of the change. This may cause the down-cone of the modified file(s) to be marked INVALID.

Troubleshoot vovcheckfiles

Since different hosts can see different file attributes (and even existence) due to NFS caching, if multiple instances of the command run concurrently, the vovserver could receive conflicting information. Also, checking all the files in a large project is an expensive operation. Hence, the command tries to have only one instance running.

The command uses a property VOVCHECKFILES_SEM attached to the flow (i.e. the object with VovId 1) as a semaphore, and other properties to record the time it started, and the user@host:process-id. Except for the timestamp, the properties are deleted at the end of a normal run. If vovcheckfiles is interrupted, the semaphore property will be left on the flow. If the semaphore count is > 1, but the timestamp is old, vovcheckfiles will give a message stating this and start the check, instead of exiting.

You can see the state of the properties by using:
% vovprop get -default "" 1 VOVCHECKFILES_SEM