latest bcftools outputs more header lines, apparently
Crypt::Random now required
added pid to log messages
added run_time() method to LSJS, which also now adds VRPIPE_LOCAL_JOBID env var when running jobs; LocalScheduler now outputs the run_time and cmd when listing jobs
new lock_row() method and alteration to do_transaction() fixes db update inconsistencies by forcing a transaction restart if not the first to get the lock, but detection method poor and may not work in production; _get() supports new blind_create option to create new rows without checking if they exist
updated test now that log() outputs pid as well
the current hack fix for do_transaction() means they must take at least 1 second, which makes many of these tests too slow to run; in practice it should not be a problem since these things occur in parallel, not in serial loops... I hope...
locking rows in transactions now done with new lock_row() method
added reselect_values_from_db() call before checking if metadata in prexisting instance changed (I do not know how this test ever worked before...)
use lock_row() in transaction; now properly checks if source _has_changed() during the lock/block phase
use lock_row() in transaction; log_event() now creates logs with blind_create option to avoid constant deadlocks and transaction restarts
use lock_row() in transaction; claim_and_run() now calls retry() if failed, has better edge-case handling, and now returns a list of response code and job instance
tweaks following changes to how Submission and Job behave