1. 05 May, 2019 1 commit
  2. 03 May, 2019 10 commits
    • Dridi Boukelmoune's avatar
      Help Coccinelle a tiny bit more · 06e7329d
      Dridi Boukelmoune authored
      It currently freaks out when it's not aware of a type, or when it
      encounters v_*_ macros in a function signature. This doesn't improve the
      results of the existing patches but we should take a habit of specifying
      where additional C includes are.
      06e7329d
    • Dridi Boukelmoune's avatar
      Swap isomorphism subjects · c722eb77
      Dridi Boukelmoune authored
      In this order it becomes possible to use VCL_VOID transparently as void
      without having to declare it again as a typedef. It doesn't matter for
      VRT_CTX because it tends to be easier to use it instead of its actual
      C type (with the typedef-in-patch penalty).
      
      Wave in my general direction if you're not slink and yet can make sense
      of the previous paragraph.
      c722eb77
    • Dridi Boukelmoune's avatar
      Timid start of Coccinelle type isomorphisms · 535192c3
      Dridi Boukelmoune authored
      This way we don't need to constantly deal with typedef ORing when we
      encounter a varnish-defined type. We still need to declare typedefs
      that we use, but it's already one order of magnitude more convenient.
      535192c3
    • Poul-Henning Kamp's avatar
      Simplifications · 2c8d4a78
      Poul-Henning Kamp authored
      2c8d4a78
    • Dridi Boukelmoune's avatar
      Verbosity no longer cycles through in varnishstat · f41055d3
      Dridi Boukelmoune authored
      Refs #2990
      f41055d3
    • Poul-Henning Kamp's avatar
      56c37d90
    • Nils Goroll's avatar
      update for #2471 · df909f16
      Nils Goroll authored
      df909f16
    • Nils Goroll's avatar
      no implicit warmup for manual temperature control · adf18f4d
      Nils Goroll authored
      As discussed during bugwash, we should be consistent about the manual
      temperature controls and not transition cold->warm, but rather fail.
      adf18f4d
    • Nils Goroll's avatar
      change semantics of the vcl 'auto' state and centralize vcl mgt · 424c7b85
      Nils Goroll authored
      Conceptually, the auto state was a variant of the warm state which
      would automatically cool the vcl. Yet, cooling did not only transition
      the temperature, but also the state, so 'auto' only worked one way -
      except that vcl.use or moving a label (by labeling another vcl) would
      also set 'auto', so a manual warm/cold setting would get lost.
      
      Now the auto-state will remain no matter the actual temperature or
      labeling, so when a vcl needs to implicitly change temperature (due to
      being used or being labeled), an auto vcl will remain auto, and a
      cold/warm vcl will change state, but never become 'auto' implicitly.
      
      The vcl state/temperature test v00003.vtc, besides testing the new
      auto semantics, now also checks for the right vcl.list output and has
      been reduced by a duplicate check (warm event check has been
      integrated into an existing warm event).
      
      On other code changes:
      
      * mgt_vcl_setstate
      
        is now only concerned with the state, the temperature will be
        changed implicitly if so required. The state will either end up
        changed or restored, depending on success.
      
        owner of changes to the (struct vclprog).state member
      
      * mgt_vcl_settemp
      
        responsible for the right action to change the temperature. For auto,
        it will only change the temperature, for non-auto, also the state.
      
        owner of changes to the (struct vclprog).warm member
      
      * mgt_vcl_tellchild
      
        Inform the child about a change and/or temperature change
      
      * mgt_vcl_set_cooldown
      
        Update the cooldown (go_cold) appropriately, should be called after
        a change/temperature change.
      
      Fixes #2834
      Closes #2801
      424c7b85
    • Nils Goroll's avatar
      Revert "Don't panic if you try to relabel a VCL with the same label." · e407f7c1
      Nils Goroll authored
      This reverts commit 4709fae3.
      e407f7c1
  3. 02 May, 2019 3 commits
    • Martin Blix Grydeland's avatar
      Resolve race on waitinglist rushing between HSH_Unbusy and boc->state · a280f82b
      Martin Blix Grydeland authored
      This is the second attempt at a fix for this, the previous one was
      reverted.
      
      When an object is ready for delivery, HSH_Unbusy was called before calling
      ObjSetState([BOS_STREAM|BOS_FINISHED]). The HSH_Unbusy() call does the
      waitinglist rushing, but HSH_Lookup() wanted to look at the boc->state and
      if BOS_STREAM had been reached. This could cause requests woken to find
      that the stream state still hadn't been reached (ObjSetState still hadn't
      executed), and go back on the waitinglist.
      
      To fix this, this patch reverts commit
      0375791c, and goes back to considering
      OC_F_BUSY as the gate keeper for HSH_Lookup. This eliminates the race,
      because HSH_Unbusy and HSH_Lookup then uses the same mutex.
      
      That change opens up the possiblity that req code after HSH_Lookup() sees
      an object that has not yet reached BOS_STREAM. To counter this, once a boc
      reference is found during delivery, an ObjWaitState(BOS_STREAM) is done
      before continuing.
      
      Lastly, an ObjSetState(BOS_PREP_STREAM) is added just before HSH_Unbusy()
      in vbf_stp_error() and vbf_stp_fetchend() for the case where
      do_stream==false. This makes the order of events consistent throughout.
      a280f82b
    • Martin Blix Grydeland's avatar
    • Martin Blix Grydeland's avatar
      Revert "Fix the order of HSH_Fail() and ObjSetState()" · cc06c227
      Martin Blix Grydeland authored
      This reverts commit 501246e9.
      cc06c227
  4. 30 Apr, 2019 6 commits
  5. 29 Apr, 2019 12 commits
  6. 27 Apr, 2019 2 commits
  7. 26 Apr, 2019 5 commits
    • Martin Blix Grydeland's avatar
      Fix the order of HSH_Fail() and ObjSetState() · 501246e9
      Martin Blix Grydeland authored
      The previous patch 4130055c went a bit too
      far in it's mission to reorder events, and included putting HSH_Fail()
      after ObjSetState(). That caused problems for code looking at the
      OC_F_FAILED to learn about failed fetches.
      
      Change the order of this back to normal, and move the call to HSH_Fail()
      into ObjSetState(), so that the order can be shown and the caveats
      properly commented.
      501246e9
    • Martin Blix Grydeland's avatar
      Revert "Remove a racy assert" · 865df54a
      Martin Blix Grydeland authored
      This reverts commit 462eab25.
      
      That assert was there for a good reason.
      865df54a
    • Martin Blix Grydeland's avatar
      Remove a racy assert · 462eab25
      Martin Blix Grydeland authored
      With the recent changes where HSH_Unbusy/HSH_Fail is called after
      ObjSetState, this assert becomes racy. Remove the assert.
      462eab25
    • Martin Blix Grydeland's avatar
      Tune test cases c97-c99 · 5db61e04
      Martin Blix Grydeland authored
      This reverts some of the previous attempts to get these test cases stable,
      as those attempts actually prevented the testing of the desired code
      paths.
      
      Also make the test cases wait until the required requests are on the
      waitinglist before continuing.
      5db61e04
    • Martin Blix Grydeland's avatar
      Resolve race on waitinglist rushing between OC_F_BUSY and boc->state · 4130055c
      Martin Blix Grydeland authored
      When an object is ready for delivery, HSH_Unbusy was called before calling
      ObjSetState([BOS_STREAM|BOS_FINISHED]). The HSH_Unbusy() call does the
      waitinglist rushing, but HSH_Lookup() wanted to look at the boc->state and
      if BOS_STREAM had been reached. This could cause requests woken to find
      that the stream state still hadn't been reached (ObjSetState still hadn't
      executed), and go back on the waitinglist.
      
      To fix this, this patch reverts commit
      0375791c, and goes back to considering
      OC_F_BUSY as the gate keeper for HSH_Lookup. This eliminates the race,
      because HSH_Unbusy and HSH_Lookup then uses the same mutex.
      
      That change opens up the possiblity that req code after HSH_Lookup() sees
      an object that has not yet reached BOS_STREAM. In order to not have to add
      new ObjWaitState() calls (with the additional locking cost that would
      bring) to wait for BOS_STREAM, the order of events is changed throughout,
      and calls ObjSetState([BOS_STREAM|BOS_FINISHED]) before HSH_Unbusy(). That
      way, an object returned from HSH_Lookup() is guaranteed to be at least
      BOS_STREAM.
      4130055c
  8. 25 Apr, 2019 1 commit