<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/gitlab/gitlab-ce.git/lib/feature.rb, branch refactor_auto_devops_enabled</title>
<subtitle>gitlab.com: gitlab-org/gitlab-ce.git
</subtitle>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/gitlab/gitlab-ce.git/'/>
<entry>
<title>Cache Flipper feature flags in L1 and L2 caches</title>
<updated>2019-07-03T23:22:50+00:00</updated>
<author>
<name>Stan Hu</name>
<email>stanhu@gmail.com</email>
</author>
<published>2019-07-02T18:19:30+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/gitlab/gitlab-ce.git/commit/?id=2db7c5762b41acbcbd71bc4bd5a8aa3d90e1a383'/>
<id>2db7c5762b41acbcbd71bc4bd5a8aa3d90e1a383</id>
<content type='text'>
In https://gitlab.com/gitlab-com/gl-infra/production/issues/928, we saw
a significant amount of network traffic and CPU usage due to Redis
checking feature flags via Flipper. Since these flags are hit with every
request, the overhead becomes significant. To alleviate Redis overhead,
we now cache the data in the following way:

* L1: A thread-local memory store for 1 minute
* L2: Redis for 1 hour
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In https://gitlab.com/gitlab-com/gl-infra/production/issues/928, we saw
a significant amount of network traffic and CPU usage due to Redis
checking feature flags via Flipper. Since these flags are hit with every
request, the overhead becomes significant. To alleviate Redis overhead,
we now cache the data in the following way:

* L1: A thread-local memory store for 1 minute
* L2: Redis for 1 hour
</pre>
</div>
</content>
</entry>
<entry>
<title>Cache Flipper persisted names directly to local memory storage</title>
<updated>2019-07-02T14:26:27+00:00</updated>
<author>
<name>Stan Hu</name>
<email>stanhu@gmail.com</email>
</author>
<published>2019-07-02T13:58:47+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/gitlab/gitlab-ce.git/commit/?id=385aa46046ec83e6837c106576699f76e65876a7'/>
<id>385aa46046ec83e6837c106576699f76e65876a7</id>
<content type='text'>
Now that application settings are no longer dominating network traffic,
we see that the Feature#persisted_names is using a significant amount of
CPU and network bandwidth for Redis. Move this cache into the
thread-local memory storage to reduce Redis overhead.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now that application settings are no longer dominating network traffic,
we see that the Feature#persisted_names is using a significant amount of
CPU and network bandwidth for Redis. Move this cache into the
thread-local memory storage to reduce Redis overhead.
</pre>
</div>
</content>
</entry>
<entry>
<title>Cache feature flag names in Redis for a minute</title>
<updated>2019-06-18T20:59:18+00:00</updated>
<author>
<name>Stan Hu</name>
<email>stanhu@gmail.com</email>
</author>
<published>2019-06-18T20:50:46+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/gitlab/gitlab-ce.git/commit/?id=1b0c71ef8423cf20532953e58735dd7f61325e85'/>
<id>1b0c71ef8423cf20532953e58735dd7f61325e85</id>
<content type='text'>
We saw on GitLab.com, the SQL query, `SELECT "features"."key" FROM
"features"` peaked at 2300 times per second.

We can quiet this down a bit by caching it in Redis for a minute.

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/63435
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We saw on GitLab.com, the SQL query, `SELECT "features"."key" FROM
"features"` peaked at 2300 times per second.

We can quiet this down a bit by caching it in Redis for a minute.

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/63435
</pre>
</div>
</content>
</entry>
<entry>
<title>Allow setting feature flags per GitLab group</title>
<updated>2019-02-19T06:57:03+00:00</updated>
<author>
<name>James Edwards-Jones</name>
<email>jedwardsjones@gitlab.com</email>
</author>
<published>2019-02-07T20:27:03+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/gitlab/gitlab-ce.git/commit/?id=46f66c7f0aa5ddf2f8d996880936d88e6977f6c0'/>
<id>46f66c7f0aa5ddf2f8d996880936d88e6977f6c0</id>
<content type='text'>
Building on support for setting feature flags by project, this adds
support for setting them by GitLab group path.

This is different from setting them by Flipper feature_groups, which
are for batch updating pre-registered collections.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Building on support for setting feature flags by project, this adds
support for setting them by GitLab group path.

