1. 20 Dec, 2019 4 commits
    • Martin Blix Grydeland's avatar
      Log using SLT_Notice on condfetch streaming delay · 9bf8e871
      Martin Blix Grydeland authored
      Log a notice message when delaying a conditional fetch and the stale
      template object is still streaming.
      9bf8e871
    • Martin Blix Grydeland's avatar
      Add a SLT_Notice VSL tag · 4c5aba28
      Martin Blix Grydeland authored
      This VSL tag will be used for informational messages related to
      exceptional handling of requests.
      4c5aba28
    • Martin Blix Grydeland's avatar
      Conditional fetch wait for streaming stale object · 98dc20f4
      Martin Blix Grydeland authored
      Wait for the stale object to become fully fetched, so that we can catch
      fetch errors, before we unbusy the new object. This serves two
      purposes. First it helps with request coalescing, and stops long chains of
      IMS-updated short-TTL objects all streaming from a single slow body
      fetch. Second it makes sure that all the object attributes are complete
      when we copy them (this would be an issue for ie OA_GZIPBITS).
      
      This patch OBE's r01646.vtc, and slightly patches r01648.vtc to expect a
      503 instead of a 200 and a broken connection on the failing client.
      
      Fixes: #3089
      98dc20f4
    • Dridi Boukelmoune's avatar
      Avoid loose vocabulary around VCL sub · 17457b48
      Dridi Boukelmoune authored
      The code base and documentation refer to ``sub`` symbols as:
      
      - subroutines
      - functions
      - methods
      - procedures
      - callbacks
      
      This change focuses on always referring to them as subroutines in the
      documentation. During this documentation sweep, there were a lot of
      false positives since VCL, VMODs and HTTP also share that vocabulary
      and I may have missed false negatives, especially for generated bits
      of documentation.
      
      Some parts of the documentation were not touched on purpose: upgrade
      notes and changelogs of past releases, PHK random outbursts, etc.
      
      Now that the documentation is hopefully taken care of the same needs
      to happen in the code base, starting with user-facing error messages
      and then data structures names, function names etc.
      
      There will be however one exception. Anything referring to the scope
      of a subroutine, but being worded as if it referred to the subroutine
      itself will use scope instead.
      
      As this will touch a lot of code, it will be done incrementally, much
      like this change focused on non-generated documentation (and VCC files
      don't count as generated in this context).
      
      I also fixed RST formatting issues I noticed during my sweep.
      
      Better diff with the --word-diff --ignore-all-space options.
      17457b48
  2. 19 Dec, 2019 4 commits
  3. 18 Dec, 2019 1 commit
    • Dridi Boukelmoune's avatar
      Improve the VCL recursive sub calls error message · db0baa74
      Dridi Boukelmoune authored
      Before:
      
          ...called from "foo"
          ('<vcl.inline>' Line 5 Pos 27)
                  sub bar { call foo; }
          --------------------------#--
      
      After:
      
          ...called from "bar"
          ('<vcl.inline>' Line 5 Pos 24)
                  sub bar { call foo; }
          -----------------------###---
      
      This fixes the "called from" part of the message to refer to the caller
      instead of the callee, and underlines the symbol token instead of the
      semi-colon.
      db0baa74
  4. 17 Dec, 2019 3 commits
  5. 16 Dec, 2019 14 commits
  6. 15 Dec, 2019 1 commit
  7. 13 Dec, 2019 4 commits
  8. 12 Dec, 2019 4 commits
  9. 11 Dec, 2019 4 commits
    • Dridi Boukelmoune's avatar
      Rename obscure symbol variables · 6d1a3028
      Dridi Boukelmoune authored
      Every time I read this code I fail to remember which symbol is which, so
      from now on the instance symbol will be called isym, the object symbol
      osym and the method symbols msym.
      6d1a3028
    • Dridi Boukelmoune's avatar
      Whitespace OCD · 1a6a6e8e
      Dridi Boukelmoune authored
      They fit within 80 columns.
      1a6a6e8e
    • Dridi Boukelmoune's avatar
      Omit the separator in VCC functions extra arguments · 12a16117
      Dridi Boukelmoune authored
      Instead, the comma is emitted when there is indeed an extra argument.
      
      This change was initially submitted in #3147 and is needed when the
      extra argument may vary for a given symbol. More specifically, when
      a method symbol may be shared by several instance symbols, it becomes
      really difficult to find a spot where that extra comma might be added.
      
      Removing it from the extra argument itself makes this easier once we
      reach the point where method symbols are unique (per object) instead
      of repeated (per instance).
      12a16117
    • Dridi Boukelmoune's avatar
      Align symbol table columns in the generated C code · 77d5d0f0
      Dridi Boukelmoune authored
      At the end of the VGC we output the contents of the symbol table inside
      a C comment. It might look like this:
      
          /*
           * Symbol Table
           *
           * reserved  VOID       41 41 acl
           * reserved  VOID       41 41 backend
           * action    VOID       40 41 ban
           * var       HTTP        0 99 bereq
           * var       BACKEND     0 99 bereq.backend
           * [...]
           */
      
      All columns are currently aligned because we know all the native VCL
      types and only the last column with the symbol names has unpredictable
      and arbitrary entries lengths.
      
      However, considering the following snippet:
      
          new fb = directors.fallback();
      
      The involved symbols will look like:
      
          object    VOID      41 41 directors.fallback
          instance  INSTANCE  41 41 fb
          func      VOID      40 41 fb.add_backend
          func      BACKEND   40 41 fb.backend
          func      VOID      40 41 fb.remove_backend
      
      In the future VMOD objects will likely grow their own types and for the
      same snippet we may have this instead:
      
          object    directors.fallback  41 41 directors.fallback
          method    VOID                40 41 directors.fallback.add_backend
          method    BACKEND             40 41 directors.fallback.backend
          method    VOID                40 41 directors.fallback.remove_backend
          instance  directors.fallback  41 41 fb
      
      This change was initially submitted as part of #3147, but was considered
      trivial and fast-track-able by PHK.
      77d5d0f0
  10. 09 Dec, 2019 1 commit