• Stan Hu's avatar
    Move feature flag list into process cache · 3c8efb6a
    Stan Hu authored
    When we switched from a single-threaded application server (Unicorn) to
    a multithreaded one (Puma), we did not realize that Puma often reaps
    threads after a request is done and recreates them later. This makes the
    thread-local cache ineffective, as the cache does not store anything
    beyond the lifetime of the thread.
    
    Since `ActiveSupport::Cache::MemoryStore` is thread-safe, we should be
    able to switch the L1 cache for the feature flag list to use this to
    reduce load on Redis.
    
    Since read and write access is synchronized, this does have the side
    effect of adding contention when feature flags are accessed.
    
    We made a similar change in
    https://gitlab.com/gitlab-org/gitlab/-/merge_requests/26935, and this
    seems to be working fine.
    
    Discovered in
    https://gitlab.com/gitlab-com/gl-infra/infrastructure/-/issues/9414
    3c8efb6a
feature_spec.rb 9.35 KB