This is different from setting them by Flipper feature_groups, which
are for batch updating pre-registered collections.
</pre>
</div>
</content>
</entry>
<entry>
<title>Allow setting of feature gates per project</title>
<updated>2019-01-14T13:29:51+00:00</updated>
<author>
<name>Zeger-Jan van de Weg</name>
<email>git@zjvandeweg.nl</email>
</author>
<published>2019-01-07T10:07:14+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/gitlab/gitlab-ce.git/commit/?id=5396594a831de3f467f28c25c5856ba441b07ea7'/>
<id>5396594a831de3f467f28c25c5856ba441b07ea7</id>
<content type='text'>
For features the feature gates are sometimes projects, not groups or
users. For example for git object pools:
https://gitlab.com/gitlab-com/gl-infra/infrastructure/issues/5872

This commit allows for setting feature group gates based on projects, by its
path as that seems most convenient.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For features the feature gates are sometimes projects, not groups or
users. For example for git object pools:
https://gitlab.com/gitlab-com/gl-infra/infrastructure/issues/5872

This commit allows for setting feature group gates based on projects, by its
path as that seems most convenient.
</pre>
</div>
</content>
</entry>
<entry>
<title>Enable more frozen string in lib/**/*.rb</title>
<updated>2018-10-07T00:02:50+00:00</updated>
<author>
<name>gfyoung</name>
<email>gfyoung17@gmail.com</email>
</author>
<published>2018-10-06T23:10:08+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/gitlab/gitlab-ce.git/commit/?id=d598e4fd937797a7f7778f5b4158ebf73139ce7f'/>
<id>d598e4fd937797a7f7778f5b4158ebf73139ce7f</id>
<content type='text'>
Enables frozen for the following:

* lib/*.rb
* lib/banzai/**/*.rb
* lib/bitbucket/**/*.rb
* lib/constraints/**/*.rb
* lib/container_registry/**/*.rb
* lib/declarative_policy/**/*.rb

Partially addresses #47424.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Enables frozen for the following:

* lib/*.rb
* lib/banzai/**/*.rb
* lib/bitbucket/**/*.rb
* lib/constraints/**/*.rb
* lib/container_registry/**/*.rb
* lib/declarative_policy/**/*.rb

Partially addresses #47424.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor Feature.flipper method</title>
<updated>2018-10-05T14:20:19+00:00</updated>
<author>
<name>Douglas Barbosa Alexandre</name>
<email>dbalexandre@gmail.com</email>
</author>
<published>2018-10-05T14:20:19+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/gitlab/gitlab-ce.git/commit/?id=75ddf0d48d0fee6f9209376b0751d414946f9c67'/>
<id>75ddf0d48d0fee6f9209376b0751d414946f9c67</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor Feature.flipper method</title>
<updated>2018-09-24T19:29:22+00:00</updated>
<author>
<name>Michael Kozono</name>
<email>mkozono@gmail.com</email>
</author>
<published>2018-09-24T19:29:22+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/gitlab/gitlab-ce.git/commit/?id=74ae135888f55c17f6c53bcba9c1ca979a33724e'/>
<id>74ae135888f55c17f6c53bcba9c1ca979a33724e</id>
<content type='text'>
* Fix typo in context 'when request store is active'
* Rearrange test since the instance variable always gets set now,
even if RequestStore is active
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Fix typo in context 'when request store is active'
* Rearrange test since the instance variable always gets set now,
even if RequestStore is active
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplify by using Gitlab::SafeRequestStore</title>
<updated>2018-09-24T19:11:26+00:00</updated>
<author>
<name>Michael Kozono</name>
<email>mkozono@gmail.com</email>
</author>
<published>2018-09-20T19:32:54+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/gitlab/gitlab-ce.git/commit/?id=f107bc69e34f79ea8faaa154caefe56948b8dd68'/>
<id>f107bc69e34f79ea8faaa154caefe56948b8dd68</id>
<content type='text'>
These are clear wins.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These are clear wins.
</pre>
</div>
</content>
</entry>
<entry>
<title>remove guard clause and add comment on performace</title>
<updated>2018-09-05T14:26:13+00:00</updated>
<author>
<name>Brett Walker</name>
<email>bwalker@gitlab.com</email>
</author>
<published>2018-09-05T13:14:16+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/gitlab/gitlab-ce.git/commit/?id=e57d99947a8837ef3bfe20022f4c5b3ad735ec8f'/>
<id>e57d99947a8837ef3bfe20022f4c5b3ad735ec8f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
