1. 20 Apr, 2018 6 commits
    • Jameson Rollins's avatar
      run tests before release · d56a204f
      Jameson Rollins authored
      d56a204f
    • Jameson Rollins's avatar
      daemon: add records for daemon loop times · a670f517
      Jameson Rollins authored
      Track time in main part of daemon loop (MAINTIME) and full loop time
      (LOOPTIME).
      a670f517
    • Jameson Rollins's avatar
      06f7b53d
    • Jameson Rollins's avatar
      single thread: move CAS processing out of separate thread into main daemon thread thread · 4c853b8b
      Jameson Rollins authored
      This is a fairly large overhaul of the original threading model that had
      the pcaspy portable channel access server in a separate thread.  We here
      bring the cas back in to the main thread, and process it's select loop at
      the top of the daemon main loop.
      
      Digging into the seg faults [0] with an instrumented address sanitizer
      versions of python and pcaspy we discovered that pcaspy is not thread safe.
      When run in a separate thread pcaspy was producing a strncpy
      heap-use-after-free when pushing the unit CTRL sub-record (gdb showed that
      it was in strncpy of the string "seconds", where the only use of "seconds"
      in guardian is in unit sub-record for EXECTIME).  Attempts to wrap guardian's
      reading and writing to cas driver records was not sufficient, and cas does
      not provide any hooks to locks for it's access either.  So why not try to
      get rid of the separate cas thread altogether...
      
      The cas.process() is moved in to the dead time at the top of the main daemon
      loop, where it was waiting for the clock tick. This has the side affect of actually
      synchonizing to the wall clock microsecond step (good?).
      
      The rest of the patch is just cleanup to remove all the old thread/lock
      stuff that is no longer needed, and to simplify the relevant interfaces.
      
      [0] https://alog.ligo-wa.caltech.edu/aLOG/index.php?callRep=40765
      4c853b8b
    • Jameson Rollins's avatar
      guardctrl: default GUARDCTRL_HOST = ${IFO}guardian · 6a553dc4
      Jameson Rollins authored
      remove the numeric suffix since we'll be using this base address to point
      to the correct host via DNS
      6a553dc4
    • Jameson Rollins's avatar
      test: more aggressive subprocess cleanup · 5e03fd74
      Jameson Rollins authored
      It looks like a lot of the test failures were due to "kill && wait" not
      actually/properly killing the backgrounded processes from the test, even
      though the test "completed" successfully.  The wait the never returns,
      and the whole test is then killed by timeout, which is equivalent to a fail.
      
      Here add a kill_jobs function to the local lib which aggressively kills
      all background processes.  This seems to have reduced spurious test failures
      considerably.
      5e03fd74
  2. 17 Apr, 2018 5 commits
  3. 15 Apr, 2018 7 commits
  4. 23 Mar, 2018 1 commit
  5. 21 Mar, 2018 1 commit
    • Jameson Rollins's avatar
      archive: context manager for repo · 260b7c30
      Jameson Rollins authored
      In some versions of git-python, the repo will hold open files in
      "git cat-file" subprocess calls.  The solution seems to be to delete the
      Repo object after use.
      
      This hopefully closes #4
      260b7c30
  6. 20 Mar, 2018 2 commits
  7. 16 Mar, 2018 1 commit
    • Jameson Rollins's avatar
      guardview: ncurses multi-node status view · ab252c80
      Jameson Rollins authored
      This is an urwid/ncurses based EPICS client program to show a status
      overview of many clients at once.  Connections for many nodes should happen
      fast, with status updates happening in callbacks.
      
      Needs some work, but mostly works as needed.
      ab252c80
  8. 09 Mar, 2018 4 commits
  9. 06 Mar, 2018 12 commits
  10. 05 Mar, 2018 1 commit