1. 20 Dec, 2017 2 commits
  2. 18 Dec, 2017 3 commits
  3. 15 Dec, 2017 2 commits
  4. 14 Dec, 2017 2 commits
  5. 29 Nov, 2017 1 commit
  6. 28 Nov, 2017 2 commits
  7. 27 Nov, 2017 7 commits
  8. 25 Nov, 2017 2 commits
  9. 21 Nov, 2017 3 commits
  10. 20 Nov, 2017 3 commits
  11. 19 Nov, 2017 1 commit
  12. 16 Nov, 2017 2 commits
    • David Genest's avatar
      Optimized index regeneration · 0e9d2e36
      David Genest authored
      Index regeneration before this PR was causing a concurrency pile-up when
      many requests were coming in at a fast pace.  This was causing the time
      to return /index to always increase. The behavior was observed on a high
      latency connection to Google Cloud Storage, but would also occur with
      other network stores.
      
      With this PR, the regeneration time is constant and thus the serving of
      index.yaml is also constant.
      
      The implementation takes a general approach to first make initial
      network requests (to satisfy the object list from storage) and to pile
      up subsequent requests while the initial one is being completed. The
      same algorithm is used to update the in-memory cached index.  Note that
      these requests need not be protected by a lock because they are only
      ever executing on their own. See server.getChartList() for the
      implementaion of this idea.
      
      A refactor was needed to separate the fetch from the diff calculation to
      allow separate calling of the network heavy operations. While doing so,
      we also removed redundant calls to storage file list update.
      
      Also made small low-hanging fruit style optimisations to index
      manipulations.
      
      Added request ID to all requests for better debugging. This will be
      visible with the --debug flag. This was indispensable to diagnose
      complex concurrent processing.
      
      To test the before and after state, we have added the use of the
      locusti.io loadtesting engine. A simple README in the loadtesting/
      directory shows how to install locust (with pipenv) and loadtest
      chartmuseum. This will prove useful in the future.
      
      Fixes #18
      0e9d2e36
    • Christian Jauvin's avatar
      Add locust.io load testing script · 8075c86d
      Christian Jauvin authored
      8075c86d
  13. 14 Nov, 2017 1 commit
  14. 13 Nov, 2017 1 commit
    • Nikhil Manchanda's avatar
      Update project paths to kubernetes-helm/chartmuseum · e5d5b654
      Nikhil Manchanda authored
      Since ChartMuseum has moved to the kubernetes-helm incubator, it can
      now be found in GitHub under the kubernetes-helm project. In keeping
      with this, update the project paths from chartmuseum/chartmuseum to
      kubernetes-helm/chartmusuem.
      e5d5b654
  15. 08 Nov, 2017 2 commits
  16. 07 Nov, 2017 1 commit
    • David Genest's avatar
      Fix concurrency issue in presence of download errors · e619acd6
      David Genest authored
      Use channel based flow control to fix concurrency when a download error occurs. Read chartVersion from channel to add to the index as they arrive.
      
      Add context management to cancel any pending downloading goroutines.
      e619acd6
  17. 31 Oct, 2017 2 commits
  18. 30 Oct, 2017 1 commit
  19. 26 Oct, 2017 2 commits