<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Reference on PIG.CENTER</title><link>https://pig.center/categories/reference/</link><description>Recent content in Reference on PIG.CENTER</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Tue, 08 Sep 2026 21:29:01 +0800</lastBuildDate><atom:link href="https://pig.center/categories/reference/index.xml" rel="self" type="application/rss+xml"/><item><title>pgBadger 13.x Release Notes</title><link>https://pig.center/docs/pgbadger/releases/13/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbadger/releases/13/</guid><description>&lt;p&gt;These entries preserve the complete upstream change record for pgBadger 13.x, newest first.&lt;/p&gt;&#10;&lt;h2 id="v13-2"&gt;v13.2 · 2025-12-29&#10;&lt;/h2&gt;&#10;&lt;p&gt;This is a maintenance release of pgBadger that fixes issues and applied patches&#10;reported by users since last release.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Fix normalization that was not handling properly balanced single-quoted&#10;strings along with escaped quotes inside. Thanks to Bertrand Bourgier for&#10;the report.&lt;/li&gt;&#10;&lt;li&gt;Fix placeholder requirements in the doc.&lt;/li&gt;&#10;&lt;li&gt;Fix case where no error sample log entries was reported. Thanks to john doe&#10;for the report.&lt;/li&gt;&#10;&lt;li&gt;Fix possible precedence problem between ! and %s. Thanks to Luca Santarelli&#10;and Philipp Trulson for the report.&lt;/li&gt;&#10;&lt;li&gt;Update pgFormatter code to v5.9&lt;/li&gt;&#10;&lt;li&gt;Add github CI action for testing on commit push.&lt;/li&gt;&#10;&lt;li&gt;Fix parsing of %r placeholder in log_line_prefix. Thanks to nike7o0 for the&#10;report.&lt;/li&gt;&#10;&lt;li&gt;Fix uninitialized value warning. Thanks to Ales Zeleny for the report.&lt;/li&gt;&#10;&lt;li&gt;Enhance docs of ssh-options for postgres log parsing with examples. Thanks&#10;to Ulrich Konrad for the patch.&lt;/li&gt;&#10;&lt;li&gt;Add command &amp;ndash;ssh-sudo to run commands over ssh as sudo. Thanks to Andrew&#10;Jackson for the patch.&lt;/li&gt;&#10;&lt;li&gt;Fix possible precedence problem between ! and string eq. Thanks to Adrien&#10;Nayrat for the report.&lt;/li&gt;&#10;&lt;li&gt;Fix parsing of pgbouncer stats. Thanks to mrgtt for the report.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="v13-1"&gt;v13.1 · 2025-03-16&#10;&lt;/h2&gt;&#10;&lt;p&gt;This is a maintenance release of pgBadger that fixes issues reported by&#10;users since last release and adds some new features:&lt;/p&gt;</description></item><item><title>Annotate Command (annotate)</title><link>https://pig.center/docs/pgbackrest/command/annotate/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/annotate/</guid><description>&lt;p&gt;Annotations included with the &lt;code&gt;backup&lt;/code&gt; command can be added, modified, or removed afterwards using the &lt;code&gt;annotate&lt;/code&gt; command.&lt;/p&gt;&#10;&lt;h2 id="command-options"&gt;Command Options&#10;&lt;/h2&gt;&#10;&lt;h3 id="backup-annotation-option---annotation"&gt;Backup Annotation Option (&lt;code&gt;--annotation&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;Annotate backup with user-defined key/value pairs.&lt;/p&gt;&#10;&lt;p&gt;Users can attach informative key/value pairs to the backup. This option may be used multiple times to attach multiple annotations.&lt;/p&gt;&#10;&lt;p&gt;Annotations are output by the &lt;code&gt;info&lt;/code&gt; command text output when a backup is specified with &lt;code&gt;--set&lt;/code&gt; and always appear in the JSON output.&lt;/p&gt;</description></item><item><title>Dynamic Configuration Settings</title><link>https://pig.center/docs/patroni/config/dynamic/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/patroni/config/dynamic/</guid><description>&lt;p&gt;&lt;a id="dynamic"&gt;&lt;/a&gt;&#10;Dynamic configuration is stored in the DCS (Distributed Configuration Store) and applied on all cluster nodes.&lt;/p&gt;&#10;&lt;p&gt;In order to change the dynamic configuration you can use either &lt;a href="https://pig.center/docs/patroni/patronictl/#patronictl_edit_config"&gt;patronictl_edit_config&lt;/a&gt;&#10; tool or Patroni &lt;a href="https://pig.center/docs/patroni/rest_api/#rest_api"&gt;REST API&lt;/a&gt;&#10;.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;loop_wait&lt;/strong&gt;: the number of seconds the loop will sleep. Default value: 10, minimum possible value: 1&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;ttl&lt;/strong&gt;: the TTL to acquire the leader lock (in seconds). Think of it as the length of time before initiation of the automatic failover process. Default value: 30, minimum possible value: 20&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;retry_timeout&lt;/strong&gt;: timeout for DCS and PostgreSQL operation retries (in seconds). DCS or network issues shorter than this will not cause Patroni to demote the leader. Default value: 10, minimum possible value: 3&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="td-callout td-callout--warning" role="note"&gt;&#10; &lt;div class="td-callout__title"&gt;&lt;i class="td-callout__icon fa-solid fa-triangle-exclamation" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="td-callout__label"&gt;Warning&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="td-callout__body"&gt;&#10;&lt;p&gt;when changing values of &lt;strong&gt;loop_wait&lt;/strong&gt;, &lt;strong&gt;retry_timeout&lt;/strong&gt;, or &lt;strong&gt;ttl&lt;/strong&gt; you have to follow the rule:&lt;/p&gt;</description></item><item><title>News</title><link>https://pig.center/docs/pgbackrest/news/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/news/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="release-2-59-1"&gt;pgBackRest 2.59.1 Released&#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;August 17, 2026&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;The pgBackRest community is pleased to announce the release of &lt;a href="https://pgbackrest.org"&gt;pgBackRest&lt;/a&gt;&#10; 2.59.1, the latest version of the reliable, easy-to-use backup and restore solution that can seamlessly scale up to the largest databases and workloads.&lt;/p&gt;&#10;&lt;p&gt;pgBackRest supports a robust set of features for managing your backup and recovery infrastructure, including: parallel backup/restore, full/differential/incremental backups, block incremental backup, multiple repositories, delta restore, parallel asynchronous archiving, malware/ransomware protection, per-file checksums, page checksums (when enabled) validated during backup, multiple compression types, encryption, partial/failed backup resume, backup from standby, tablespace and link support, S3/Azure/GCS/SFTP support, backup expiration, local/remote operation via SSH or TLS, flexible configuration, and more.&lt;/p&gt;</description></item><item><title>YAML Configuration Settings</title><link>https://pig.center/docs/patroni/config/yaml/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/patroni/config/yaml/</guid><description>&lt;p&gt;&lt;a id="yaml"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="globaluniversal"&gt;Global/Universal&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;thread_pool_size&lt;/strong&gt;: size of thread pool used by Patroni to execute asynchronous tasks and communicate via REST API with other members during leader race or failsafe checks. Minimal value is &lt;code&gt;5&lt;/code&gt;, default value is &lt;code&gt;5&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;thread_stack_size&lt;/strong&gt;: specifies the stack size to be used for threads started by Patroni. Value must be aligned by &lt;code&gt;64kB&lt;/code&gt;. Minimal value is &lt;code&gt;64kB&lt;/code&gt;, default value (set by Patroni) is &lt;code&gt;512kB&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;name&lt;/strong&gt;: the name of the host. Must be unique for the cluster. The value &lt;code&gt;__patroni_strict_sync_replica_placeholder__&lt;/code&gt; is reserved for internal use by Patroni and cannot be used as a node name.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;namespace&lt;/strong&gt;: path within the configuration store where Patroni will keep information about the cluster. Default value: &amp;ldquo;/service&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;scope&lt;/strong&gt;: cluster name&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a id="log_settings"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>pgBadger 12.x Release Notes</title><link>https://pig.center/docs/pgbadger/releases/12/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbadger/releases/12/</guid><description>&lt;p&gt;These entries preserve the complete upstream change record for pgBadger 12.x, newest first.&lt;/p&gt;&#10;&lt;h2 id="v12-4"&gt;v12.4 · 2023-12-25&#10;&lt;/h2&gt;&#10;&lt;p&gt;This is a maintenance release of pgBadger that fixes issues reported by&#10;users since last release.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Fix pgbouncer report with version 1.21. Thanks to Ales Zeleny for the patch.&lt;/li&gt;&#10;&lt;li&gt;Prevent parallelism perl file to be higher than the number of files. Thanks&#10;to maliangzhu for the report.&lt;/li&gt;&#10;&lt;li&gt;Fix regression test broken since v12.3. Thanks to ieshin for the report.&lt;/li&gt;&#10;&lt;li&gt;Fix cases where LOG entries where counted as ERROR log level entries. Thanks&#10;to Matti Linnanvuori for the report.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="v12-3"&gt;v12.3 · 2023-11-27&#10;&lt;/h2&gt;&#10;&lt;p&gt;This is a maintenance release of pgBadger that fixes issues reported by&#10;users since last release. It also adds some new features:&lt;/p&gt;</description></item><item><title>Archive Get Command (archive-get)</title><link>https://pig.center/docs/pgbackrest/command/archive-get/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/archive-get/</guid><description>&lt;p&gt;This command is used by PostgreSQL to restore a backup, perform PITR, or as an alternative to streaming for keeping a replica up to date. WAL segments are required for PostgreSQL recovery or to maintain a replica.&lt;/p&gt;&#10;&lt;p&gt;When multiple repositories are configured, WAL will be fetched from the repositories in priority order (e.g. &lt;code&gt;repo1&lt;/code&gt;, &lt;code&gt;repo2&lt;/code&gt;, etc.). In general it is better if faster/cheaper storage has higher priority. If a repository is specified with the &lt;code&gt;--repo&lt;/code&gt; option then only that repository will be searched.&lt;/p&gt;</description></item><item><title>Configuration: pgbouncer.ini</title><link>https://pig.center/docs/pgbouncer/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbouncer/config/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="description"&gt;Description&#10;&lt;/h2&gt;&#10;&lt;p&gt;The configuration file is in &amp;ldquo;ini&amp;rdquo; format. Section names are between &lt;code&gt;[&lt;/code&gt; and &lt;code&gt;]&lt;/code&gt;. Lines starting with &lt;code&gt;;&lt;/code&gt; or &lt;code&gt;#&lt;/code&gt; are taken as comments and ignored. The characters &lt;code&gt;;&lt;/code&gt; and &lt;code&gt;#&lt;/code&gt; are not recognized as special when they appear later in the line.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="generic-settings"&gt;Generic settings&#10;&lt;/h2&gt;&#10;&lt;h3 id="logfile"&gt;logfile&#10;&lt;/h3&gt;&#10;&lt;p&gt;Specifies the log file. For daemonization (&lt;code&gt;-d&lt;/code&gt;), either this or &lt;code&gt;syslog&lt;/code&gt; need to be set.&lt;/p&gt;</description></item><item><title>pgBadger 11.x Release Notes</title><link>https://pig.center/docs/pgbadger/releases/11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbadger/releases/11/</guid><description>&lt;p&gt;These entries preserve the complete upstream change record for pgBadger 11.x, newest first.&lt;/p&gt;&#10;&lt;h2 id="v11-8"&gt;v11.8 · 2022-04-08&#10;&lt;/h2&gt;&#10;&lt;p&gt;This release of pgBadger fix some issues reported by users since past&#10;three months and especially two fixes on new log entries detection in&#10;incremental mode.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Fix detection of new log entries with timestamp when millisecond (%m) or&#10;epoch (%n) was used in log_line_prefix.&lt;/li&gt;&#10;&lt;li&gt;Fix detection of new log entries in local file when multiprocess was not&#10;used.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Here is the complete list of changes and acknowledgments:&lt;/p&gt;</description></item><item><title>Archive Push Command (archive-push)</title><link>https://pig.center/docs/pgbackrest/command/archive-push/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/archive-push/</guid><description>&lt;p&gt;Accepts a WAL segment from PostgreSQL and archives it in each repository defined by the indexed &lt;code&gt;repo-path&lt;/code&gt; option (see the &lt;a href="https://pig.center/docs/pgbackrest/configuration/#repository-options"&gt;Repository&lt;/a&gt;&#10; section for information on configuring repositories). The WAL segment may be pushed immediately to the archive or stored locally depending on the value of &lt;code&gt;archive-async&lt;/code&gt;. With multiple repositories configured, &lt;code&gt;archive-push&lt;/code&gt; will attempt to push to as many repositories as possible.&lt;/p&gt;&#10;&lt;p&gt;The &lt;code&gt;archive-push&lt;/code&gt; is intended to be configured and called by PostgreSQL. See &lt;a href="https://pig.center/docs/pgbackrest/user-guide/#configure-archiving"&gt;Configure Archiving&lt;/a&gt;&#10; for an example.&lt;/p&gt;</description></item><item><title>Command-Line Reference</title><link>https://pig.center/docs/pgbadger/command-line/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbadger/command-line/</guid><description>&lt;p&gt;This page preserves the command reference generated from the pinned upstream source. Option names and help text remain verbatim so they can be compared directly with &lt;code&gt;pgbadger --help&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h2 id="usage-and-options"&gt;Usage and options&#10;&lt;/h2&gt;&#10;&lt;p&gt;Usage: pgbadger [options] logfile [&amp;hellip;]&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-94f7536e-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="text" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-94f7536e-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PostgreSQL log analyzer with fully detailed reports and graphs.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Arguments:&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-94f7536e-fence-1" data-td-code data-td-code-auto-id&#10; data-td-language="text" data-td-line-count="3"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-94f7536e-fence-1-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;logfile can be a single log file, a list of files, or a shell command&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;returning a list of files. If you want to pass log content from stdin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;use - as filename. Note that input from stdin will not work with csvlog.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Options:&lt;/p&gt;</description></item><item><title>Environment Configuration Settings</title><link>https://pig.center/docs/patroni/config/env/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/patroni/config/env/</guid><description>&lt;p&gt;&lt;a id="env"&gt;&lt;/a&gt;&#10;It is possible to override some of the configuration parameters defined in the Patroni configuration file using the system environment variables. This document lists all environment variables handled by Patroni. The values set via those variables always take precedence over the ones set in the Patroni configuration file.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="globaluniversal"&gt;Global/Universal&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_CONFIGURATION&lt;/strong&gt;: it is possible to set the entire configuration for the Patroni via &lt;a href="https://pig.center/docs/patroni/config/#config"&gt;PATRONI_CONFIGURATION&lt;/a&gt;&#10; environment variable. In this case any other environment variables will not be considered!&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_THREAD_POOL_SIZE&lt;/strong&gt;: size of thread pool used by Patroni to execute asynchronous tasks and communicate via REST API with other members during leader race or failsafe checks. Minimal value is &lt;code&gt;5&lt;/code&gt;, default value is &lt;code&gt;5&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_THREAD_STACK_SIZE&lt;/strong&gt;: specifies the stack size to be used for threads started by Patroni. Value must be aligned by &lt;code&gt;64kB&lt;/code&gt;. Minimal value is &lt;code&gt;64kB&lt;/code&gt;, default value (set by Patroni) is &lt;code&gt;512kB&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_NAME&lt;/strong&gt;: name of the node where the current instance of Patroni is running. Must be unique for the cluster. The value &lt;code&gt;__patroni_strict_sync_replica_placeholder__&lt;/code&gt; is reserved for internal use by Patroni and cannot be used as a node name.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_NAMESPACE&lt;/strong&gt;: path within the configuration store where Patroni will keep information about the cluster. Default value: &amp;ldquo;/service&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_SCOPE&lt;/strong&gt;: cluster name&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PG_MALLOC_ARENA_MAX&lt;/strong&gt;: custom value for &lt;code&gt;MALLOC_ARENA_MAX&lt;/code&gt; environment variable for &lt;code&gt;postmaster&lt;/code&gt; process. If not set, &lt;code&gt;postmaster&lt;/code&gt; will inherit &lt;code&gt;MALLOC_ARENA_MAX&lt;/code&gt; value.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="log"&gt;Log&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_TYPE&lt;/strong&gt;: sets the format of logs. Can be either &lt;strong&gt;plain&lt;/strong&gt; or &lt;strong&gt;json&lt;/strong&gt;. To use &lt;strong&gt;json&lt;/strong&gt; format, you must have the &lt;a href="https://pig.center/docs/patroni/installation/#extras"&gt;jsonlogger&lt;/a&gt;&#10; installed. The default value is &lt;strong&gt;plain&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_LEVEL&lt;/strong&gt;: sets the general logging level. Default value is &lt;strong&gt;INFO&lt;/strong&gt; (see &lt;a href="https://docs.python.org/3.6/library/logging.html#levels"&gt;the docs for Python logging&lt;/a&gt;&#10;)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_TRACEBACK_LEVEL&lt;/strong&gt;: sets the level where tracebacks will be visible. Default value is &lt;strong&gt;ERROR&lt;/strong&gt;. Set it to &lt;strong&gt;DEBUG&lt;/strong&gt; if you want to see tracebacks only if you enable &lt;strong&gt;PATRONI_LOG_LEVEL=DEBUG&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_FORMAT&lt;/strong&gt;: sets the log formatting string. If the log type is &lt;strong&gt;plain&lt;/strong&gt;, the log format should be a string. Refer to &lt;a href="https://docs.python.org/3.6/library/logging.html#logrecord-attributes"&gt;the LogRecord attributes&lt;/a&gt;&#10; for available attributes. If the log type is &lt;strong&gt;json&lt;/strong&gt;, the log format can be a list in addition to a string. Each list item should correspond to LogRecord attributes. Be cautious that only the field name is required, and the &lt;strong&gt;%(&lt;/strong&gt; and &lt;strong&gt;)&lt;/strong&gt; should be omitted. If you wish to print a log field with a different key name, use a dictionary where the dictionary key is the log field, and the value is the name of the field you want to be printed in the log. Default value is &lt;strong&gt;%(asctime)s %(levelname)s: %(message)s&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_DATEFORMAT&lt;/strong&gt;: sets the datetime formatting string. (see the &lt;a href="https://docs.python.org/3.6/library/logging.html#logging.Formatter.formatTime"&gt;formatTime() documentation&lt;/a&gt;&#10;)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_STATIC_FIELDS&lt;/strong&gt;: add additional fields to the log. This option is only available when the log type is set to &lt;strong&gt;json&lt;/strong&gt;. Example &lt;code&gt;PATRONI_LOG_STATIC_FIELDS=&amp;quot;{app: patroni}&amp;quot;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_MAX_QUEUE_SIZE&lt;/strong&gt;: Patroni is using two-step logging. Log records are written into the in-memory queue and there is a separate thread which pulls them from the queue and writes to stderr or file. The maximum size of the internal queue is limited by default by &lt;strong&gt;1000&lt;/strong&gt; records, which is enough to keep logs for the past 1h20m.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_DIR&lt;/strong&gt;: Directory to write application logs to. The directory must exist and be writable by the user executing Patroni. If you set this env variable, the application will retain 4 25MB logs by default. You can tune those retention values with &lt;code&gt;PATRONI_LOG_FILE_NUM&lt;/code&gt; and &lt;code&gt;PATRONI_LOG_FILE_SIZE&lt;/code&gt; (see below).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_MODE&lt;/strong&gt;: Permissions for log files (for example, &lt;code&gt;0644&lt;/code&gt;). If not specified, permissions will be set based on the current umask value.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_FILE_NUM&lt;/strong&gt;: The number of application logs to retain.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_FILE_SIZE&lt;/strong&gt;: Size of patroni.log file (in bytes) that triggers a log rolling.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_LOGGERS&lt;/strong&gt;: Redefine logging level per python module. Example &lt;code&gt;PATRONI_LOG_LOGGERS=&amp;quot;{patroni.postmaster: WARNING, urllib3: DEBUG}&amp;quot;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_DEDUPLICATE_HEARTBEAT_LOGS&lt;/strong&gt;: If set to &lt;code&gt;true&lt;/code&gt;, successive heartbeat logs that are identical shall not be output. Default value is &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="td-callout td-callout--warning" role="note"&gt;&#10; &lt;div class="td-callout__title"&gt;&lt;i class="td-callout__icon fa-solid fa-triangle-exclamation" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="td-callout__label"&gt;Warning&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="td-callout__body"&gt;&#10;&lt;p&gt;The time the HA loop executes at can be very valuable information in diagnosing failovers due to resource exhaustion and similar problems. When &lt;code&gt;PATRONI_LOG_DEDUPLICATE_HEARTBEAT_LOGS&lt;/code&gt; is set to &lt;code&gt;true&lt;/code&gt; there will be no log generated for the HA loop execution (unless the leader changes) and hence this potentially useful information will not be available from the logs.&lt;/p&gt;</description></item><item><title>Patroni configuration</title><link>https://pig.center/docs/patroni/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/patroni/config/</guid><description>&lt;p&gt;&lt;a id="config"&gt;&lt;/a&gt;&#10;There are 3 types of Patroni configuration:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Global &lt;a href="https://pig.center/docs/patroni/config/dynamic/#dynamic"&gt;dynamic configuration&lt;/a&gt;&#10;.&lt;br&gt;&#10;These options are stored in the DCS (Distributed Configuration Store) and applied on all cluster nodes. Dynamic configuration can be set at any time using &lt;a href="https://pig.center/docs/patroni/patronictl/#patronictl_edit_config"&gt;patronictl_edit_config&lt;/a&gt;&#10; tool or Patroni &lt;a href="https://pig.center/docs/patroni/rest_api/#rest_api"&gt;REST API&lt;/a&gt;&#10;. If the options changed are not part of the startup configuration, they are applied asynchronously (upon the next wake up cycle) to every node, which gets subsequently reloaded. If the node requires a restart to apply the configuration (for &lt;a href="https://www.postgresql.org/docs/current/view-pg-settings.html"&gt;PostgreSQL parameters&lt;/a&gt;&#10; with context postmaster, if their values have changed), a special flag &lt;code&gt;pending_restart&lt;/code&gt; indicating this is set in the members.data JSON. Additionally, the node status indicates this by showing &lt;code&gt;&amp;quot;restart_pending&amp;quot;: true&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>pgBadger 10.x Release Notes</title><link>https://pig.center/docs/pgbadger/releases/10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbadger/releases/10/</guid><description>&lt;p&gt;These entries preserve the complete upstream change record for pgBadger 10.x, newest first.&lt;/p&gt;&#10;&lt;h2 id="v10-3"&gt;v10.3 · 2019-02-14&#10;&lt;/h2&gt;&#10;&lt;p&gt;This release of pgBadger is a maintenance release that fixes some&#10;log format autodetection issues another pgBouncer log parsing issue&#10;reported by users. There is also a new feature:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;The -o | --outfile option can now be used multiple time to dump&#10;output in several format in a single command. For example:&#10; pgbadger -o out.html -o out.json /log/pgsql-11.log&#10;will create two reports in html and json format saved in the&#10;two corresponding files.&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;There&amp;rsquo;s also some bugs fixes and features enhancements.&lt;/p&gt;</description></item><item><title>Backup Command (backup)</title><link>https://pig.center/docs/pgbackrest/command/backup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/backup/</guid><description>&lt;p&gt;When multiple repositories are configured, pgBackRest will backup to the highest priority repository (e.g. &lt;code&gt;repo1&lt;/code&gt;) unless the &lt;code&gt;--repo&lt;/code&gt; option is specified.&lt;/p&gt;&#10;&lt;p&gt;pgBackRest does not have a built-in scheduler so it&amp;rsquo;s best to run it from cron or some other scheduling mechanism.&lt;/p&gt;&#10;&lt;p&gt;See &lt;a href="https://pig.center/docs/pgbackrest/user-guide/#perform-a-backup"&gt;Perform a Backup&lt;/a&gt;&#10; for more details and examples.&lt;/p&gt;&#10;&lt;h2 id="command-options"&gt;Command Options&#10;&lt;/h2&gt;&#10;&lt;h3 id="backup-annotation-option---annotation"&gt;Backup Annotation Option (&lt;code&gt;--annotation&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;Annotate backup with user-defined key/value pairs.&lt;/p&gt;</description></item><item><title>Command Reference</title><link>https://pig.center/docs/pgbackrest/command/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/</guid><description>&lt;h2 id="introduction"&gt;Introduction&#10;&lt;/h2&gt;&#10;&lt;p&gt;Commands are used to execute the various pgBackRest functions. Here the command options are listed exhaustively, that is, each option applicable to a command is listed with that command even if it applies to one or more other commands. This includes all the options that may also be configured in &lt;code&gt;pgbackrest.conf&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Non-boolean options configured in &lt;code&gt;pgbackrest.conf&lt;/code&gt; can be reset to default on the command-line by using the &lt;code&gt;reset-&lt;/code&gt; prefix. This feature may be used to restore a backup directly on a repository host. Normally, pgBackRest will error because it can see that the database host is remote and restores cannot be done remotely. By adding &lt;code&gt;--reset-pg1-host&lt;/code&gt; on the command-line, pgBackRest will ignore the remote database host and restore locally. It may be necessary to pass a new &lt;code&gt;--pg1-path&lt;/code&gt; to force the restore to happen in a specific path, i.e. not the path used on the database host.&lt;/p&gt;</description></item><item><title>Patroni REST API</title><link>https://pig.center/docs/patroni/rest_api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/patroni/rest_api/</guid><description>&lt;p&gt;&lt;a id="rest_api"&gt;&lt;/a&gt;&#10;Patroni has a rich REST API, which is used by Patroni itself during the leader race, by the &lt;a href="https://pig.center/docs/patroni/patronictl/#patronictl"&gt;patronictl&lt;/a&gt;&#10; tool in order to perform failovers/switchovers/reinitialize/restarts/reloads, by HAProxy or any other kind of load balancer to perform HTTP health checks, and of course could also be used for monitoring. Below you will find the list of Patroni REST API endpoints.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="health-check-endpoints"&gt;Health check endpoints&#10;&lt;/h2&gt;&#10;&lt;p&gt;For all health check &lt;code&gt;GET&lt;/code&gt; requests Patroni returns a JSON document with the status of the node, along with the HTTP status code. If you don&amp;rsquo;t want or don&amp;rsquo;t need the JSON document, you might consider using the &lt;code&gt;HEAD&lt;/code&gt; or &lt;code&gt;OPTIONS&lt;/code&gt; method instead of &lt;code&gt;GET&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>pgBadger 9.x Release Notes</title><link>https://pig.center/docs/pgbadger/releases/9/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbadger/releases/9/</guid><description>&lt;p&gt;These entries preserve the complete upstream change record for pgBadger 9.x, newest first.&lt;/p&gt;&#10;&lt;h2 id="v9-2"&gt;v9.2 · 2017-07-27&#10;&lt;/h2&gt;&#10;&lt;p&gt;This release of pgBadger is a maintenance release that adds some new&#10;features.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Add report of checkpoint distance and estimate.&lt;/li&gt;&#10;&lt;li&gt;Add support of AWS Redshift keywords to SQL code beautifier.&lt;/li&gt;&#10;&lt;li&gt;Add autodetection of log format in remote mode to allow remote&#10;parsing of pgbouncer log file together with PostgreSQL log file.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;There&amp;rsquo;s also some bugs fixes and features enhancements.&lt;/p&gt;</description></item><item><title>Check Command (check)</title><link>https://pig.center/docs/pgbackrest/command/check/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/check/</guid><description>&lt;p&gt;The &lt;code&gt;check&lt;/code&gt; command validates that pgBackRest and the archive_command setting are configured correctly for archiving and backups for the specified stanza. It will attempt to check all repositories and databases that are configured for the host on which the command is run. It detects misconfigurations, particularly in archiving, that result in incomplete backups because required WAL segments did not reach the archive. The command can be run on the PostgreSQL or repository host. The command may also be run on the standby host, however, since &lt;code&gt;pg_switch_xlog()&lt;/code&gt;/&lt;code&gt;pg_switch_wal()&lt;/code&gt; cannot be performed on the standby, the command will only test the repository configuration.&lt;/p&gt;</description></item><item><title>Configuration Reference</title><link>https://pig.center/docs/pgbackrest/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/configuration/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="introduction"&gt;Introduction&#10;&lt;/h2&gt;&#10;&lt;p&gt;pgBackRest can be used entirely with command-line parameters but a configuration file is more practical for installations that are complex or set a lot of options. The default location for the configuration file is &lt;code&gt;/etc/pgbackrest/pgbackrest.conf&lt;/code&gt;. If no file exists in that location then the old default of &lt;code&gt;/etc/pgbackrest.conf&lt;/code&gt; will be checked.&lt;/p&gt;&#10;&lt;p&gt;The following option types are used:&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;String&lt;/strong&gt;: A text string, commonly an identifier, password, etc.&lt;/p&gt;</description></item><item><title>Source Releases Download</title><link>https://pig.center/docs/pgbouncer/download/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbouncer/download/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-125"&gt;PgBouncer 1.25&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.25.2/pgbouncer-1.25.2.tar.gz"&gt;pgbouncer-1.25.2.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2026-05-08&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;865371 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.25.2/pgbouncer-1.25.2.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.25.1/pgbouncer-1.25.1.tar.gz"&gt;pgbouncer-1.25.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2025-12-03&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;864801 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.25.1/pgbouncer-1.25.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.25.0/pgbouncer-1.25.0.tar.gz"&gt;pgbouncer-1.25.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2025-11-09&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;863322 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.25.0/pgbouncer-1.25.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-124"&gt;PgBouncer 1.24&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.24.1/pgbouncer-1.24.1.tar.gz"&gt;pgbouncer-1.24.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2025-04-16&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;717796 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.24.1/pgbouncer-1.24.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.24.0/pgbouncer-1.24.0.tar.gz"&gt;pgbouncer-1.24.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2025-01-10&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;706573 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.24.0/pgbouncer-1.24.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-123"&gt;PgBouncer 1.23&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.23.1/pgbouncer-1.23.1.tar.gz"&gt;pgbouncer-1.23.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2024-08-02&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;700025 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.23.1/pgbouncer-1.23.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.23.0/pgbouncer-1.23.0.tar.gz"&gt;pgbouncer-1.23.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2024-07-03&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;694845 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.23.0/pgbouncer-1.23.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-122"&gt;PgBouncer 1.22&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.22.1/pgbouncer-1.22.1.tar.gz"&gt;pgbouncer-1.22.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2024-03-04&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;677351 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.22.1/pgbouncer-1.22.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.22.0/pgbouncer-1.22.0.tar.gz"&gt;pgbouncer-1.22.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2024-01-31&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;670589 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.22.0/pgbouncer-1.22.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-121"&gt;PgBouncer 1.21&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.21.0/pgbouncer-1.21.0.tar.gz"&gt;pgbouncer-1.21.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2023-10-16&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;668211 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.21.0/pgbouncer-1.21.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-120"&gt;PgBouncer 1.20&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.20.1/pgbouncer-1.20.1.tar.gz"&gt;pgbouncer-1.20.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2023-08-09&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;638844 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.20.1/pgbouncer-1.20.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.20.0/pgbouncer-1.20.0.tar.gz"&gt;pgbouncer-1.20.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2023-07-20&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;638020 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.20.0/pgbouncer-1.20.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-119"&gt;PgBouncer 1.19&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.19.1/pgbouncer-1.19.1.tar.gz"&gt;pgbouncer-1.19.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2023-05-31&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;623569 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.19.1/pgbouncer-1.19.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.19.0/pgbouncer-1.19.0.tar.gz"&gt;pgbouncer-1.19.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2023-05-04&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;616947 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.19.0/pgbouncer-1.19.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-118"&gt;PgBouncer 1.18&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.18.0/pgbouncer-1.18.0.tar.gz"&gt;pgbouncer-1.18.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2022-12-12&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;600825 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.18.0/pgbouncer-1.18.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-117"&gt;PgBouncer 1.17&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.17.0/pgbouncer-1.17.0.tar.gz"&gt;pgbouncer-1.17.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2022-03-23&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;598294 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.17.0/pgbouncer-1.17.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-116"&gt;PgBouncer 1.16&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.16.1/pgbouncer-1.16.1.tar.gz"&gt;pgbouncer-1.16.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2021-11-11&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;591450 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.16.1/pgbouncer-1.16.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.16.0/pgbouncer-1.16.0.tar.gz"&gt;pgbouncer-1.16.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2021-08-09&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;592136 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.16.0/pgbouncer-1.16.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-115"&gt;PgBouncer 1.15&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.15.0/pgbouncer-1.15.0.tar.gz"&gt;pgbouncer-1.15.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2020-11-19&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;588042 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.15.0/pgbouncer-1.15.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-114"&gt;PgBouncer 1.14&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.14.0/pgbouncer-1.14.0.tar.gz"&gt;pgbouncer-1.14.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2020-06-11&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;578955 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.14.0/pgbouncer-1.14.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-113"&gt;PgBouncer 1.13&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.13.0/pgbouncer-1.13.0.tar.gz"&gt;pgbouncer-1.13.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2020-04-27&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;574955 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.13.0/pgbouncer-1.13.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-112"&gt;PgBouncer 1.12&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.12.0/pgbouncer-1.12.0.tar.gz"&gt;pgbouncer-1.12.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2019-10-17&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;567465 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.12.0/pgbouncer-1.12.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-111"&gt;PgBouncer 1.11&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.11.0/pgbouncer-1.11.0.tar.gz"&gt;pgbouncer-1.11.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2019-08-27&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;571414 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.11.0/pgbouncer-1.11.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-110"&gt;PgBouncer 1.10&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.10.0/pgbouncer-1.10.0.tar.gz"&gt;pgbouncer-1.10.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2019-07-01&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;480571 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.10.0/pgbouncer-1.10.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-19"&gt;PgBouncer 1.9&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.9.0/pgbouncer-1.9.0.tar.gz"&gt;pgbouncer-1.9.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2018-08-13&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;469300 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.9.0/pgbouncer-1.9.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-18"&gt;PgBouncer 1.8&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.8.1/pgbouncer-1.8.1.tar.gz"&gt;pgbouncer-1.8.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2017-12-20&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;465930 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.8.1/pgbouncer-1.8.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.8/pgbouncer-1.8.tar.gz"&gt;pgbouncer-1.8.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2017-12-19&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;465612 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.8/pgbouncer-1.8.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-17"&gt;PgBouncer 1.7&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.7.2/pgbouncer-1.7.2.tar.gz"&gt;pgbouncer-1.7.2.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2016-02-26&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;462374 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.7.2/pgbouncer-1.7.2.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.7.1/pgbouncer-1.7.1.tar.gz"&gt;pgbouncer-1.7.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2016-02-18&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;461903 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.7.1/pgbouncer-1.7.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.7/pgbouncer-1.7.tar.gz"&gt;pgbouncer-1.7.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2015-12-18&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;459080 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.7/pgbouncer-1.7.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-16"&gt;PgBouncer 1.6&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.6.1/pgbouncer-1.6.1.tar.gz"&gt;pgbouncer-1.6.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2015-09-03&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;431076 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.6.1/pgbouncer-1.6.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.6/pgbouncer-1.6.tar.gz"&gt;pgbouncer-1.6.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2015-08-01&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;412700 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.6/pgbouncer-1.6.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-15"&gt;PgBouncer 1.5&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.5/pgbouncer-1.5.5.tar.gz"&gt;pgbouncer-1.5.5.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2015-04-09&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;336145 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.5/pgbouncer-1.5.5.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.4/pgbouncer-1.5.4.tar.gz"&gt;pgbouncer-1.5.4.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2012-11-28&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;339610 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.4/pgbouncer-1.5.4.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.3/pgbouncer-1.5.3.tar.gz"&gt;pgbouncer-1.5.3.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2012-09-12&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;339013 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.3/pgbouncer-1.5.3.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.2/pgbouncer-1.5.2.tar.gz"&gt;pgbouncer-1.5.2.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2012-05-29&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;335338 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.2/pgbouncer-1.5.2.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.1/pgbouncer-1.5.1.tar.gz"&gt;pgbouncer-1.5.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2012-04-17&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;334413 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.1/pgbouncer-1.5.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5/pgbouncer-1.5.tar.gz"&gt;pgbouncer-1.5.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2012-01-05&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;411488 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5/pgbouncer-1.5.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-14"&gt;PgBouncer 1.4&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.4.2/pgbouncer-1.4.2.tgz"&gt;pgbouncer-1.4.2.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2011-06-16&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;283204 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.4.2/pgbouncer-1.4.2.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.4.1/pgbouncer-1.4.1.tgz"&gt;pgbouncer-1.4.1.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2011-04-01&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;282728 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.4.1/pgbouncer-1.4.1.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.4/pgbouncer-1.4.tgz"&gt;pgbouncer-1.4.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2011-01-11&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;231691 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.4/pgbouncer-1.4.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-13"&gt;PgBouncer 1.3&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.4/pgbouncer-1.3.4.tgz"&gt;pgbouncer-1.3.4.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2010-09-09&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;167957 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.4/pgbouncer-1.3.4.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.3/pgbouncer-1.3.3.tgz"&gt;pgbouncer-1.3.3.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2010-05-10&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;167476 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.3/pgbouncer-1.3.3.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.2/pgbouncer-1.3.2.tgz"&gt;pgbouncer-1.3.2.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2010-03-15&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;166756 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.2/pgbouncer-1.3.2.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.1/pgbouncer-1.3.1.tgz"&gt;pgbouncer-1.3.1.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2009-07-06&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;161518 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.1/pgbouncer-1.3.1.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3/pgbouncer-1.3.tgz"&gt;pgbouncer-1.3.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2009-02-18&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;160154 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3/pgbouncer-1.3.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-12"&gt;PgBouncer 1.2&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2.3/pgbouncer-1.2.3.tgz"&gt;pgbouncer-1.2.3.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2008-08-08&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;145372 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2.3/pgbouncer-1.2.3.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2.2/pgbouncer-1.2.2.tgz"&gt;pgbouncer-1.2.2.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2008-08-06&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;145017 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2.2/pgbouncer-1.2.2.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2.1/pgbouncer-1.2.1.tgz"&gt;pgbouncer-1.2.1.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2008-08-04&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;144903 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2.1/pgbouncer-1.2.1.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2/pgbouncer-1.2.tgz"&gt;pgbouncer-1.2.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2008-07-29&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;143915 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2/pgbouncer-1.2.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-11"&gt;PgBouncer 1.1&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: right"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.1.2/pgbouncer-1.1.2.tgz"&gt;pgbouncer-1.1.2.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td&gt;2007-12-10&lt;/td&gt;&#10; &lt;td style="text-align: right"&gt;122054 bytes&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.1.2/pgbouncer-1.1.2.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.1.1/pgbouncer-1.1.1.tgz"&gt;pgbouncer-1.1.1.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td&gt;2007-10-26&lt;/td&gt;&#10; &lt;td style="text-align: right"&gt;121042 bytes&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.1.1/pgbouncer-1.1.1.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.1/pgbouncer-1.1.tgz"&gt;pgbouncer-1.1.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td&gt;2007-10-09&lt;/td&gt;&#10; &lt;td style="text-align: right"&gt;120462 bytes&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.1/pgbouncer-1.1.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-10"&gt;PgBouncer 1.0&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.8/pgbouncer-1.0.8.tgz"&gt;pgbouncer-1.0.8.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-06-18&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;93636 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.8/pgbouncer-1.0.8.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.7/pgbouncer-1.0.7.tgz"&gt;pgbouncer-1.0.7.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-04-19&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;93086 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.7/pgbouncer-1.0.7.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.6/pgbouncer-1.0.6.tgz"&gt;pgbouncer-1.0.6.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-04-12&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;92244 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.6/pgbouncer-1.0.6.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.5/pgbouncer-1.0.5.tgz"&gt;pgbouncer-1.0.5.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-04-11&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;91934 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.5/pgbouncer-1.0.5.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.4/pgbouncer-1.0.4.tgz"&gt;pgbouncer-1.0.4.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-04-11&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;91889 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.4/pgbouncer-1.0.4.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.3/pgbouncer-1.0.3.tgz"&gt;pgbouncer-1.0.3.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-04-11&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;91489 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.3/pgbouncer-1.0.3.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.2/pgbouncer-1.0.2.tgz"&gt;pgbouncer-1.0.2.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-03-28&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;90555 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.2/pgbouncer-1.0.2.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.1/pgbouncer-1.0.1.tgz"&gt;pgbouncer-1.0.1.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-03-15&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;89609 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.1/pgbouncer-1.0.1.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0/pgbouncer-1.0.tgz"&gt;pgbouncer-1.0.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-03-13&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;88587 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0/pgbouncer-1.0.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="binary-packages"&gt;Binary Packages&#10;&lt;/h2&gt;&#10;&lt;p&gt;Various OS distributions have their native package/port of PgBouncer. So it might be good to first check if it is already available on your OS.&lt;/p&gt;</description></item><item><title>HAProxy 3.4.4 Documentation</title><link>https://pig.center/docs/haproxy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;&lt;strong&gt;HAProxy&lt;/strong&gt; is a free, fast, and reliable reverse proxy for high availability, TCP and HTTP load&#10;balancing, and application traffic management. This component contains the complete English text of&#10;the three core HAProxy 3.4 manuals, reorganized as one flat Markdown reading sequence for OINK.&lt;/p&gt;&#10;&lt;h2 id="choose-a-manual"&gt;Choose a manual&#10;&lt;/h2&gt;&#10;&lt;ul class="cards"&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/docs/haproxy/load-balancing/"&gt;Starter Guide&lt;/a&gt;&#10; — 9 topics on load-balancing concepts, HAProxy architecture, features, sizing, releases, and ecosystem.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/docs/haproxy/http-fundamentals/"&gt;Configuration Manual&lt;/a&gt;&#10; — 12 chapters covering proxies, ACLs, samples, logging, filters, and every option family.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/docs/haproxy/prerequisites/"&gt;Management Guide&lt;/a&gt;&#10; — 13 chapters on startup, reloads, resources, logging, statistics, runtime CLI, debugging, and security.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="edition-coverage"&gt;Edition coverage&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Manual&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: right"&gt;Upstream source&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: right"&gt;Local organization&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Starter Guide&lt;/td&gt;&#10; &lt;td style="text-align: right"&gt;1,695 lines&lt;/td&gt;&#10; &lt;td style="text-align: right"&gt;9 flat topic pages&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Configuration Manual&lt;/td&gt;&#10; &lt;td style="text-align: right"&gt;33,148 lines&lt;/td&gt;&#10; &lt;td style="text-align: right"&gt;12 flat chapter pages&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Management Guide&lt;/td&gt;&#10; &lt;td style="text-align: right"&gt;5,285 lines&lt;/td&gt;&#10; &lt;td style="text-align: right"&gt;13 flat chapter pages&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;All 34 reading pages live directly under the HAProxy component root. Three non-linking divider&#10;placeholders separate the manuals in the sidebar without adding directory levels or pager stops.&lt;/p&gt;</description></item><item><title>patronictl</title><link>https://pig.center/docs/patroni/patronictl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/patroni/patronictl/</guid><description>&lt;p&gt;&lt;a id="patronictl_version_description"&gt;&lt;/a&gt;&#10;&lt;a id="patronictl_version_parameters"&gt;&lt;/a&gt;&#10;&lt;a id="patronictl_version_examples"&gt;&lt;/a&gt;&#10;&lt;a id="patronictl"&gt;&lt;/a&gt;&#10;Patroni has a command-line interface named &lt;a href="https://pig.center/docs/patroni/patronictl/#patronictl"&gt;patronictl&lt;/a&gt;&#10;, which is used basically to interact with Patroni&amp;rsquo;s REST API and with the DCS. It is intended to make it easier to perform operations in the cluster, and can easily be used by humans or scripts.&lt;/p&gt;&#10;&lt;p&gt;&lt;a id="patronictl_configuration"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="configuration"&gt;Configuration&#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://pig.center/docs/patroni/patronictl/#patronictl"&gt;patronictl&lt;/a&gt;&#10; uses 3 sections of the configuration:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;ctl&lt;/strong&gt;: how to authenticate against the Patroni REST API, and how to validate the server identity. Refer to &lt;a href="https://pig.center/docs/patroni/config/yaml/#patronictl_settings"&gt;ctl settings&lt;/a&gt;&#10; for more details;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;restapi&lt;/strong&gt;: how to authenticate against the Patroni REST API, and how to validate the server identity. Only used if &lt;code&gt;ctl&lt;/code&gt; configuration is not enough. &lt;a href="https://pig.center/docs/patroni/patronictl/#patronictl"&gt;patronictl&lt;/a&gt;&#10; is mainly interested in &lt;code&gt;restapi.authentication&lt;/code&gt; section (in case &lt;code&gt;ctl.authentication&lt;/code&gt; is missing) and &lt;code&gt;restapi.cafile&lt;/code&gt; setting (in case &lt;code&gt;ctl.cacert&lt;/code&gt; is missing). Refer to &lt;a href="https://pig.center/docs/patroni/config/yaml/#restapi_settings"&gt;REST API settings&lt;/a&gt;&#10; for more details;&lt;/li&gt;&#10;&lt;li&gt;DCS (e.g. &lt;strong&gt;etcd&lt;/strong&gt;): how to contact and authenticate against the DCS used by Patroni.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Those configuration options can come either from environment variables or from a configuration file. Look for the above sections in &lt;a href="https://pig.center/docs/patroni/config/env/#env"&gt;Environment Configuration Settings&lt;/a&gt;&#10; or &lt;a href="https://pig.center/docs/patroni/config/yaml/#yaml"&gt;YAML Configuration Settings&lt;/a&gt;&#10; to understand how you can set the options for them through environment variables or through a configuration file.&lt;/p&gt;</description></item><item><title>Expire Command (expire)</title><link>https://pig.center/docs/pgbackrest/command/expire/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/expire/</guid><description>&lt;p&gt;pgBackRest does full backup rotation based on the retention type which can be a count or a time period. When a count is specified, then expiration is not concerned with when the backups were created but with how many must be retained. Differential backups are count-based but will always be expired when the full backup they depend on is expired. Incremental backups are not expired by retention independently — they are always expired with their related full or differential backup. See sections &lt;a href="https://pig.center/docs/pgbackrest/user-guide/#full-backup-retention"&gt;Full Backup Retention&lt;/a&gt;&#10; and &lt;a href="https://pig.center/docs/pgbackrest/user-guide/#differential-backup-retention"&gt;Differential Backup Retention&lt;/a&gt;&#10; for details and examples.&lt;/p&gt;</description></item><item><title>Release Notes</title><link>https://pig.center/docs/pgbackrest/release/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/release/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="introduction"&gt;Introduction&#10;&lt;/h2&gt;&#10;&lt;p&gt;pgBackRest release numbers consist of two parts, major and minor. A major release &lt;em&gt;may&lt;/em&gt; break compatibility with the prior major release, but v2 releases are fully compatible with v1 repositories and will accept all v1 options. Minor releases can include bug fixes and features but do not change the repository format and strive to avoid changing options and naming. Documentation for the v1 release can be found &lt;a href="https://pgbackrest.org/1"&gt;here&lt;/a&gt;&#10;. The notes for a release may also contain &amp;ldquo;Additional Notes&amp;rdquo; but changes in this section are only to documentation or the test suite and have no direct impact on the pgBackRest codebase.&lt;/p&gt;</description></item><item><title>Changelog</title><link>https://pig.center/docs/pgbouncer/changelog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbouncer/changelog/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-125x"&gt;PgBouncer 1.25.x&#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;2026-05-08 - PgBouncer 1.25.2 - &amp;ldquo;Human touch with fresh twist in title race full of uncertainties&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Security&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Fix CVE-2026-6664: An integer overflow in network packet parsing code in PgBouncer before 1.25.2 bypasses a boundary check and can lead to a crash. An unauthenticated remote attacker can crash PgBouncer with a malformed SCRAM authentication packet.&lt;/li&gt;&#10;&lt;li&gt;Fix CVE-2026-6665: The SCRAM code in PgBouncer before 1.25.2 did not check the return value of &lt;code&gt;strlcat()&lt;/code&gt; correctly when building the contents of the SCRAM client-final-message. A malicious backend that sends a SCRAM server-final-message with a long nonce can trigger a stack overflow.&lt;/li&gt;&#10;&lt;li&gt;Fix CVE-2026-6666: A possible null pointer reference in PgBouncer before 1.25.2 could lead to a crash if a server sends an error response without an SQLSTATE field.&lt;/li&gt;&#10;&lt;li&gt;Fix CVE-2026-6667: PgBouncer before 1.25.2 did not perform an appropriate authorization check for the &lt;code&gt;KILL_CLIENT&lt;/code&gt; admin command. All users with access to the administration console, which itself requires authorization, could run this command. It should only be allowed for users listed in the &lt;code&gt;admin_users&lt;/code&gt; parameter.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Fixes&lt;/p&gt;</description></item><item><title>Frequently Asked Questions</title><link>https://pig.center/docs/pgbackrest/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/faq/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="introduction"&gt;Introduction&#10;&lt;/h2&gt;&#10;&lt;p&gt;Frequently Asked Questions are intended to provide details for specific questions that may or may not be covered in the User Guide, Configuration, or Command reference. If you are unable to find details for your specific issue here, remember that the pgBackRest &lt;a href="https://github.com/pgbackrest/pgbackrest/issues"&gt;Issues List in GitHub&lt;/a&gt;&#10; is also a valuable resource.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="what-if-i-get-the-could-not-find-wal-segment-error"&gt;What if I get the &amp;ldquo;could not find WAL segment&amp;rdquo; error?&#10;&lt;/h2&gt;&#10;&lt;p&gt;The cause of this error can be a result of many different issues, some of which may be:&lt;/p&gt;</description></item><item><title>Help Command (help)</title><link>https://pig.center/docs/pgbackrest/command/help/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/help/</guid><description>&lt;p&gt;Three levels of help are provided. If no command is specified then general help will be displayed. If a command is specified (e.g. &lt;code&gt;pgbackrest help backup&lt;/code&gt;) then a full description of the command will be displayed along with a list of valid options. If an option is specified in addition to a command (e.g. &lt;code&gt;pgbackrest help backup type&lt;/code&gt;) then a full description of the option as it applies to the command will be displayed.&lt;/p&gt;</description></item><item><title>Output Formats</title><link>https://pig.center/docs/pgbadger/output-formats/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbadger/output-formats/</guid><description>&lt;p&gt;pgBadger selects output from the filename extension or from &lt;code&gt;-x&lt;/code&gt; / &lt;code&gt;--extension&lt;/code&gt;. Use &lt;code&gt;-o&lt;/code&gt; / &lt;code&gt;--outfile&lt;/code&gt; more than once to create multiple formats from the same parse.&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Format&lt;/th&gt;&#10; &lt;th scope="col"&gt;Typical extension&lt;/th&gt;&#10; &lt;th scope="col"&gt;Best use&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;HTML&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.html&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;interactive, human-readable report with charts&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Text&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.txt&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;terminal review and plain archival output&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Binary&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.bin&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;mergeable intermediate statistics and report rebuilds&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;JSON&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.json&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;integration with other software; requires &lt;code&gt;JSON::XS&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Raw CSV&lt;/td&gt;&#10; &lt;td&gt;chosen output file&lt;/td&gt;&#10; &lt;td&gt;row-oriented extraction with &lt;code&gt;--dump-raw-csv&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="html-and-text"&gt;HTML and text&#10;&lt;/h2&gt;&#10;&lt;p&gt;The default output is &lt;code&gt;out.html&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Sizing and Performance</title><link>https://pig.center/docs/haproxy/sizing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/sizing/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Typical CPU usage figures show 15% of the processing time spent in HAProxy versus 85% in the kernel&#10;in TCP or HTTP close mode, and about 30% for HAProxy versus 70% for the kernel in HTTP keep-alive&#10;mode. This means that the operating system and its tuning have a strong impact on the global&#10;performance.&lt;/p&gt;&#10;&lt;p&gt;Usages vary a lot between users, some focus on bandwidth, other ones on request rate, others on&#10;connection concurrency, others on SSL performance. This section aims at providing a few elements to&#10;help with this task.&lt;/p&gt;</description></item><item><title>Info Command (info)</title><link>https://pig.center/docs/pgbackrest/command/info/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/info/</guid><description>&lt;p&gt;The &lt;code&gt;info&lt;/code&gt; command operates on a single stanza or all stanzas. Text output is the default and gives a human-readable summary of backups for the stanza(s) requested. This format is subject to change with any release.&lt;/p&gt;&#10;&lt;p&gt;For machine-readable output use &lt;code&gt;--output=json&lt;/code&gt;. The JSON output contains far more information than the text output and is kept stable unless a bug is found.&lt;/p&gt;&#10;&lt;p&gt;To speed up execution, limit the output to only progress information by specifying &lt;code&gt;--detail-level=progress&lt;/code&gt;. Note that this skips all checks except for availability of the stanza.&lt;/p&gt;</description></item><item><title>Sample Reports</title><link>https://pig.center/docs/pgbadger/sample-reports/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbadger/sample-reports/</guid><description>&lt;p&gt;The example content was generated by pgBadger 11.8 in May 2022. The original examples are stored with this site, so report navigation, charts, styles, and scripts remain available without reaching the upstream server.&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Example&lt;/th&gt;&#10; &lt;th scope="col"&gt;What it demonstrates&lt;/th&gt;&#10; &lt;th scope="col"&gt;Local copy&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Complete report&lt;/td&gt;&#10; &lt;td&gt;PostgreSQL activity together with PgBouncer statistics&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://pig.center/third_party/pgbadger/examples/sample.html"&gt;Open the complete report&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Incremental report&lt;/td&gt;&#10; &lt;td&gt;Calendar index, weekly aggregation, and daily pages&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://pig.center/third_party/pgbadger/examples/report/index.html"&gt;Open the incremental index&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Errors and events&lt;/td&gt;&#10; &lt;td&gt;A report restricted to errors and operational events&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://pig.center/third_party/pgbadger/examples/errors.html"&gt;Open the error report&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="complete-report"&gt;Complete report&#10;&lt;/h2&gt;&#10;&lt;p&gt;The complete report is a self-contained HTML document. Use its top navigation to inspect global statistics, queries, sessions, connections, temporary files, checkpoints, autovacuum activity, locks, and PgBouncer-specific charts.&lt;/p&gt;</description></item><item><title>Frequently Asked Questions</title><link>https://pig.center/docs/pgbouncer/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbouncer/faq/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="how-to-connect-to-pgbouncer"&gt;How to connect to PgBouncer?&#10;&lt;/h2&gt;&#10;&lt;p&gt;PgBouncer acts as a Postgres server, so simply point your client to the&#10;PgBouncer port.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="how-to-load-balance-queries-between-several-servers"&gt;How to load-balance queries between several servers?&#10;&lt;/h2&gt;&#10;&lt;p&gt;PgBouncer does not have an internal multi-host configuration.&#10;It is possible via external tools:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;DNS round-robin. Use several IPs behind one DNS name. PgBouncer does&#10;not look up DNS each time a new connection is launched. Instead, it&#10;caches all IPs and does round-robin internally. Note: if there are&#10;more than 8 IPs behind one name, the DNS backend must support the EDNS0&#10;protocol. See README for details.&lt;/p&gt;</description></item><item><title>Release History</title><link>https://pig.center/docs/pgbadger/releases/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbadger/releases/</guid><description>&lt;p&gt;The official website publishes release news inline on its home page. That page stops at 12.4 and accidentally repeats 11.1–11.3 with conflicting dates. This edition uses the pinned upstream &lt;code&gt;ChangeLog&lt;/code&gt; as the canonical record, removes only those duplicate renderings, and adds the later 13.x releases. Entries are preserved in full and ordered newest first within each series.&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Series&lt;/th&gt;&#10; &lt;th scope="col"&gt;Versions included&lt;/th&gt;&#10; &lt;th scope="col"&gt;First–last release&lt;/th&gt;&#10; &lt;th scope="col"&gt;Page&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;13.x&lt;/td&gt;&#10; &lt;td&gt;13.0–13.2&lt;/td&gt;&#10; &lt;td&gt;2024-12-08 – 2025-12-29&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://pig.center/docs/pgbadger/releases/13/"&gt;Read 13.x&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;12.x&lt;/td&gt;&#10; &lt;td&gt;12.0–12.4&lt;/td&gt;&#10; &lt;td&gt;2022-09-13 – 2023-12-25&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://pig.center/docs/pgbadger/releases/12/"&gt;Read 12.x&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;11.x&lt;/td&gt;&#10; &lt;td&gt;11.0–11.8&lt;/td&gt;&#10; &lt;td&gt;2019-06-25 – 2022-04-08&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://pig.center/docs/pgbadger/releases/11/"&gt;Read 11.x&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;10.x&lt;/td&gt;&#10; &lt;td&gt;10.0–10.3&lt;/td&gt;&#10; &lt;td&gt;2018-09-09 – 2019-02-14&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://pig.center/docs/pgbadger/releases/10/"&gt;Read 10.x&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;9.x&lt;/td&gt;&#10; &lt;td&gt;9.0–9.2&lt;/td&gt;&#10; &lt;td&gt;2016-09-02 – 2017-07-27&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://pig.center/docs/pgbadger/releases/9/"&gt;Read 9.x&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;For downloadable archives and assets, use &lt;a href="https://github.com/darold/pgbadger/releases"&gt;GitHub Releases&lt;/a&gt;&#10;. Release dates in this section describe upstream source history; they are not the download time of this documentation snapshot.&lt;/p&gt;</description></item><item><title>Repository Get Command (repo-get)</title><link>https://pig.center/docs/pgbackrest/command/repo-get/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/repo-get/</guid><description>&lt;p&gt;Similar to the unix &lt;code&gt;cat&lt;/code&gt; command but works on any supported repository type. This command requires a fully qualified file name and is primarily for administration, investigation, and testing. It is not a required part of a normal pgBackRest setup.&lt;/p&gt;&#10;&lt;p&gt;If the repository is encrypted then &lt;code&gt;repo-get&lt;/code&gt; will automatically decrypt the file. Files are not automatically decompressed but the output can be piped through the appropriate decompression command, e.g. &lt;code&gt;gzip -d&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Repository List Command (repo-ls)</title><link>https://pig.center/docs/pgbackrest/command/repo-ls/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/repo-ls/</guid><description>&lt;p&gt;Similar to the unix &lt;code&gt;ls&lt;/code&gt; command but works on any supported repository type. This command accepts a path, absolute or relative to the repository path defined by the &lt;code&gt;--repo-path&lt;/code&gt; option, and is primarily for administration, investigation, and testing. It is not a required part of a normal pgBackRest setup.&lt;/p&gt;&#10;&lt;p&gt;The default text output prints one file name per line. JSON output is available by specifying &lt;code&gt;--output=json&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;If more than one repository is configured, the command will default to the highest priority repository (e.g. &lt;code&gt;repo1&lt;/code&gt;) unless the &lt;code&gt;--repo&lt;/code&gt; option is specified.&lt;/p&gt;</description></item><item><title>Documentation and Community</title><link>https://pig.center/docs/haproxy/resources/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/resources/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;h2 id="section-1"&gt;1. Available documentation&#10;&lt;/h2&gt;&#10;&lt;p&gt;The complete HAProxy documentation is contained in the following documents. Please ensure to consult&#10;the relevant documentation to save time and to get the most accurate response to your needs. Also&#10;please refrain from sending questions to the mailing list whose responses are present in these&#10;documents.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a href="https://pig.center/docs/haproxy/load-balancing/"&gt;&lt;code&gt;intro.txt&lt;/code&gt;&lt;/a&gt;&#10; (this document): it presents the basics of load balancing, HAProxy as a product, what it&#10;does, what it doesn&amp;rsquo;t do, some known traps to avoid, some OS-specific limitations, how to get it,&#10;how it evolves, how to ensure you&amp;rsquo;re running with all known fixes, how to update it, complements&#10;and alternatives.&lt;/p&gt;</description></item><item><title>License and Credits</title><link>https://pig.center/docs/pgbadger/license/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbadger/license/</guid><description>&lt;p&gt;pgBadger is free and open-source software distributed under the PostgreSQL License. It may be used, copied, modified, and distributed without a fee, subject to retaining the copyright and license notices.&lt;/p&gt;&#10;&lt;h2 id="postgresql-license"&gt;PostgreSQL License&#10;&lt;/h2&gt;&#10;&lt;p&gt;Copyright (c) 2012-2026, Gilles Darold&lt;/p&gt;&#10;&lt;p&gt;Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.&lt;/p&gt;</description></item><item><title>Restore Command (restore)</title><link>https://pig.center/docs/pgbackrest/command/restore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/restore/</guid><description>&lt;p&gt;The restore command automatically defaults to selecting the latest backup from the first repository where backups exist (see &lt;a href="https://pig.center/docs/pgbackrest/user-guide/#restore-a-backup"&gt;Quick Start - Restore a Backup&lt;/a&gt;&#10;). The order in which the repositories are checked is dictated by the &lt;code&gt;pgbackrest.conf&lt;/code&gt; (e.g. repo1 will be checked before repo2). To select from a specific repository, the &lt;code&gt;--repo&lt;/code&gt; option can be passed (e.g. &lt;code&gt;--repo=1&lt;/code&gt;). The &lt;code&gt;--set&lt;/code&gt; option can be passed if a backup other than the latest is desired.&lt;/p&gt;</description></item><item><title>Server Command (server)</title><link>https://pig.center/docs/pgbackrest/command/server/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/server/</guid><description>&lt;p&gt;The pgBackRest server allows access to remote hosts without using the SSH protocol.&lt;/p&gt;&#10;&lt;h2 id="command-options"&gt;Command Options&#10;&lt;/h2&gt;&#10;&lt;h3 id="tls-server-address-option---tls-server-address"&gt;TLS Server Address Option (&lt;code&gt;--tls-server-address&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;TLS server address.&lt;/p&gt;&#10;&lt;p&gt;IP address the server will listen on for client requests.&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-4bb5b1e0-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="yaml" data-td-line-count="2"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-4bb5b1e0-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;localhost&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;example&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--&lt;span class="l"&gt;tls-server-address=*&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="tls-server-authorized-clients-option---tls-server-auth"&gt;TLS Server Authorized Clients Option (&lt;code&gt;--tls-server-auth&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;TLS server authorized clients.&lt;/p&gt;&#10;&lt;p&gt;Clients are authorized on the server by verifying their certificate and checking their certificate CN (Common Name) against a list on the server configured with the &lt;code&gt;tls-server-auth&lt;/code&gt; option.&lt;/p&gt;</description></item><item><title>2. Configuring HAProxy</title><link>https://pig.center/docs/haproxy/configuration-basics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/configuration-basics/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;h2 id="section-2-1"&gt;2.1. Configuration file format&#10;&lt;/h2&gt;&#10;&lt;p&gt;HAProxy&amp;rsquo;s configuration process involves 3 major sources of parameters:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;the arguments from the command-line, which always take precedence&lt;/li&gt;&#10;&lt;li&gt;the configuration file(s), whose format is described here&lt;/li&gt;&#10;&lt;li&gt;the running process&amp;rsquo;s environment, in case some environment variables are explicitly referenced&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The configuration file follows a fairly simple hierarchical format which obey a few basic rules:&lt;/p&gt;</description></item><item><title>Server Ping Command (server-ping)</title><link>https://pig.center/docs/pgbackrest/command/server-ping/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/server-ping/</guid><description>&lt;p&gt;Ping a pgBackRest TLS server to ensure it is accepting connections. This serves as an aliveness check only since no authentication is attempted.&lt;/p&gt;&#10;&lt;p&gt;If no host is specified on the command-line then the &lt;code&gt;tls-server-host&lt;/code&gt; option will be used.&lt;/p&gt;&#10;&lt;h2 id="command-options"&gt;Command Options&#10;&lt;/h2&gt;&#10;&lt;h3 id="tls-server-address-option---tls-server-address"&gt;TLS Server Address Option (&lt;code&gt;--tls-server-address&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;TLS server address.&lt;/p&gt;&#10;&lt;p&gt;IP address the server will listen on for client requests.&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-528d8710-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="yaml" data-td-line-count="2"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-528d8710-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;localhost&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;example&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--&lt;span class="l"&gt;tls-server-address=*&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="tls-server-port-option---tls-server-port"&gt;TLS Server Port Option (&lt;code&gt;--tls-server-port&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;TLS server port.&lt;/p&gt;</description></item><item><title>3. Global Section</title><link>https://pig.center/docs/haproxy/global/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/global/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Parameters in the &amp;ldquo;global&amp;rdquo; section are process-wide and often OS-specific. They are generally set&#10;once for all and do not need being changed once correct. Some of them have command-line equivalents.&lt;/p&gt;&#10;&lt;p&gt;The following keywords are supported in the &amp;ldquo;global&amp;rdquo; section:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Process management and security&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;51degrees-allow-unmatched&lt;/li&gt;&#10;&lt;li&gt;51degrees-cache-size&lt;/li&gt;&#10;&lt;li&gt;51degrees-data-file&lt;/li&gt;&#10;&lt;li&gt;51degrees-difference&lt;/li&gt;&#10;&lt;li&gt;51degrees-drift&lt;/li&gt;&#10;&lt;li&gt;51degrees-property-name-list&lt;/li&gt;&#10;&lt;li&gt;51degrees-property-separator&lt;/li&gt;&#10;&lt;li&gt;51degrees-use-performance-graph&lt;/li&gt;&#10;&lt;li&gt;51degrees-use-predictive-graph&lt;/li&gt;&#10;&lt;li&gt;ca-base&lt;/li&gt;&#10;&lt;li&gt;chroot&lt;/li&gt;&#10;&lt;li&gt;cluster-secret&lt;/li&gt;&#10;&lt;li&gt;cpu-affinity&lt;/li&gt;&#10;&lt;li&gt;cpu-map&lt;/li&gt;&#10;&lt;li&gt;cpu-policy&lt;/li&gt;&#10;&lt;li&gt;cpu-set&lt;/li&gt;&#10;&lt;li&gt;crt-base&lt;/li&gt;&#10;&lt;li&gt;daemon&lt;/li&gt;&#10;&lt;li&gt;default-path&lt;/li&gt;&#10;&lt;li&gt;description&lt;/li&gt;&#10;&lt;li&gt;deviceatlas-json-file&lt;/li&gt;&#10;&lt;li&gt;deviceatlas-log-level&lt;/li&gt;&#10;&lt;li&gt;deviceatlas-properties-cookie&lt;/li&gt;&#10;&lt;li&gt;deviceatlas-separator&lt;/li&gt;&#10;&lt;li&gt;dns-accept-family&lt;/li&gt;&#10;&lt;li&gt;expose-deprecated-directives&lt;/li&gt;&#10;&lt;li&gt;expose-experimental-directives&lt;/li&gt;&#10;&lt;li&gt;external-check&lt;/li&gt;&#10;&lt;li&gt;fd-hard-limit&lt;/li&gt;&#10;&lt;li&gt;gid&lt;/li&gt;&#10;&lt;li&gt;grace&lt;/li&gt;&#10;&lt;li&gt;group&lt;/li&gt;&#10;&lt;li&gt;h1-accept-payload-with-any-method&lt;/li&gt;&#10;&lt;li&gt;h1-case-adjust&lt;/li&gt;&#10;&lt;li&gt;h1-case-adjust-file&lt;/li&gt;&#10;&lt;li&gt;h1-do-not-close-on-insecure-transfer-encoding&lt;/li&gt;&#10;&lt;li&gt;h2-workaround-bogus-websocket-clients&lt;/li&gt;&#10;&lt;li&gt;hard-stop-after&lt;/li&gt;&#10;&lt;li&gt;harden.reject-privileged-ports.tcp&lt;/li&gt;&#10;&lt;li&gt;harden.reject-privileged-ports.quic&lt;/li&gt;&#10;&lt;li&gt;insecure-fork-wanted&lt;/li&gt;&#10;&lt;li&gt;insecure-setuid-wanted&lt;/li&gt;&#10;&lt;li&gt;issuers-chain-path&lt;/li&gt;&#10;&lt;li&gt;jwt.decrypt_alg_list&lt;/li&gt;&#10;&lt;li&gt;jwt.decrypt_enc_list&lt;/li&gt;&#10;&lt;li&gt;key-base&lt;/li&gt;&#10;&lt;li&gt;limited-quic&lt;/li&gt;&#10;&lt;li&gt;localpeer&lt;/li&gt;&#10;&lt;li&gt;log&lt;/li&gt;&#10;&lt;li&gt;log-send-hostname&lt;/li&gt;&#10;&lt;li&gt;log-tag&lt;/li&gt;&#10;&lt;li&gt;lua-load&lt;/li&gt;&#10;&lt;li&gt;lua-load-per-thread&lt;/li&gt;&#10;&lt;li&gt;lua-prepend-path&lt;/li&gt;&#10;&lt;li&gt;max-threads-per-group&lt;/li&gt;&#10;&lt;li&gt;mworker-max-reloads&lt;/li&gt;&#10;&lt;li&gt;nbthread&lt;/li&gt;&#10;&lt;li&gt;node&lt;/li&gt;&#10;&lt;li&gt;numa-cpu-mapping&lt;/li&gt;&#10;&lt;li&gt;ocsp-update.disable&lt;/li&gt;&#10;&lt;li&gt;ocsp-update.maxdelay&lt;/li&gt;&#10;&lt;li&gt;ocsp-update.mindelay&lt;/li&gt;&#10;&lt;li&gt;ocsp-update.httpproxy&lt;/li&gt;&#10;&lt;li&gt;ocsp-update.mode&lt;/li&gt;&#10;&lt;li&gt;pidfile&lt;/li&gt;&#10;&lt;li&gt;pp2-never-send-local&lt;/li&gt;&#10;&lt;li&gt;presetenv&lt;/li&gt;&#10;&lt;li&gt;prealloc-fd&lt;/li&gt;&#10;&lt;li&gt;resetenv&lt;/li&gt;&#10;&lt;li&gt;set-dumpable&lt;/li&gt;&#10;&lt;li&gt;set-var&lt;/li&gt;&#10;&lt;li&gt;setenv&lt;/li&gt;&#10;&lt;li&gt;ssl-default-bind-ciphers&lt;/li&gt;&#10;&lt;li&gt;ssl-default-bind-ciphersuites&lt;/li&gt;&#10;&lt;li&gt;ssl-default-bind-client-sigalgs&lt;/li&gt;&#10;&lt;li&gt;ssl-default-bind-curves&lt;/li&gt;&#10;&lt;li&gt;ssl-default-bind-options&lt;/li&gt;&#10;&lt;li&gt;ssl-default-bind-sigalgs&lt;/li&gt;&#10;&lt;li&gt;ssl-default-server-ciphers&lt;/li&gt;&#10;&lt;li&gt;ssl-default-server-ciphersuites&lt;/li&gt;&#10;&lt;li&gt;ssl-default-server-client-sigalgs&lt;/li&gt;&#10;&lt;li&gt;ssl-default-server-curves&lt;/li&gt;&#10;&lt;li&gt;ssl-default-server-options&lt;/li&gt;&#10;&lt;li&gt;ssl-default-server-sigalgs&lt;/li&gt;&#10;&lt;li&gt;ssl-dh-param-file&lt;/li&gt;&#10;&lt;li&gt;ssl-propquery&lt;/li&gt;&#10;&lt;li&gt;ssl-provider&lt;/li&gt;&#10;&lt;li&gt;ssl-provider-path&lt;/li&gt;&#10;&lt;li&gt;ssl-security-level&lt;/li&gt;&#10;&lt;li&gt;ssl-server-verify&lt;/li&gt;&#10;&lt;li&gt;ssl-skip-self-issued-ca&lt;/li&gt;&#10;&lt;li&gt;stats&lt;/li&gt;&#10;&lt;li&gt;stats-file&lt;/li&gt;&#10;&lt;li&gt;strict-limits&lt;/li&gt;&#10;&lt;li&gt;uid&lt;/li&gt;&#10;&lt;li&gt;ulimit-n&lt;/li&gt;&#10;&lt;li&gt;unix-bind&lt;/li&gt;&#10;&lt;li&gt;unsetenv&lt;/li&gt;&#10;&lt;li&gt;user&lt;/li&gt;&#10;&lt;li&gt;wurfl-cache-size&lt;/li&gt;&#10;&lt;li&gt;wurfl-data-file&lt;/li&gt;&#10;&lt;li&gt;wurfl-information-list&lt;/li&gt;&#10;&lt;li&gt;wurfl-information-list-separator&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Performance tuning&lt;/p&gt;</description></item><item><title>Stanza Create Command (stanza-create)</title><link>https://pig.center/docs/pgbackrest/command/stanza-create/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/stanza-create/</guid><description>&lt;p&gt;The &lt;code&gt;stanza-create&lt;/code&gt; command must be run after the stanza has been configured in &lt;code&gt;pgbackrest.conf&lt;/code&gt;. If there is more than one repository configured, the stanza will be created on each. Stanzas that have already been created will be skipped so it is always safe to run &lt;code&gt;stanza-create&lt;/code&gt;, even when a new repository has been configured.&lt;/p&gt;&#10;&lt;p&gt;See &lt;a href="https://pig.center/docs/pgbackrest/user-guide/#create-the-stanza"&gt;Create the Stanza&lt;/a&gt;&#10; for more information and an example.&lt;/p&gt;&#10;&lt;h2 id="command-options"&gt;Command Options&#10;&lt;/h2&gt;&#10;&lt;h3 id="online-option---online"&gt;Online Option (&lt;code&gt;--online&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;Create on an online cluster.&lt;/p&gt;</description></item><item><title>4. Proxies</title><link>https://pig.center/docs/haproxy/proxies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/proxies/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Proxy configuration can be located in a set of sections:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;defaults [&lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt;] [ from &lt;code&gt;&amp;lt;defaults_name&amp;gt;&lt;/code&gt; ]&lt;/li&gt;&#10;&lt;li&gt;frontend &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; [ from &lt;code&gt;&amp;lt;defaults_name&amp;gt;&lt;/code&gt; ]&lt;/li&gt;&#10;&lt;li&gt;backend &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; [ from &lt;code&gt;&amp;lt;defaults_name&amp;gt;&lt;/code&gt; ]&lt;/li&gt;&#10;&lt;li&gt;listen &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; [ from &lt;code&gt;&amp;lt;defaults_name&amp;gt;&lt;/code&gt; ]&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;A &amp;ldquo;frontend&amp;rdquo; section describes a set of listening sockets accepting client connections.&lt;/p&gt;&#10;&lt;p&gt;A &amp;ldquo;backend&amp;rdquo; section describes a set of servers to which the proxy will connect to forward incoming&#10;connections.&lt;/p&gt;</description></item><item><title>Stanza Delete Command (stanza-delete)</title><link>https://pig.center/docs/pgbackrest/command/stanza-delete/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/stanza-delete/</guid><description>&lt;p&gt;The &lt;code&gt;stanza-delete&lt;/code&gt; command removes data in the repository associated with a stanza.&lt;/p&gt;&#10;&lt;p&gt;WARNING:&lt;/p&gt;&#10;&lt;p&gt;Use this command with caution — it will permanently remove all backups and archives from the pgBackRest repository for the specified stanza.&lt;/p&gt;&#10;&lt;p&gt;To delete a stanza:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Shut down the PostgreSQL cluster associated with the stanza (or use &amp;ndash;force to override).&lt;/li&gt;&#10;&lt;li&gt;Run the &lt;code&gt;stop&lt;/code&gt; command on the host where the &lt;code&gt;stanza-delete&lt;/code&gt; command will be run.&lt;/li&gt;&#10;&lt;li&gt;Run the &lt;code&gt;stanza-delete&lt;/code&gt; command.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Once the command successfully completes, it is the responsibility of the user to remove the stanza from all pgBackRest configuration files and/or environment variables.&lt;/p&gt;</description></item><item><title>5. Bind and Server Options</title><link>https://pig.center/docs/haproxy/bind-and-server-options/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/bind-and-server-options/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;The &amp;ldquo;bind&amp;rdquo;, &amp;ldquo;server&amp;rdquo; and &amp;ldquo;default-server&amp;rdquo; keywords support a number of settings depending on some&#10;build options and on the system HAProxy was built on. These settings generally each consist in one&#10;word sometimes followed by a value, written on the same line as the &amp;ldquo;bind&amp;rdquo; or &amp;ldquo;server&amp;rdquo; line. All&#10;these options are described in this section.&lt;/p&gt;&#10;&lt;h2 id="section-5-1"&gt;5.1. Bind options&#10;&lt;/h2&gt;&#10;&lt;p&gt;The &amp;ldquo;bind&amp;rdquo; keyword supports a certain number of settings which are all passed as arguments on the&#10;same line. The order in which those arguments appear makes no importance, provided that they appear&#10;after the bind address. All of these parameters are optional. Some of them consist in a single words&#10;(booleans), while other ones expect a value after them. In this case, the value must be provided&#10;immediately after the setting name.&lt;/p&gt;</description></item><item><title>Stanza Upgrade Command (stanza-upgrade)</title><link>https://pig.center/docs/pgbackrest/command/stanza-upgrade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/stanza-upgrade/</guid><description>&lt;p&gt;Immediately after upgrading PostgreSQL to a newer major version, the &lt;code&gt;pg-path&lt;/code&gt; for all pgBackRest configurations must be set to the new database location and the &lt;code&gt;stanza-upgrade&lt;/code&gt; command run. If there is more than one repository configured on the host, the stanza will be upgraded on each. If the database is offline use the &lt;code&gt;--no-online&lt;/code&gt; option.&lt;/p&gt;&#10;&lt;h2 id="command-options"&gt;Command Options&#10;&lt;/h2&gt;&#10;&lt;h3 id="online-option---online"&gt;Online Option (&lt;code&gt;--online&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;Update an online cluster.&lt;/p&gt;</description></item><item><title>6. Cache</title><link>https://pig.center/docs/haproxy/cache/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/cache/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy provides a cache, which was designed to perform cache on small objects (favicon, css&amp;hellip;).&#10;This is a minimalist low-maintenance cache which runs in RAM.&lt;/p&gt;&#10;&lt;p&gt;The cache is based on a memory area shared between all threads, and split in 1kB blocks.&lt;/p&gt;&#10;&lt;p&gt;If an object is not used anymore, it can be deleted to store a new object independently of its&#10;expiration date. The oldest objects are deleted first when we try to allocate a new one.&lt;/p&gt;</description></item><item><title>Start Command (start)</title><link>https://pig.center/docs/pgbackrest/command/start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/start/</guid><description>&lt;p&gt;If the pgBackRest processes were previously stopped using the &lt;code&gt;stop&lt;/code&gt; command then they can be started again using the &lt;code&gt;start&lt;/code&gt; command. Note that this will not immediately start up any pgBackRest processes but they are allowed to run. See &lt;a href="https://pig.center/docs/pgbackrest/user-guide/#starting-and-stopping"&gt;Starting and Stopping&lt;/a&gt;&#10; for more information and examples.&lt;/p&gt;&#10;&lt;h2 id="general-options"&gt;General Options&#10;&lt;/h2&gt;&#10;&lt;h3 id="allow-run-as-root-option---allow-root"&gt;Allow Run as Root Option (&lt;code&gt;--allow-root&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;Allow the command to run as the root user.&lt;/p&gt;</description></item><item><title>7. ACLs and Sample Fetching</title><link>https://pig.center/docs/haproxy/acls-and-samples/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/acls-and-samples/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy is capable of extracting data from request or response streams, from client or server&#10;information, from tables, environmental information etc&amp;hellip; The action of extracting such data is&#10;called fetching a sample. Once retrieved, these samples may be used for various purposes such as a&#10;key to a stick-table, but most common usages consist in matching them against predefined constant&#10;data called patterns.&lt;/p&gt;</description></item><item><title>FAQ</title><link>https://pig.center/docs/patroni/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/patroni/faq/</guid><description>&lt;p&gt;&lt;a id="faq"&gt;&lt;/a&gt;&#10;In this section you will find answers for the most frequently asked questions about Patroni. Each sub-section attempts to focus on different kinds of questions.&lt;/p&gt;&#10;&lt;p&gt;We hope that this helps you to clarify most of your questions. If you still have further concerns or find yourself facing an unexpected issue, please refer to &lt;a href="https://pig.center/docs/patroni/contributing_guidelines/#chatting"&gt;chatting&lt;/a&gt;&#10; and &lt;a href="https://pig.center/docs/patroni/contributing_guidelines/#reporting_bugs"&gt;reporting_bugs&lt;/a&gt;&#10; for instructions on how to get help or report issues.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="comparison-with-other-ha-solutions"&gt;Comparison with other HA solutions&#10;&lt;/h2&gt;&#10;&lt;p&gt;Why does Patroni require a separate cluster of DCS nodes while other solutions like &lt;code&gt;repmgr&lt;/code&gt; do not?&lt;br&gt;&#10;There are different ways of implementing HA solutions, each of them with their pros and cons.&lt;/p&gt;</description></item><item><title>Stop Command (stop)</title><link>https://pig.center/docs/pgbackrest/command/stop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/stop/</guid><description>&lt;p&gt;Does not allow any new pgBackRest processes to run. By default running processes will be allowed to complete successfully. Use the &lt;code&gt;--force&lt;/code&gt; option to terminate running processes.&lt;/p&gt;&#10;&lt;p&gt;pgBackRest processes will return an error if they are run after the stop command completes. See &lt;a href="https://pig.center/docs/pgbackrest/user-guide/#starting-and-stopping"&gt;Starting and Stopping&lt;/a&gt;&#10; for more information and examples.&lt;/p&gt;&#10;&lt;h2 id="command-options"&gt;Command Options&#10;&lt;/h2&gt;&#10;&lt;h3 id="force-option---force"&gt;Force Option (&lt;code&gt;--force&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;Force all pgBackRest processes to stop.&lt;/p&gt;</description></item><item><title>Release notes</title><link>https://pig.center/docs/patroni/releases/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/patroni/releases/</guid><description>&lt;p&gt;&lt;a id="releases"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="version-415"&gt;Version 4.1.5&#10;&lt;/h2&gt;&#10;&lt;p&gt;Released 2026-08-12&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Compatibility improvements&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Compatibility with PostgreSQL 14.24, 15.19, 16.15, 17.11, 18.6 (Alexander Kukushkin)&lt;/p&gt;&#10;&lt;p&gt;Add the new &lt;code&gt;output_plugin_libraries&lt;/code&gt; GUC, which restricts logical decoding output plugins.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Improvements&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Log REST API connection resets at &lt;code&gt;DEBUG&lt;/code&gt; instead of &lt;code&gt;WARNING&lt;/code&gt; (Kyle McLaren)&lt;/p&gt;&#10;&lt;p&gt;Ensure the common &amp;ldquo;client went away mid-write&amp;rdquo; variants are silenced without affecting the handling of genuine (non-connection) errors.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Bugfixes&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Fix &lt;code&gt;thread_stack_size&lt;/code&gt; validation alignment (Sundong Kim)&lt;/p&gt;</description></item><item><title>Verify Command (verify)</title><link>https://pig.center/docs/pgbackrest/command/verify/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/verify/</guid><description>&lt;p&gt;Verify determines if the backups and archives in a repository are valid.&lt;/p&gt;&#10;&lt;h2 id="command-options"&gt;Command Options&#10;&lt;/h2&gt;&#10;&lt;h3 id="output-option---output"&gt;Output Option (&lt;code&gt;--output&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;Output type.&lt;/p&gt;&#10;&lt;p&gt;The following output types are supported:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;none&lt;/code&gt; - No verify output.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;text&lt;/code&gt; - Output verify information to stdout.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-0b746fb1-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="yaml" data-td-line-count="2"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-0b746fb1-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;none&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;example&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--&lt;span class="l"&gt;output=text&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="set-option---set"&gt;Set Option (&lt;code&gt;--set&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;Backup set to verify.&lt;/p&gt;&#10;&lt;p&gt;Verify all database and archive files associated with the specified backup set.&lt;/p&gt;</description></item><item><title>9. Supported Filters</title><link>https://pig.center/docs/haproxy/filters/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/filters/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Here are listed officially supported filters with the list of parameters they accept. Depending on&#10;compile options, some of these filters might be unavailable. The list of available filters is&#10;reported in haproxy -vv.&lt;/p&gt;&#10;&lt;p&gt;See also: &amp;ldquo;filter&amp;rdquo;&lt;/p&gt;&#10;&lt;h2 id="section-9-1"&gt;9.1. Trace&#10;&lt;/h2&gt;&#10;&lt;p&gt;filter trace [name &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt;] [random-forwarding] [max-fwd &lt;code&gt;&amp;lt;max&amp;gt;&lt;/code&gt;] [hexdump]&lt;/p&gt;&#10;&lt;p&gt;Arguments:&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-e6dced40-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="text" data-td-line-count="16"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-e6dced40-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;name&amp;gt; is an arbitrary name that will be reported in&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; messages. If no name is provided, &amp;#34;TRACE&amp;#34; is used.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;quiet&amp;gt; inhibits trace messages.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;random-forwarding&amp;gt; enables the random forwarding of parsed data. By&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; default, this filter forwards all previously parsed&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; data. With this parameter, it only forwards a random&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; amount of the parsed data.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;max&amp;gt; is the maximum amount of data that can be forwarded at&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; a time. &amp;#34;max-fwd&amp;#34; option can be combined with the&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; random forwarding. &amp;lt;max&amp;gt; must be an positive integer.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 0 means there is no limit.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;hexdump&amp;gt; dumps all forwarded data to the server and the client.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;This filter can be used as a base to develop new filters. It defines all callbacks and print a&#10;message on the standard error stream (stderr) with useful information for all of them. It may be&#10;useful to debug the activity of other filters or, quite simply, HAProxy&amp;rsquo;s activity.&lt;/p&gt;</description></item><item><title>Version Command (version)</title><link>https://pig.center/docs/pgbackrest/command/version/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/pgbackrest/command/version/</guid><description>&lt;p&gt;Displays installed pgBackRest version.&lt;/p&gt;&#10;&lt;h2 id="command-options"&gt;Command Options&#10;&lt;/h2&gt;&#10;&lt;h3 id="output-option---output"&gt;Output Option (&lt;code&gt;--output&lt;/code&gt;)&#10;&lt;/h3&gt;&#10;&lt;p&gt;Output type.&lt;/p&gt;&#10;&lt;p&gt;The following output types are supported:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;text&lt;/code&gt; - Display the installed pgBackRest version as text.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;num&lt;/code&gt; - Display the installed pgBackRest version as an integer.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-6fab8499-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="yaml" data-td-line-count="2"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-6fab8499-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;text&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;example&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--&lt;span class="l"&gt;output=num&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;</description></item><item><title>10. FastCGI Applications</title><link>https://pig.center/docs/haproxy/fastcgi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/fastcgi/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy is able to send HTTP requests to Responder FastCGI applications. This feature was added in&#10;HAProxy 2.1. To do so, servers must be configured to use the FastCGI protocol (using the keyword&#10;&amp;ldquo;proto fcgi&amp;rdquo; on the server line) and a FastCGI application must be configured and used by the&#10;backend managing these servers (using the keyword &amp;ldquo;use-fcgi-app&amp;rdquo; into the proxy section). Several&#10;FastCGI applications may be defined, but only one can be used at a time by a backend.&lt;/p&gt;</description></item><item><title>11. Stick Tables and Peers</title><link>https://pig.center/docs/haproxy/stick-tables-and-peers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/stick-tables-and-peers/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Stick-tables in HAProxy are a mechanism which permits to associate a certain number of information&#10;and metrics with a key of a certain type, and this for a certain duration after the last update.&#10;This can be seen as a multicolumn line in a table, where the line number is defined by the key&#10;value, and the columns all represent distinct criteria.&lt;/p&gt;</description></item><item><title>12. Other Sections</title><link>https://pig.center/docs/haproxy/other-sections/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/haproxy/other-sections/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;The sections described below are less commonly used and usually support only a few parameters. There&#10;is no implicit relation between any of them. They&amp;rsquo;re all started using a single keyword. None of&#10;them is permitted before a &amp;ldquo;global&amp;rdquo; section. The support for some of them might be conditioned by&#10;build options (e.g. anything SSL-related).&lt;/p&gt;&#10;&lt;h2 id="section-12-1"&gt;12.1. Traces&#10;&lt;/h2&gt;&#10;&lt;p&gt;For debugging purpose, it is possible to activate traces on an HAProxy&amp;rsquo;s subsystem. This will dump&#10;debug messages about a specific subsystem. It is a very powerful tool to diagnose issues. Traces can&#10;be dynamically configured via the CLI. It is also possible to predefined some settings in the&#10;configuration file, in dedicated &amp;ldquo;traces&amp;rdquo; sections. More details about traces can be found in the&#10;management guide. It remains a developer tools used during complex debugging sessions. It is pretty&#10;verbose and have a cost, so use it with caution. And because it is a developer tool, there is no&#10;warranty about the backward compatibility of this section.&lt;/p&gt;</description></item><item><title>Feature Gates</title><link>https://pig.center/docs/etcd/feature-gates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/feature-gates/</guid><description>&lt;!-- overview --&gt;&#10;&lt;p&gt;This page contains an overview of the various feature gates an administrator&#10;can specify on etcd.&lt;/p&gt;&#10;&lt;p&gt;See &lt;a href="#feature-stages"&gt;feature stages&lt;/a&gt;&#10; for an explanation of the stages for a feature.&lt;/p&gt;&#10;&lt;!-- body --&gt;&#10;&lt;h2 id="overview"&gt;Overview&#10;&lt;/h2&gt;&#10;&lt;p&gt;Feature gates are a set of key=value pairs that describe etcd features.&#10;You can turn these features on or off using the &lt;code&gt;--feature-gates&lt;/code&gt; command line flag&#10;on etcd.&lt;/p&gt;&#10;&lt;p&gt;etcd lets you enable or disable a set of feature gates.&#10;Use &lt;code&gt;-h&lt;/code&gt; flag to see a full set of feature gates.&#10;To set feature gates, use the &lt;code&gt;--feature-gates&lt;/code&gt; flag assigned to a list of feature pairs in commandline:&lt;/p&gt;</description></item><item><title>FAQ</title><link>https://pig.center/docs/etcd/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/faq/</guid><description>&lt;h2 id="etcd-general"&gt;etcd, general&#10;&lt;/h2&gt;&#10;&lt;h3 id="what-is-etcd"&gt;What is etcd?&#10;&lt;/h3&gt;&#10;&lt;p&gt;etcd is a consistent distributed key-value store. Mainly used as a separate coordination service, in distributed systems. And designed to hold small amounts of data that can fit entirely in memory.&lt;/p&gt;&#10;&lt;h3 id="how-do-you-pronounce-etcd"&gt;How do you pronounce etcd?&#10;&lt;/h3&gt;&#10;&lt;p&gt;etcd is pronounced &lt;strong&gt;/ˈɛtsiːdiː/&lt;/strong&gt;, and means &amp;ldquo;distributed &lt;code&gt;etc&lt;/code&gt; directory.&amp;rdquo;&lt;/p&gt;&#10;&lt;h3 id="do-clients-have-to-send-requests-to-the-etcd-leader"&gt;Do clients have to send requests to the etcd leader?&#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;a href="https://raft.github.io/raft.pdf"&gt;Raft&lt;/a&gt;&#10; is leader-based; the leader handles all client requests which need cluster consensus. However, the client does not need to know which node is the leader. Any request that requires consensus sent to a follower is automatically forwarded to the leader. Requests that do not require consensus (e.g., serialized reads) can be processed by any cluster member.&lt;/p&gt;</description></item><item><title>Libraries and tools</title><link>https://pig.center/docs/etcd/integrations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/integrations/</guid><description>&lt;p&gt;Note that third-party libraries and tools (not hosted on &lt;a href="https://github.com/etcd-io"&gt;https://github.com/etcd-io&lt;/a&gt;&#10;) mentioned below are not tested or maintained by the etcd team. Before using them, users are recommended to read and investigate them.&lt;/p&gt;&#10;&lt;h2 id="tools"&gt;Tools&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/etcd-io/etcd/tree/main/etcdctl"&gt;etcdctl&lt;/a&gt;&#10; - A command line client for etcd&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://npmjs.org/package/etcd-dump"&gt;etcd-dump&lt;/a&gt;&#10; - Command line utility for dumping/restoring etcd.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/xetorthio/etcd-fs"&gt;etcd-fs&lt;/a&gt;&#10; - FUSE filesystem for etcd&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/rekby/etcddir"&gt;etcddir&lt;/a&gt;&#10; - Realtime sync etcd and local directory. Work with windows and linux.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/henszey/etcd-browser"&gt;etcd-browser&lt;/a&gt;&#10; - A web-based key/value editor for etcd using AngularJS&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/datawisesystems/etcd-lock"&gt;etcd-lock&lt;/a&gt;&#10; - Master election &amp;amp; distributed r/w lock implementation using etcd - Supports v2&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/matishsiao/etcd-console"&gt;etcd-console&lt;/a&gt;&#10; - A web-base key/value editor for etcd using PHP&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/nikfoundas/etcd-viewer"&gt;etcd-viewer&lt;/a&gt;&#10; - An etcd key-value store editor/viewer written in Java&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/mickep76/etcdtool"&gt;etcdtool&lt;/a&gt;&#10; - Export/Import/Edit etcd directory as JSON/YAML/TOML and Validate directory using JSON schema&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/sinsharat/etcdloadtest"&gt;etcdloadtest&lt;/a&gt;&#10; - A command line load test client for etcd version 3.0 and above.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/olamilekan000/etcd-tui"&gt;etcd-tui&lt;/a&gt;&#10; - A modern terminal user interface (TUI) for interacting with your etcd database. Navigate keys, view values, filter data, and manage your etcd cluster directly from your terminal.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://etcdfinder.github.io"&gt;etcdfinder&lt;/a&gt;&#10; - A lightning-fast, modern web UI for etcd with instant search. Supports both etcd v2 and v3.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/ringtail/lucas"&gt;lucas&lt;/a&gt;&#10; - A web-based key-value viewer for kubernetes etcd3.0+ cluster.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://etcdmanager.io"&gt;etcd-manager&lt;/a&gt;&#10; - A modern, efficient, multi-platform and free etcd 3.x GUI &amp;amp; client tool. Available for Windows, Linux and Mac.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/gardener/etcd-backup-restore"&gt;etcd-backup-restore&lt;/a&gt;&#10; - Utility to periodically and incrementally backup and restore the etcd.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/gardener/etcd-druid"&gt;etcd-druid&lt;/a&gt;&#10; - A Kubernetes operator to deploy etcd clusters and manage day-2 operations.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/kubernetes-sigs/etcdadm"&gt;etcdadm&lt;/a&gt;&#10; - A command-line tool for operating an etcd cluster.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/ahrtr/etcd-defrag"&gt;etcd-defrag&lt;/a&gt;&#10; - An easier to use and smarter etcd defragmentation tool.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/tsonglew/intellij-etcdhelper"&gt;etcdhelper&lt;/a&gt;&#10; - An intellij platform plugin for etcd.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="libraries"&gt;Libraries&#10;&lt;/h2&gt;&#10;&lt;p&gt;The sections below list etcd client libraries by language.&lt;/p&gt;</description></item><item><title>Metrics</title><link>https://pig.center/docs/etcd/metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/metrics/</guid><description>&lt;p&gt;etcd uses &lt;a href="https://prometheus.io/"&gt;Prometheus&lt;/a&gt;&#10; for metrics reporting. The metrics can be used for real-time monitoring and debugging. etcd does not persist its metrics; if a member restarts, the metrics will be reset.&lt;/p&gt;&#10;&lt;p&gt;The simplest way to see the available metrics is to cURL the metrics endpoint &lt;code&gt;/metrics&lt;/code&gt;. The format is described &lt;a href="http://prometheus.io/docs/instrumenting/exposition_formats/"&gt;in the Prometheus docs&lt;/a&gt;&#10;.&lt;/p&gt;&#10;&lt;p&gt;Follow the &lt;a href="https://prometheus.io/docs/introduction/getting_started/"&gt;Prometheus getting started doc&lt;/a&gt;&#10; to spin up a Prometheus server to collect etcd metrics.&lt;/p&gt;&#10;&lt;p&gt;The naming of metrics follows the suggested &lt;a href="https://prometheus.io/docs/practices/naming/"&gt;Prometheus best practices&lt;/a&gt;&#10;. A metric name has an &lt;code&gt;etcd&lt;/code&gt; or &lt;code&gt;etcd_debugging&lt;/code&gt; prefix as its namespace and a subsystem prefix (for example &lt;code&gt;wal&lt;/code&gt; and &lt;code&gt;etcdserver&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Discovery service protocol</title><link>https://pig.center/docs/etcd/dev-guide/discovery_protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/dev-guide/discovery_protocol/</guid><description>&lt;p&gt;Discovery service protocol helps new etcd member to discover all other members in cluster bootstrap phase using a shared discovery URL.&lt;/p&gt;&#10;&lt;p&gt;Discovery service protocol is &lt;em&gt;only&lt;/em&gt; used in cluster bootstrap phase, and cannot be used for runtime reconfiguration or cluster monitoring.&lt;/p&gt;&#10;&lt;p&gt;The protocol uses a new discovery token to bootstrap one &lt;em&gt;unique&lt;/em&gt; etcd cluster. Remember that one discovery token can represent only one etcd cluster. As long as discovery protocol on this token starts, even if it fails halfway, it must not be used to bootstrap another etcd cluster.&lt;/p&gt;</description></item><item><title>Discovery service protocol</title><link>https://pig.center/docs/etcd/dev-internal/discovery_protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/dev-internal/discovery_protocol/</guid><description>&lt;p&gt;Discovery service protocol helps new etcd member to discover all other members in cluster bootstrap phase using a shared discovery token and endpoint list.&lt;/p&gt;&#10;&lt;p&gt;Discovery service protocol is &lt;em&gt;only&lt;/em&gt; used in cluster bootstrap phase, and cannot be used for runtime reconfiguration or cluster monitoring.&lt;/p&gt;&#10;&lt;p&gt;The protocol uses a new discovery token to bootstrap one &lt;em&gt;unique&lt;/em&gt; etcd cluster. Remember that one discovery token can represent only one etcd cluster. As long as discovery protocol on this token starts, even if it fails halfway, it must not be used to bootstrap another etcd cluster.&lt;/p&gt;</description></item><item><title>Logging conventions</title><link>https://pig.center/docs/etcd/dev-internal/logging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/dev-internal/logging/</guid><description>&lt;p&gt;etcd uses the &lt;a href="https://github.com/uber-go/zap"&gt;zap&lt;/a&gt;&#10; library for logging application output categorized into &lt;em&gt;levels&lt;/em&gt;. A log message&amp;rsquo;s level is determined according to these conventions:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;DebugLevel logs are typically voluminous, and are usually disabled in production.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Examples:&#10;&lt;ul&gt;&#10;&lt;li&gt;Send a normal message to a remote peer&lt;/li&gt;&#10;&lt;li&gt;Write a log entry to disk&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;InfoLevel is the default logging priority.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Examples:&#10;&lt;ul&gt;&#10;&lt;li&gt;Startup configuration&lt;/li&gt;&#10;&lt;li&gt;Start to do snapshot&lt;/li&gt;&#10;&lt;li&gt;Add a new node into the cluster&lt;/li&gt;&#10;&lt;li&gt;Add a new user into auth subsystem&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;WarnLevel logs are more important than Info, but don&amp;rsquo;t need individual human review.&lt;/p&gt;</description></item><item><title>Golang modules</title><link>https://pig.center/docs/etcd/dev-internal/modules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/dev-internal/modules/</guid><description>&lt;p&gt;The etcd project (since version 3.5) is organized into multiple&#10;&lt;a href="https://golang.org/ref/mod"&gt;golang modules&lt;/a&gt;&#10; hosted in a &lt;a href="https://golang.org/ref/mod#vcs-dir"&gt;single repository&lt;/a&gt;&#10;.&lt;/p&gt;&#10;&lt;img class="td-image" src="https://pig.center/docs/etcd/dev-internal/img/modules.svg" alt="modules graph" loading="lazy" decoding="async"&gt;&lt;p&gt;There are following modules:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;go.etcd.io/etcd/api/v3&lt;/strong&gt; - contains API definitions&#10;(like protos &amp;amp; proto-generated libraries) that defines communication protocol&#10;between etcd clients and server.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;go.etcd.io/etcd/pkg/v3&lt;/strong&gt; - collection of utility packages used by etcd&#10;without being specific to etcd itself. A package belongs here&#10;only if it could possibly be moved out into its own repository in the future.&#10;Please avoid adding here code that has a lot of dependencies on its own, as&#10;they automatically becoming dependencies of the client library&#10;(that we want to keep lightweight).&lt;/p&gt;</description></item><item><title>Glossary</title><link>https://pig.center/docs/etcd/learning/glossary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/learning/glossary/</guid><description>&lt;p&gt;This document defines the various terms used in etcd documentation, command line and source code.&lt;/p&gt;&#10;&lt;h2 id="alarm"&gt;Alarm&#10;&lt;/h2&gt;&#10;&lt;p&gt;The etcd server raises an alarm whenever the cluster needs operator intervention to remain reliable.&lt;/p&gt;&#10;&lt;h2 id="authentication"&gt;Authentication&#10;&lt;/h2&gt;&#10;&lt;p&gt;Authentication manages user access permissions for etcd resources.&lt;/p&gt;&#10;&lt;h2 id="client"&gt;Client&#10;&lt;/h2&gt;&#10;&lt;p&gt;A client connects to the etcd cluster to issue service requests such as fetching key-value pairs, writing data, or watching for updates.&lt;/p&gt;</description></item><item><title>System limits</title><link>https://pig.center/docs/etcd/dev-guide/limit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/dev-guide/limit/</guid><description>&lt;h2 id="request-size-limit"&gt;Request size limit&#10;&lt;/h2&gt;&#10;&lt;p&gt;etcd is designed to handle small key value pairs typical for metadata. Larger requests will work, but may increase the latency of other requests. By default, the maximum size of any request is 1.5 MiB. This limit is configurable through &lt;code&gt;--max-request-bytes&lt;/code&gt; flag for etcd server.&lt;/p&gt;&#10;&lt;h2 id="storage-size-limit"&gt;Storage size limit&#10;&lt;/h2&gt;&#10;&lt;p&gt;The default storage size limit is 2 GiB, configurable with &lt;code&gt;--quota-backend-bytes&lt;/code&gt; flag. 8 GiB is a suggested maximum size for normal environments and etcd warns at startup if the configured value exceeds it.&lt;/p&gt;</description></item><item><title>etcd features</title><link>https://pig.center/docs/etcd/dev-guide/features/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/dev-guide/features/</guid><description>&lt;p&gt;This document provides an overview of etcd features to help users better understand the features and related deprecation process. If you are interested in knowing about how features are developed in the etcd, please see these &lt;a href="https://github.com/etcd-io/etcd/blob/main/Documentation/contributor-guide/features.md"&gt;development guidelines&lt;/a&gt;&#10;.&lt;/p&gt;&#10;&lt;p&gt;The etcd features fall into three stages, experimental, stable, and unsafe. You can get the list of features by running &lt;code&gt;etcd --help&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h2 id="experimental"&gt;Experimental&#10;&lt;/h2&gt;&#10;&lt;p&gt;In order to get early feedback, any new feature is usually added as an experimental feature. The experimental feature can be identified by looking at the flag name, which should have &lt;code&gt;--experimental&lt;/code&gt; as a prefix. Please consider the following points while using an experimental feature:&lt;/p&gt;</description></item><item><title>API reference</title><link>https://pig.center/docs/etcd/dev-guide/api_reference_v3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/dev-guide/api_reference_v3/</guid><description>&lt;p&gt;This API reference is autogenerated from the named &lt;code&gt;.proto&lt;/code&gt; files.&lt;/p&gt;&#10;&lt;h5 id="service-auth-apietcdserverpbrpcproto"&gt;service &lt;code&gt;Auth&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Method&lt;/th&gt;&#10; &lt;th scope="col"&gt;Request Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Response Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;AuthEnable&lt;/td&gt;&#10; &lt;td&gt;AuthEnableRequest&lt;/td&gt;&#10; &lt;td&gt;AuthEnableResponse&lt;/td&gt;&#10; &lt;td&gt;AuthEnable enables authentication.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;AuthDisable&lt;/td&gt;&#10; &lt;td&gt;AuthDisableRequest&lt;/td&gt;&#10; &lt;td&gt;AuthDisableResponse&lt;/td&gt;&#10; &lt;td&gt;AuthDisable disables authentication.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;AuthStatus&lt;/td&gt;&#10; &lt;td&gt;AuthStatusRequest&lt;/td&gt;&#10; &lt;td&gt;AuthStatusResponse&lt;/td&gt;&#10; &lt;td&gt;AuthStatus displays authentication status.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Authenticate&lt;/td&gt;&#10; &lt;td&gt;AuthenticateRequest&lt;/td&gt;&#10; &lt;td&gt;AuthenticateResponse&lt;/td&gt;&#10; &lt;td&gt;Authenticate processes an authenticate request.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserAdd&lt;/td&gt;&#10; &lt;td&gt;AuthUserAddRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserAddResponse&lt;/td&gt;&#10; &lt;td&gt;UserAdd adds a new user. User name cannot be empty.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserGet&lt;/td&gt;&#10; &lt;td&gt;AuthUserGetRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserGetResponse&lt;/td&gt;&#10; &lt;td&gt;UserGet gets detailed user information.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserList&lt;/td&gt;&#10; &lt;td&gt;AuthUserListRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserListResponse&lt;/td&gt;&#10; &lt;td&gt;UserList gets a list of all users.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserDelete&lt;/td&gt;&#10; &lt;td&gt;AuthUserDeleteRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserDeleteResponse&lt;/td&gt;&#10; &lt;td&gt;UserDelete deletes a specified user.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserChangePassword&lt;/td&gt;&#10; &lt;td&gt;AuthUserChangePasswordRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserChangePasswordResponse&lt;/td&gt;&#10; &lt;td&gt;UserChangePassword changes the password of a specified user.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserGrantRole&lt;/td&gt;&#10; &lt;td&gt;AuthUserGrantRoleRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserGrantRoleResponse&lt;/td&gt;&#10; &lt;td&gt;UserGrant grants a role to a specified user.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserRevokeRole&lt;/td&gt;&#10; &lt;td&gt;AuthUserRevokeRoleRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserRevokeRoleResponse&lt;/td&gt;&#10; &lt;td&gt;UserRevokeRole revokes a role of specified user.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleAdd&lt;/td&gt;&#10; &lt;td&gt;AuthRoleAddRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleAddResponse&lt;/td&gt;&#10; &lt;td&gt;RoleAdd adds a new role. Role name cannot be empty.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleGet&lt;/td&gt;&#10; &lt;td&gt;AuthRoleGetRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleGetResponse&lt;/td&gt;&#10; &lt;td&gt;RoleGet gets detailed role information.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleList&lt;/td&gt;&#10; &lt;td&gt;AuthRoleListRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleListResponse&lt;/td&gt;&#10; &lt;td&gt;RoleList gets lists of all roles.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleDelete&lt;/td&gt;&#10; &lt;td&gt;AuthRoleDeleteRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleDeleteResponse&lt;/td&gt;&#10; &lt;td&gt;RoleDelete deletes a specified role.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleGrantPermission&lt;/td&gt;&#10; &lt;td&gt;AuthRoleGrantPermissionRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleGrantPermissionResponse&lt;/td&gt;&#10; &lt;td&gt;RoleGrantPermission grants a permission of a specified key or range to a specified role.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleRevokePermission&lt;/td&gt;&#10; &lt;td&gt;AuthRoleRevokePermissionRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleRevokePermissionResponse&lt;/td&gt;&#10; &lt;td&gt;RoleRevokePermission revokes a key or range permission of a specified role.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-cluster-apietcdserverpbrpcproto"&gt;service &lt;code&gt;Cluster&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Method&lt;/th&gt;&#10; &lt;th scope="col"&gt;Request Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Response Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberAdd&lt;/td&gt;&#10; &lt;td&gt;MemberAddRequest&lt;/td&gt;&#10; &lt;td&gt;MemberAddResponse&lt;/td&gt;&#10; &lt;td&gt;MemberAdd adds a member into the cluster.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberRemove&lt;/td&gt;&#10; &lt;td&gt;MemberRemoveRequest&lt;/td&gt;&#10; &lt;td&gt;MemberRemoveResponse&lt;/td&gt;&#10; &lt;td&gt;MemberRemove removes an existing member from the cluster.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberUpdate&lt;/td&gt;&#10; &lt;td&gt;MemberUpdateRequest&lt;/td&gt;&#10; &lt;td&gt;MemberUpdateResponse&lt;/td&gt;&#10; &lt;td&gt;MemberUpdate updates the member configuration.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberList&lt;/td&gt;&#10; &lt;td&gt;MemberListRequest&lt;/td&gt;&#10; &lt;td&gt;MemberListResponse&lt;/td&gt;&#10; &lt;td&gt;MemberList lists all the members in the cluster.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberPromote&lt;/td&gt;&#10; &lt;td&gt;MemberPromoteRequest&lt;/td&gt;&#10; &lt;td&gt;MemberPromoteResponse&lt;/td&gt;&#10; &lt;td&gt;MemberPromote promotes a member from raft learner (non-voting) to raft voting member.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-kv-apietcdserverpbrpcproto"&gt;service &lt;code&gt;KV&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Method&lt;/th&gt;&#10; &lt;th scope="col"&gt;Request Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Response Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Range&lt;/td&gt;&#10; &lt;td&gt;RangeRequest&lt;/td&gt;&#10; &lt;td&gt;RangeResponse&lt;/td&gt;&#10; &lt;td&gt;Range gets the keys in the range from the key-value store.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Put&lt;/td&gt;&#10; &lt;td&gt;PutRequest&lt;/td&gt;&#10; &lt;td&gt;PutResponse&lt;/td&gt;&#10; &lt;td&gt;Put puts the given key into the key-value store. A put request increments the revision of the key-value store and generates one event in the event history.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;DeleteRange&lt;/td&gt;&#10; &lt;td&gt;DeleteRangeRequest&lt;/td&gt;&#10; &lt;td&gt;DeleteRangeResponse&lt;/td&gt;&#10; &lt;td&gt;DeleteRange deletes the given range from the key-value store. A delete request increments the revision of the key-value store and generates a delete event in the event history for every deleted key.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Txn&lt;/td&gt;&#10; &lt;td&gt;TxnRequest&lt;/td&gt;&#10; &lt;td&gt;TxnResponse&lt;/td&gt;&#10; &lt;td&gt;Txn processes multiple requests in a single transaction. A txn request increments the revision of the key-value store and generates events with the same revision for every completed request. It is not allowed to modify the same key several times within one txn.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Compact&lt;/td&gt;&#10; &lt;td&gt;CompactionRequest&lt;/td&gt;&#10; &lt;td&gt;CompactionResponse&lt;/td&gt;&#10; &lt;td&gt;Compact compacts the event history in the etcd key-value store. The key-value store should be periodically compacted or the event history will continue to grow indefinitely.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-lease-apietcdserverpbrpcproto"&gt;service &lt;code&gt;Lease&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Method&lt;/th&gt;&#10; &lt;th scope="col"&gt;Request Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Response Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseGrant&lt;/td&gt;&#10; &lt;td&gt;LeaseGrantRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseGrantResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseGrant creates a lease which expires if the server does not receive a keepAlive within a given time to live period. All keys attached to the lease will be expired and deleted if the lease expires. Each expired key generates a delete event in the event history.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseRevoke&lt;/td&gt;&#10; &lt;td&gt;LeaseRevokeRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseRevokeResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseKeepAlive&lt;/td&gt;&#10; &lt;td&gt;LeaseKeepAliveRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseKeepAliveResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client to the server and streaming keep alive responses from the server to the client.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseTimeToLive&lt;/td&gt;&#10; &lt;td&gt;LeaseTimeToLiveRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseTimeToLiveResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseTimeToLive retrieves lease information.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseLeases&lt;/td&gt;&#10; &lt;td&gt;LeaseLeasesRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseLeasesResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseLeases lists all existing leases.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-maintenance-apietcdserverpbrpcproto"&gt;service &lt;code&gt;Maintenance&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Method&lt;/th&gt;&#10; &lt;th scope="col"&gt;Request Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Response Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Alarm&lt;/td&gt;&#10; &lt;td&gt;AlarmRequest&lt;/td&gt;&#10; &lt;td&gt;AlarmResponse&lt;/td&gt;&#10; &lt;td&gt;Alarm activates, deactivates, and queries alarms regarding cluster health.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Status&lt;/td&gt;&#10; &lt;td&gt;StatusRequest&lt;/td&gt;&#10; &lt;td&gt;StatusResponse&lt;/td&gt;&#10; &lt;td&gt;Status gets the status of the member.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Defragment&lt;/td&gt;&#10; &lt;td&gt;DefragmentRequest&lt;/td&gt;&#10; &lt;td&gt;DefragmentResponse&lt;/td&gt;&#10; &lt;td&gt;Defragment defragments a member&amp;rsquo;s backend database to recover storage space.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Hash&lt;/td&gt;&#10; &lt;td&gt;HashRequest&lt;/td&gt;&#10; &lt;td&gt;HashResponse&lt;/td&gt;&#10; &lt;td&gt;Hash computes the hash of whole backend keyspace, including key, lease, and other buckets in storage. This is designed for testing ONLY! Do not rely on this in production with ongoing transactions, since Hash operation does not hold MVCC locks. Use &amp;ldquo;HashKV&amp;rdquo; API instead for &amp;ldquo;key&amp;rdquo; bucket consistency checks.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;HashKV&lt;/td&gt;&#10; &lt;td&gt;HashKVRequest&lt;/td&gt;&#10; &lt;td&gt;HashKVResponse&lt;/td&gt;&#10; &lt;td&gt;HashKV computes the hash of all MVCC keys up to a given revision. It only iterates &amp;ldquo;key&amp;rdquo; bucket in backend storage.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Snapshot&lt;/td&gt;&#10; &lt;td&gt;SnapshotRequest&lt;/td&gt;&#10; &lt;td&gt;SnapshotResponse&lt;/td&gt;&#10; &lt;td&gt;Snapshot sends a snapshot of the entire backend from a member over a stream to a client.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MoveLeader&lt;/td&gt;&#10; &lt;td&gt;MoveLeaderRequest&lt;/td&gt;&#10; &lt;td&gt;MoveLeaderResponse&lt;/td&gt;&#10; &lt;td&gt;MoveLeader requests current leader node to transfer its leadership to transferee.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Downgrade&lt;/td&gt;&#10; &lt;td&gt;DowngradeRequest&lt;/td&gt;&#10; &lt;td&gt;DowngradeResponse&lt;/td&gt;&#10; &lt;td&gt;Downgrade requests downgrades, verifies feasibility or cancels downgrade on the cluster version. Supported since etcd 3.5.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-watch-apietcdserverpbrpcproto"&gt;service &lt;code&gt;Watch&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Method&lt;/th&gt;&#10; &lt;th scope="col"&gt;Request Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Response Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Watch&lt;/td&gt;&#10; &lt;td&gt;WatchRequest&lt;/td&gt;&#10; &lt;td&gt;WatchResponse&lt;/td&gt;&#10; &lt;td&gt;Watch watches for events happening or that have happened. Both input and output are streams; the input stream is for creating and canceling watchers and the output stream sends events. One watch RPC can watch on multiple key ranges, streaming events for several watches at once. The entire event history can be watched starting from the last compaction revision.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-alarmmember-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AlarmMember&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;memberID&lt;/td&gt;&#10; &lt;td&gt;memberID is the ID of the member associated with the raised alarm.&lt;/td&gt;&#10; &lt;td&gt;uint64&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;alarm&lt;/td&gt;&#10; &lt;td&gt;alarm is the type of alarm which has been raised.&lt;/td&gt;&#10; &lt;td&gt;AlarmType&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-alarmrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AlarmRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;action&lt;/td&gt;&#10; &lt;td&gt;action is the kind of alarm request to issue. The action may GET alarm statuses, ACTIVATE an alarm, or DEACTIVATE a raised alarm.&lt;/td&gt;&#10; &lt;td&gt;AlarmAction&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;memberID&lt;/td&gt;&#10; &lt;td&gt;memberID is the ID of the member associated with the alarm. If memberID is 0, the alarm request covers all members.&lt;/td&gt;&#10; &lt;td&gt;uint64&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;alarm&lt;/td&gt;&#10; &lt;td&gt;alarm is the type of alarm to consider for this request.&lt;/td&gt;&#10; &lt;td&gt;AlarmType&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-alarmresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AlarmResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;alarms&lt;/td&gt;&#10; &lt;td&gt;alarms is a list of alarms associated with the alarm request.&lt;/td&gt;&#10; &lt;td&gt;(slice of) AlarmMember&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authdisablerequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthDisableRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authdisableresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthDisableResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authenablerequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthEnableRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authenableresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthEnableResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authroleaddrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleAddRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name is the name of the role to add to the authentication system.&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authroleaddresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleAddResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authroledeleterequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleDeleteRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authroledeleteresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleDeleteResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolegetrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleGetRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolegetresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleGetResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;perm&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;(slice of) authpb.Permission&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolegrantpermissionrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleGrantPermissionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name is the name of the role which will be granted the permission.&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;perm&lt;/td&gt;&#10; &lt;td&gt;perm is the permission to grant to the role.&lt;/td&gt;&#10; &lt;td&gt;authpb.Permission&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolegrantpermissionresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleGrantPermissionResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolelistrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleListRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolelistresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleListResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;roles&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;(slice of) string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolerevokepermissionrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleRevokePermissionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;key&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;range_end&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolerevokepermissionresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleRevokePermissionResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authstatusrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthStatusRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authstatusresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthStatusResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;enabled&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;bool&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;authRevision&lt;/td&gt;&#10; &lt;td&gt;authRevision is the current revision of auth store&lt;/td&gt;&#10; &lt;td&gt;uint64&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuseraddrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserAddRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;password&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;options&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;authpb.UserAddOptions&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;hashedPassword&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuseraddresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserAddResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserchangepasswordrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserChangePasswordRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name is the name of the user whose password is being changed.&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;password&lt;/td&gt;&#10; &lt;td&gt;password is the new password for the user. Note that this field will be removed in the API layer.&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;hashedPassword&lt;/td&gt;&#10; &lt;td&gt;hashedPassword is the new password for the user. Note that this field will be initialized in the API layer.&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserchangepasswordresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserChangePasswordResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserdeleterequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserDeleteRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name is the name of the user to delete.&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserdeleteresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserDeleteResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authusergetrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserGetRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authusergetresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserGetResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;roles&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;(slice of) string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authusergrantrolerequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserGrantRoleRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;user&lt;/td&gt;&#10; &lt;td&gt;user is the name of the user which should be granted a given role.&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;role is the name of the role to grant to the user.&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authusergrantroleresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserGrantRoleResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserlistrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserListRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserlistresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserListResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;users&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;(slice of) string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserrevokerolerequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserRevokeRoleRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserrevokeroleresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserRevokeRoleResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authenticaterequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthenticateRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;password&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authenticateresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthenticateResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;token&lt;/td&gt;&#10; &lt;td&gt;token is an authorized token that can be used in succeeding RPCs&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-compactionrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;CompactionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;p&gt;CompactionRequest compacts the key-value store up to a given revision. All superseded keys with a revision less than the compaction revision will be removed.&lt;/p&gt;</description></item><item><title>API reference: concurrency</title><link>https://pig.center/docs/etcd/dev-guide/api_concurrency_reference_v3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/dev-guide/api_concurrency_reference_v3/</guid><description>&lt;p&gt;This API reference is autogenerated from the named &lt;code&gt;.proto&lt;/code&gt; files.&lt;/p&gt;&#10;&lt;h5 id="service-lock-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;service &lt;code&gt;Lock&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;p&gt;The lock service exposes client-side locking facilities as a gRPC interface.&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Method&lt;/th&gt;&#10; &lt;th scope="col"&gt;Request Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Response Type&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Lock&lt;/td&gt;&#10; &lt;td&gt;LockRequest&lt;/td&gt;&#10; &lt;td&gt;LockResponse&lt;/td&gt;&#10; &lt;td&gt;Lock acquires a distributed shared lock on a given named lock. On success, it will return a unique key that exists so long as the lock is held by the caller. This key can be used in conjunction with transactions to safely ensure updates to etcd only occur while holding lock ownership. The lock is held until Unlock is called on the key or the lease associate with the owner expires.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Unlock&lt;/td&gt;&#10; &lt;td&gt;UnlockRequest&lt;/td&gt;&#10; &lt;td&gt;UnlockResponse&lt;/td&gt;&#10; &lt;td&gt;Unlock takes a key returned by Lock and releases the hold on lock. The next Lock caller waiting for the lock will then be woken up and given ownership of the lock.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-lockrequest-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;message &lt;code&gt;LockRequest&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name is the identifier for the distributed shared lock to be acquired.&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;lease&lt;/td&gt;&#10; &lt;td&gt;lease is the ID of the lease that will be attached to ownership of the lock. If the lease expires or is revoked and currently holds the lock, the lock is automatically released. Calls to Lock with the same lease will be treated as a single acquisition; locking twice with the same lease is a no-op.&lt;/td&gt;&#10; &lt;td&gt;int64&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-lockresponse-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;message &lt;code&gt;LockResponse&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;etcdserverpb.ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;key&lt;/td&gt;&#10; &lt;td&gt;key is a key that will exist on etcd for the duration that the Lock caller owns the lock. Users should not modify this key or the lock may exhibit undefined behavior.&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-unlockrequest-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;message &lt;code&gt;UnlockRequest&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;key&lt;/td&gt;&#10; &lt;td&gt;key is the lock ownership key granted by Lock.&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-unlockresponse-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;message &lt;code&gt;UnlockResponse&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Field&lt;/th&gt;&#10; &lt;th scope="col"&gt;Description&lt;/th&gt;&#10; &lt;th scope="col"&gt;Type&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;etcdserverpb.ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-election-serveretcdserverapiv3electionv3electionpbv3electionproto"&gt;service &lt;code&gt;Election&lt;/code&gt; (server/etcdserver/api/v3election/v3electionpb/v3election.proto)&#10;&lt;/h5&gt;&#10;&lt;p&gt;The election service exposes client-side election facilities as a gRPC interface.&lt;/p&gt;</description></item><item><title>Configuration options</title><link>https://pig.center/docs/etcd/op-guide/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/op-guide/configuration/</guid><description>&lt;p&gt;You can configure etcd through the following:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="#command-line-flags"&gt;Command-line flags&lt;/a&gt;&#10;&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Environment variables&lt;/strong&gt;: every flag has a corresponding environment variable&#10;that has the same name but is prefixed with &lt;code&gt;ETCD_&lt;/code&gt; and formatted in all caps and&#10;&lt;a href="https://en.wikipedia.org/wiki/Snake_case"&gt;snake case&lt;/a&gt;&#10;. For example, &lt;code&gt;--some-flag&lt;/code&gt; would be &lt;code&gt;ETCD_SOME_FLAG&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="#configuration-file"&gt;Configuration file&lt;/a&gt;&#10;&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="td-callout td-callout--warning" role="note"&gt;&#10; &lt;div class="td-callout__title"&gt;&lt;i class="td-callout__icon fa-solid fa-triangle-exclamation" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="td-callout__label"&gt;Warning&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="td-callout__body"&gt;&#10;&lt;p&gt;&lt;strong&gt;Caution&lt;/strong&gt;: If you mix-and-match configuration options, then the following&#10;rules apply.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Command-line flags take precedence over environment variables.&lt;/li&gt;&#10;&lt;li&gt;If you provide a &lt;em&gt;configuration file&lt;/em&gt; all command-line flags and environment variables are &lt;strong&gt;ignored&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="command-line-flags"&gt;Command-line flags&#10;&lt;/h2&gt;&#10;&lt;p&gt;Flags are presented below using the format &lt;code&gt;--flag-name DEFAULT_VALUE&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Hardware recommendations</title><link>https://pig.center/docs/etcd/op-guide/hardware/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/op-guide/hardware/</guid><description>&lt;p&gt;etcd usually runs well with limited resources for development or testing purposes; it’s common to develop with etcd on a laptop or a cheap cloud machine. However, when running etcd clusters in production, some hardware guidelines are useful for proper administration. These suggestions are not hard rules; they serve as a good starting point for a robust production deployment. As always, deployments should be tested with simulated workloads before running in production.&lt;/p&gt;</description></item><item><title>Supported platforms</title><link>https://pig.center/docs/etcd/op-guide/supported-platform/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/op-guide/supported-platform/</guid><description>&lt;h2 id="support-tiers"&gt;Support tiers&#10;&lt;/h2&gt;&#10;&lt;p&gt;etcd runs on different platforms, but the guarantees it provides depends on a&#10;platform&amp;rsquo;s support tier:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Tier 1&lt;/strong&gt;: fully supported by &lt;a href="https://github.com/etcd-io/etcd/blob/main/OWNERS"&gt;etcd maintainers&lt;/a&gt;&#10;; etcd is guaranteed to&#10;pass all tests including functional and robustness tests.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Tier 2&lt;/strong&gt;: etcd is guaranteed to pass integration and end-to-end tests but&#10;not necessarily functional or robustness tests.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Tier 3&lt;/strong&gt;: etcd is guaranteed to build, may be lightly tested (or not), and&#10;so it should be considered &lt;em&gt;unstable&lt;/em&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="current-support"&gt;Current support&#10;&lt;/h2&gt;&#10;&lt;p&gt;The following table lists currently supported platforms and their corresponding&#10;etcd support tier:&lt;/p&gt;</description></item><item><title>Benchmarks</title><link>https://pig.center/docs/etcd/benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/benchmarks/</guid><description>&lt;h2 id="benchmarks"&gt;Benchmarks&#10;&lt;/h2&gt;&#10;&lt;p&gt;etcd benchmarks will be published regularly and tracked for each release below:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/docs/etcd/benchmarks/etcd-2-1-0-alpha-benchmarks/"&gt;etcd v2.1.0-alpha&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/docs/etcd/benchmarks/etcd-2-2-0-rc-benchmarks/"&gt;etcd v2.2.0-rc&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/docs/etcd/benchmarks/etcd-3-demo-benchmarks/"&gt;etcd v3 demo&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="memory-usage-benchmarks"&gt;Memory Usage Benchmarks&#10;&lt;/h2&gt;&#10;&lt;p&gt;It records expected memory usage in different scenarios.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/docs/etcd/benchmarks/etcd-2-2-0-rc-memory-benchmarks/"&gt;etcd v2.2.0-rc&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Storage Memory Usage Benchmark</title><link>https://pig.center/docs/etcd/benchmarks/etcd-storage-memory-benchmark/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/benchmarks/etcd-storage-memory-benchmark/</guid><description>&lt;!---todo: link storage to storage design doc--&gt;&#10;&lt;p&gt;Two components of etcd storage consume physical memory. The etcd process allocates an &lt;em&gt;in-memory index&lt;/em&gt; to speed key lookup. The process&amp;rsquo;s &lt;em&gt;page cache&lt;/em&gt;, managed by the operating system, stores recently-accessed data from disk for quick re-use.&lt;/p&gt;&#10;&lt;p&gt;The in-memory index holds all the keys in a &lt;a href="https://en.wikipedia.org/wiki/B-tree"&gt;B-tree&lt;/a&gt;&#10; data structure, along with pointers to the on-disk data (the values). Each key in the B-tree may contain multiple pointers, pointing to different versions of its values. The theoretical memory consumption of the in-memory index can hence be approximated with the formula:&lt;/p&gt;</description></item><item><title>Watch Memory Usage Benchmark</title><link>https://pig.center/docs/etcd/benchmarks/etcd-3-watch-memory-benchmark/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/benchmarks/etcd-3-watch-memory-benchmark/</guid><description>&lt;div class="td-callout td-callout--note" role="note"&gt;&#10; &lt;div class="td-callout__title"&gt;&lt;i class="td-callout__icon fa-solid fa-circle-info" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="td-callout__label"&gt;Note&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="td-callout__body"&gt;&#10;&lt;p&gt;The watch features are under active development, and their memory usage may change as that development progresses. We do not expect it to significantly increase beyond the figures stated below.&lt;/p&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;A primary goal of etcd is supporting a very large number of watchers doing a massively large amount of watching. etcd aims to support O(10k) clients, O(100K) watch streams (O(10) streams per client) and O(10M) total watchings (O(100) watching per stream). The memory consumed by each individual watching accounts for the largest portion of etcd&amp;rsquo;s overall usage, and is therefore the focus of current and future optimizations.&lt;/p&gt;</description></item><item><title>Benchmarking etcd v3</title><link>https://pig.center/docs/etcd/benchmarks/etcd-3-demo-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/benchmarks/etcd-3-demo-benchmarks/</guid><description>&lt;h2 id="physical-machines"&gt;Physical machines&#10;&lt;/h2&gt;&#10;&lt;p&gt;GCE n1-highcpu-2 machine type&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1x dedicated local SSD mounted under /var/lib/etcd&lt;/li&gt;&#10;&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;&#10;&lt;li&gt;1.8 GB memory&lt;/li&gt;&#10;&lt;li&gt;2x CPUs&lt;/li&gt;&#10;&lt;li&gt;etcd version 2.2.0&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="etcd-cluster"&gt;etcd Cluster&#10;&lt;/h2&gt;&#10;&lt;p&gt;1 etcd member running in v3 demo mode&lt;/p&gt;&#10;&lt;h2 id="testing"&gt;Testing&#10;&lt;/h2&gt;&#10;&lt;p&gt;Use &lt;a href="https://github.com/etcd-io/etcd/tree/main/tools/benchmark"&gt;etcd v3 benchmark tool&lt;/a&gt;&#10;.&lt;/p&gt;&#10;&lt;h2 id="performance"&gt;Performance&#10;&lt;/h2&gt;&#10;&lt;h3 id="reading-one-single-key"&gt;reading one single key&#10;&lt;/h3&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;key size in bytes&lt;/th&gt;&#10; &lt;th scope="col"&gt;number of clients&lt;/th&gt;&#10; &lt;th scope="col"&gt;read QPS&lt;/th&gt;&#10; &lt;th scope="col"&gt;90th Percentile Latency (ms)&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;256&lt;/td&gt;&#10; &lt;td&gt;1&lt;/td&gt;&#10; &lt;td&gt;2716&lt;/td&gt;&#10; &lt;td&gt;0.4&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;256&lt;/td&gt;&#10; &lt;td&gt;64&lt;/td&gt;&#10; &lt;td&gt;16623&lt;/td&gt;&#10; &lt;td&gt;6.1&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;256&lt;/td&gt;&#10; &lt;td&gt;256&lt;/td&gt;&#10; &lt;td&gt;16622&lt;/td&gt;&#10; &lt;td&gt;21.7&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;The performance is nearly the same as the one with empty server handler.&lt;/p&gt;</description></item><item><title>Benchmarking etcd v2.2.0-rc-memory</title><link>https://pig.center/docs/etcd/benchmarks/etcd-2-2-0-rc-memory-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/benchmarks/etcd-2-2-0-rc-memory-benchmarks/</guid><description>&lt;h2 id="physical-machine"&gt;Physical machine&#10;&lt;/h2&gt;&#10;&lt;p&gt;GCE n1-standard-2 machine type&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1x dedicated local SSD mounted under /var/lib/etcd&lt;/li&gt;&#10;&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;&#10;&lt;li&gt;7.5 GB memory&lt;/li&gt;&#10;&lt;li&gt;2x CPUs&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="etcd"&gt;etcd&#10;&lt;/h2&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-87b5403f-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="" data-td-line-count="4"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-87b5403f-fence-0-viewport" data-td-code-viewport&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;etcd Version: 2.2.0-rc.0+git&#10;Git SHA: 103cb5c&#10;Go Version: go1.5&#10;Go OS/Arch: linux/amd64&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="testing"&gt;Testing&#10;&lt;/h2&gt;&#10;&lt;p&gt;Start 3-member etcd cluster, each of which uses 2 cores.&lt;/p&gt;&#10;&lt;p&gt;The length of key name is always 64 bytes, which is a reasonable length of average key bytes.&lt;/p&gt;</description></item><item><title>Benchmarking etcd v2.2.0-rc</title><link>https://pig.center/docs/etcd/benchmarks/etcd-2-2-0-rc-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/benchmarks/etcd-2-2-0-rc-benchmarks/</guid><description>&lt;h2 id="physical-machine"&gt;Physical machine&#10;&lt;/h2&gt;&#10;&lt;p&gt;GCE n1-highcpu-2 machine type&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1x dedicated local SSD mounted under /var/lib/etcd&lt;/li&gt;&#10;&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;&#10;&lt;li&gt;1.8 GB memory&lt;/li&gt;&#10;&lt;li&gt;2x CPUs&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="etcd-cluster"&gt;etcd Cluster&#10;&lt;/h2&gt;&#10;&lt;p&gt;3 etcd 2.2.0-rc members, each runs on a single machine.&lt;/p&gt;&#10;&lt;p&gt;Detailed versions:&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-ad88705c-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="" data-td-line-count="4"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-ad88705c-fence-0-viewport" data-td-code-viewport&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;etcd Version: 2.2.0-alpha.1+git&#10;Git SHA: 59a5a7e&#10;Go Version: go1.4.2&#10;Go OS/Arch: linux/amd64&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Also, we use 3 etcd 2.1.0 alpha-stage members to form cluster to get base performance. etcd&amp;rsquo;s commit head is at &lt;a href="https://github.com/etcd-io/etcd/commits/c7146bd5f2c73716091262edc638401bb8229144"&gt;c7146bd5&lt;/a&gt;&#10;, which is the same as the one that we use in &lt;a href="https://pig.center/docs/etcd/benchmarks/etcd-2-1-0-alpha-benchmarks/"&gt;etcd 2.1 benchmark&lt;/a&gt;&#10;.&lt;/p&gt;</description></item><item><title>Benchmarking etcd v2.2.0</title><link>https://pig.center/docs/etcd/benchmarks/etcd-2-2-0-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/benchmarks/etcd-2-2-0-benchmarks/</guid><description>&lt;h2 id="physical-machines"&gt;Physical Machines&#10;&lt;/h2&gt;&#10;&lt;p&gt;GCE n1-highcpu-2 machine type&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1x dedicated local SSD mounted as etcd data directory&lt;/li&gt;&#10;&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;&#10;&lt;li&gt;1.8 GB memory&lt;/li&gt;&#10;&lt;li&gt;2x CPUs&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="etcd-cluster"&gt;etcd Cluster&#10;&lt;/h2&gt;&#10;&lt;p&gt;3 etcd 2.2.0 members, each runs on a single machine.&lt;/p&gt;&#10;&lt;p&gt;Detailed versions:&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-f4aaa785-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="" data-td-line-count="4"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-f4aaa785-fence-0-viewport" data-td-code-viewport&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;etcd Version: 2.2.0&#10;Git SHA: e4561dd&#10;Go Version: go1.5&#10;Go OS/Arch: linux/amd64&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="testing"&gt;Testing&#10;&lt;/h2&gt;&#10;&lt;p&gt;Bootstrap another machine, outside of the etcd cluster, and run the &lt;a href="https://github.com/rakyll/hey"&gt;&lt;code&gt;hey&lt;/code&gt; HTTP benchmark tool&lt;/a&gt;&#10; with a connection reuse patch to send requests to each etcd cluster member. See the &lt;a href="https://github.com/etcd-io/etcd/tree/v2.3.8/hack/benchmark"&gt;benchmark instructions&lt;/a&gt;&#10; for the patch and the steps to reproduce our procedures.&lt;/p&gt;</description></item><item><title>Benchmarking etcd v2.1.0</title><link>https://pig.center/docs/etcd/benchmarks/etcd-2-1-0-alpha-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/docs/etcd/benchmarks/etcd-2-1-0-alpha-benchmarks/</guid><description>&lt;h2 id="physical-machines"&gt;Physical machines&#10;&lt;/h2&gt;&#10;&lt;p&gt;GCE n1-highcpu-2 machine type&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1x dedicated local SSD mounted under /var/lib/etcd&lt;/li&gt;&#10;&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;&#10;&lt;li&gt;1.8 GB memory&lt;/li&gt;&#10;&lt;li&gt;2x CPUs&lt;/li&gt;&#10;&lt;li&gt;etcd version 2.1.0 alpha&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="etcd-cluster"&gt;etcd Cluster&#10;&lt;/h2&gt;&#10;&lt;p&gt;3 etcd members, each runs on a single machine&lt;/p&gt;&#10;&lt;h2 id="testing"&gt;Testing&#10;&lt;/h2&gt;&#10;&lt;p&gt;Bootstrap another machine and use the &lt;a href="https://github.com/rakyll/hey"&gt;hey HTTP benchmark tool&lt;/a&gt;&#10; to send requests to each etcd member. Check the &lt;a href="https://github.com/etcd-io/etcd/tree/main/hack/benchmark"&gt;benchmark hacking guide&lt;/a&gt;&#10; for detailed instructions.&lt;/p&gt;</description></item></channel></rss>