1. 21 Jul, 2023 1 commit
  2. 20 Jul, 2023 2 commits
  3. 15 Jul, 2023 2 commits
  4. 09 Jul, 2023 8 commits
    • Nils Goroll's avatar
      e3a45409
    • Nils Goroll's avatar
      Handle a race between stvfe_mutate() and stvfe_dskoc_fco() · 73ae4228
      Nils Goroll authored
      In stvfe_dskoc_fco() we change the oc's stevedore to memstv only
      _after_ we have taken a refernce via fellow_cache_obj_get() and thus
      potentially put the fco onto the lru list.
      
      This order is important, because other requests racing on
      stvfe_dskoc_fco() need to also go through fellow_cache_obj_get() until
      the memstv object has been established for real.
      
      Yet this opens a window for a window where an fco is on LRU with
      oc->stobj->stevedore still set to dskstv, even without dirty reads,
      and even more so with dirty reads.
      
      Because any additional synchronization here could kill performance, we
      handle this outdated read in stvfe_mutate by not touching the object
      (yet). It will be hit the next time we iterate the LRU list.
      
      Fixes #13, hopefully.
      73ae4228
    • Nils Goroll's avatar
      Refactor local variables in stvfe_mutate() · 51cc35b3
      Nils Goroll authored
      51cc35b3
    • Nils Goroll's avatar
      Revert "Make memstv assertions even more precise" · 49b29e77
      Nils Goroll authored
      Flexelint does not approve of
      
      This reverts commit a1f5225e.
      49b29e77
    • Nils Goroll's avatar
      Make memstv assertions even more precise · a1f5225e
      Nils Goroll authored
      a1f5225e
    • Nils Goroll's avatar
      Make memstv assertions more precise · 3a83052b
      Nils Goroll authored
      Because of #14 I would like to understand if #13 is really a genuine
      bug or some odd consequence
      3a83052b
    • Nils Goroll's avatar
      Start a developer notes document · 72552f52
      Nils Goroll authored
      72552f52
    • Nils Goroll's avatar
      fellow: fini stevedore_priv / call fellow_busy_done() also for objfree · e56ad383
      Nils Goroll authored
      This bug was also present in varnish-cache (will document) and found
      its way into fellow through the api-definition-by-example paradigm of
      varnish-cache:
      
      In varnish-cache vbf_stp_error(), an existing storage object is freed
      to be replaced with a new one, potentially from a different storage
      (usually -sTransient).
      
      In this case, ObjBocDone is not called, because the boc is to be
      preserved - from the client's perspective, the backend transaction is
      still in progress, and the client is waiting for the busy object to
      finish.
      
      At the storage level, however, the process of creation of a new object
      _is_ finished, and any busy object state which the storage might keep
      needs to be finalized.
      
      So, if oc->boc is not NULL for an ObjFreeObj() call, the stevedore
      needs to finish any busy object transaction.
      
      Fixes #14
      e56ad383
  5. 23 Jun, 2023 2 commits
  6. 19 Jun, 2023 1 commit
  7. 17 Jun, 2023 2 commits
  8. 17 Apr, 2023 3 commits
  9. 10 Apr, 2023 2 commits
  10. 07 Apr, 2023 6 commits
  11. 27 Mar, 2023 1 commit
  12. 20 Mar, 2023 1 commit
  13. 02 Mar, 2023 5 commits
  14. 01 Mar, 2023 4 commits