<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ghProxy on Prow</title>
    <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/ghproxy/</link>
    <description>Recent content in ghProxy on Prow</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://deploy-preview-674--k8s-prow.netlify.app/docs/ghproxy/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ghCache</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/ghproxy/ghcache/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/ghproxy/ghcache/</guid>
      <description>&lt;h2 id=&#34;what&#34;&gt;What?&lt;/h2&gt;&#xA;&lt;p&gt;ghCache is an HTTP cache optimized for caching responses from the GitHub API (&lt;a href=&#34;https://api.github.com&#34;&gt;https://api.github.com&lt;/a&gt;).&#xA;Specifically, it has the following non-standard caching behavior:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Every cache hit is revalidated with a conditional HTTP request to GitHub&#xA;regardless of cache entry freshness (TTL).&#xA;The &amp;lsquo;Cache-Control&amp;rsquo; header is ignored and overwritten to achieve this.&lt;/li&gt;&#xA;&lt;li&gt;Concurrent requests for the same resource are coalesced and&#xA;share a single request/response from GitHub&#xA;instead of each request resulting in a corresponding upstream request and response.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;ghCache also provides prometheus instrumentation to expose cache activity,&#xA;request duration, and API token usage/savings.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Additional throttling algorithm</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/ghproxy/throttling-algorithm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/ghproxy/throttling-algorithm/</guid>
      <description>&lt;h2 id=&#34;motivation&#34;&gt;Motivation&lt;/h2&gt;&#xA;&lt;p&gt;An additional throttling algorithm was introduced to &lt;code&gt;ghproxy&lt;/code&gt; to prevent secondary rate&#xA;limiting issues (code &lt;code&gt;403&lt;/code&gt;) in large Prow installations, consisting of several organizations.&#xA;Its purpose is to schedule incoming requests to adjust to the GitHub general rate-limiting&#xA;&lt;a href=&#34;https://docs.github.com/en/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits&#34;&gt;guidelines&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;implementation&#34;&gt;Implementation&lt;/h2&gt;&#xA;&lt;p&gt;An incoming request is analyzed whether it is targeting GitHub API v3 or API v4.&#xA;Separate queues are formed not only per API but also per organization if Prow installation is&#xA;using GitHub Apps. If a user account in a form of the bot is used, every request coming&#xA;from that user account is categorized as coming from the same organization. This is due to&#xA;the fact, that such a request identifies not using &lt;code&gt;AppID&lt;/code&gt; and organization name, but &lt;code&gt;sha256&lt;/code&gt; token hash.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
