This commit is contained in:
richvdh committed 2021-06-11 16:14:17 +00:00
1 parent c380a43a42
commit 12c50d6f14
4 files changed
+74 -2

No files matched your search

+36
View File
@@ -267,6 +267,42 @@ has had all background updates run.</p>
</code></pre>
<p>NB at the time of writing, this script predates the split into separate <code>state</code>/<code>main</code>
databases so will require updates to handle that correctly.</p>
<h2 id="boolean-columns"><a class="header" href="#boolean-columns">Boolean columns</a></h2>
<p>Boolean columns require special treatment, since SQLite treats booleans the
same as integers.</p>
<p>There are three separate aspects to this:</p>
<ul>
<li>
<p>Any new boolean column must be added to the <code>BOOLEAN_COLUMNS</code> list in
<code>scripts/synapse_port_db</code>. This tells the port script to cast the integer
value from SQLite to a boolean before writing the value to the postgres
database.</p>
</li>
<li>
<p>Before SQLite 3.23, <code>TRUE</code> and <code>FALSE</code> were not recognised as constants by
SQLite, and the <code>IS [NOT] TRUE</code>/<code>IS [NOT] FALSE</code> operators were not
supported. This makes it necessary to avoid using <code>TRUE</code> and <code>FALSE</code>
constants in SQL commands.</p>
<p>For example, to insert a <code>TRUE</code> value into the database, write:</p>
<pre><code class="language-python">txn.execute(&quot;INSERT INTO tbl(col) VALUES (?)&quot;, (True, ))
</code></pre>
</li>
<li>
<p>Default values for new boolean columns present a particular
difficulty. Generally it is best to create separate schema files for
Postgres and SQLite. For example:</p>
<pre><code class="language-sql"># in 00delta.sql.postgres:
ALTER TABLE tbl ADD COLUMN col BOOLEAN DEFAULT FALSE;
</code></pre>
<pre><code class="language-sql"># in 00delta.sql.sqlite:
ALTER TABLE tbl ADD COLUMN col BOOLEAN DEFAULT 0;
</code></pre>
<p>Note that there is a particularly insidious failure mode here: the Postgres
flavour will be accepted by SQLite 3.22, but will give a column whose
default value is the <strong>string</strong> <code>&quot;FALSE&quot;</code> - which, when cast back to a boolean
in Python, evaluates to <code>True</code>.</p>
</li>
</ul>
</main>
+36
View File
@@ -11465,6 +11465,42 @@ has had all background updates run.</p>
</code></pre>
<p>NB at the time of writing, this script predates the split into separate <code>state</code>/<code>main</code>
databases so will require updates to handle that correctly.</p>
<h2 id="boolean-columns"><a class="header" href="#boolean-columns">Boolean columns</a></h2>
<p>Boolean columns require special treatment, since SQLite treats booleans the
same as integers.</p>
<p>There are three separate aspects to this:</p>
<ul>
<li>
<p>Any new boolean column must be added to the <code>BOOLEAN_COLUMNS</code> list in
<code>scripts/synapse_port_db</code>. This tells the port script to cast the integer
value from SQLite to a boolean before writing the value to the postgres
database.</p>
</li>
<li>
<p>Before SQLite 3.23, <code>TRUE</code> and <code>FALSE</code> were not recognised as constants by
SQLite, and the <code>IS [NOT] TRUE</code>/<code>IS [NOT] FALSE</code> operators were not
supported. This makes it necessary to avoid using <code>TRUE</code> and <code>FALSE</code>
constants in SQL commands.</p>
<p>For example, to insert a <code>TRUE</code> value into the database, write:</p>
<pre><code class="language-python">txn.execute(&quot;INSERT INTO tbl(col) VALUES (?)&quot;, (True, ))
</code></pre>
</li>
<li>
<p>Default values for new boolean columns present a particular
difficulty. Generally it is best to create separate schema files for
Postgres and SQLite. For example:</p>
<pre><code class="language-sql"># in 00delta.sql.postgres:
ALTER TABLE tbl ADD COLUMN col BOOLEAN DEFAULT FALSE;
</code></pre>
<pre><code class="language-sql"># in 00delta.sql.sqlite:
ALTER TABLE tbl ADD COLUMN col BOOLEAN DEFAULT 0;
</code></pre>
<p>Note that there is a particularly insidious failure mode here: the Postgres
flavour will be accepted by SQLite 3.22, but will give a column whose
default value is the <strong>string</strong> <code>&quot;FALSE&quot;</code> - which, when cast back to a boolean
in Python, evaluates to <code>True</code>.</p>
</li>
</ul>
<div id="chapter_begin" style="break-before: page; page-break-before: always;"></div><h1 id="log-contexts"><a class="header" href="#log-contexts">Log Contexts</a></h1>
<p>To help track the processing of individual requests, synapse uses a
'<code>log context</code>' to track which request it is handling at any given
+1 -1
View File
@@ -1 +1 @@
Object.assign(window.search, {"doc_urls":["welcome_and_overview.html#introduction","setup/installation.html#installation-instructions","setup/installation.html#choosing-your-server-name","setup/installation.html#installing-synapse","setup/installation.html#installing-from-source","setup/installation.html#prebuilt-packages","setup/installation.html#setting-up-synapse","setup/installation.html#using-postgresql","setup/installation.html#tls-certificates","setup/installation.html#client-well-known-uri","setup/installation.html#email","setup/installation.html#registering-a-user","setup/installation.html#setting-up-a-turn-server","setup/installation.html#url-previews","setup/installation.html#troubleshooting-installation","postgres.html#using-postgres","postgres.html#install-postgres-client-libraries","postgres.html#set-up-database","postgres.html#synapse-config","postgres.html#tuning-postgres","postgres.html#porting-from-sqlite","postgres.html#overview","postgres.html#using-the-port-script","postgres.html#troubleshooting","postgres.html#alternative-auth-methods","postgres.html#fixing-incorrect-collate-or-ctype","postgres.html#fixing-inconsistent-sequences-error","reverse_proxy.html#using-a-reverse-proxy-with-synapse","reverse_proxy.html#reverse-proxy-configuration-examples","reverse_proxy.html#nginx","reverse_proxy.html#caddy-1","reverse_proxy.html#caddy-2","reverse_proxy.html#apache","reverse_proxy.html#haproxy","reverse_proxy.html#relayd","reverse_proxy.html#homeserver-configuration","reverse_proxy.html#health-check-endpoint","reverse_proxy.html#synapse-administration-endpoints","turn-howto.html#overview","turn-howto.html#requirements","turn-howto.html#coturn-setup","turn-howto.html#initial-installation","turn-howto.html#configuration","turn-howto.html#synapse-setup","turn-howto.html#troubleshooting","delegate.html#delegation","delegate.html#well-known-delegation","delegate.html#srv-dns-record-delegation","delegate.html#delegation-faq","delegate.html#when-do-i-need-delegation","delegate.html#do-you-still-recommend-against-using-a-reverse-proxy-on-the-federation-port","delegate.html#do-i-still-need-to-give-my-tls-certificates-to-synapse-if-i-am-using-a-reverse-proxy","delegate.html#do-i-need-the-same-certificate-for-the-client-and-federation-port","upgrading/index.html#upgrading-synapse","upgrading/index.html#rolling-back-to-older-versions","upgrading/index.html#replace-130-accordingly","upgrading/index.html#replace-130-and-stretch-accordingly","upgrading/index.html#upgrading-to-v1340","upgrading/index.html#room_invite_state_types-configuration-setting","upgrading/index.html#upgrading-to-v1330","upgrading/index.html#account-validity-html-templates-can-now-display-a-users-expiration-date","upgrading/index.html#upgrading-to-v1320","upgrading/index.html#regression-causing-connected-prometheus-instances-to-become-overwhelmed","upgrading/index.html#dropping-support-for-old-python-postgres-and-sqlite-versions","upgrading/index.html#removal-of-old-list-accounts-admin-api","upgrading/index.html#application-services-must-use-type-mloginapplication_service-when-registering-users","upgrading/index.html#upgrading-to-v1290","upgrading/index.html#requirement-for-x-forwarded-proto-header","upgrading/index.html#upgrading-to-v1270","upgrading/index.html#changes-to-callback-uri-for-oauth2--openid-connect-and-saml2","upgrading/index.html#changes-to-html-templates","upgrading/index.html#upgrading-to-v1260","upgrading/index.html#rolling-back-to-v1250-after-a-failed-upgrade","upgrading/index.html#upgrading-to-v1250","upgrading/index.html#last-release-supporting-python-35","upgrading/index.html#blacklisting-ip-ranges","upgrading/index.html#upgrading-to-v1240","upgrading/index.html#custom-openid-connect-mapping-provider-breaking-change","upgrading/index.html#removal-historical-synapse-admin-api","upgrading/index.html#upgrading-to-v1230","upgrading/index.html#structured-logging-configuration-breaking-changes","upgrading/index.html#upgrading-to-v1220","upgrading/index.html#thirdpartyeventrules-breaking-changes","upgrading/index.html#upgrading-to-v1210","upgrading/index.html#forwarding-_synapseclient-through-your-reverse-proxy","upgrading/index.html#new-html-templates","upgrading/index.html#updated-single-sign-on-html-templates","upgrading/index.html#upgrading-to-v1180","upgrading/index.html#docker--py3-suffix-will-be-removed-in-future-versions","upgrading/index.html#redis-replication-is-now-recommended-in-lieu-of-tcp-replication","upgrading/index.html#upgrading-to-v1140","upgrading/index.html#upgrading-to-v1130","upgrading/index.html#incorrect-database-migration-in-old-synapse-versions","upgrading/index.html#new-single-sign-on-html-templates","upgrading/index.html#synapse-sso-plugins-method-deprecation","upgrading/index.html#rolling-back-to-v1124-after-a-failed-upgrade","upgrading/index.html#upgrading-to-v1120","upgrading/index.html#upgrading-to-v1100","upgrading/index.html#upgrading-to-v180","upgrading/index.html#upgrading-to-v170","uLine truncated
Object.assign(window.search, {"doc_urls":["welcome_and_overview.html#introduction","setup/installation.html#installation-instructions","setup/installation.html#choosing-your-server-name","setup/installation.html#installing-synapse","setup/installation.html#installing-from-source","setup/installation.html#prebuilt-packages","setup/installation.html#setting-up-synapse","setup/installation.html#using-postgresql","setup/installation.html#tls-certificates","setup/installation.html#client-well-known-uri","setup/installation.html#email","setup/installation.html#registering-a-user","setup/installation.html#setting-up-a-turn-server","setup/installation.html#url-previews","setup/installation.html#troubleshooting-installation","postgres.html#using-postgres","postgres.html#install-postgres-client-libraries","postgres.html#set-up-database","postgres.html#synapse-config","postgres.html#tuning-postgres","postgres.html#porting-from-sqlite","postgres.html#overview","postgres.html#using-the-port-script","postgres.html#troubleshooting","postgres.html#alternative-auth-methods","postgres.html#fixing-incorrect-collate-or-ctype","postgres.html#fixing-inconsistent-sequences-error","reverse_proxy.html#using-a-reverse-proxy-with-synapse","reverse_proxy.html#reverse-proxy-configuration-examples","reverse_proxy.html#nginx","reverse_proxy.html#caddy-1","reverse_proxy.html#caddy-2","reverse_proxy.html#apache","reverse_proxy.html#haproxy","reverse_proxy.html#relayd","reverse_proxy.html#homeserver-configuration","reverse_proxy.html#health-check-endpoint","reverse_proxy.html#synapse-administration-endpoints","turn-howto.html#overview","turn-howto.html#requirements","turn-howto.html#coturn-setup","turn-howto.html#initial-installation","turn-howto.html#configuration","turn-howto.html#synapse-setup","turn-howto.html#troubleshooting","delegate.html#delegation","delegate.html#well-known-delegation","delegate.html#srv-dns-record-delegation","delegate.html#delegation-faq","delegate.html#when-do-i-need-delegation","delegate.html#do-you-still-recommend-against-using-a-reverse-proxy-on-the-federation-port","delegate.html#do-i-still-need-to-give-my-tls-certificates-to-synapse-if-i-am-using-a-reverse-proxy","delegate.html#do-i-need-the-same-certificate-for-the-client-and-federation-port","upgrading/index.html#upgrading-synapse","upgrading/index.html#rolling-back-to-older-versions","upgrading/index.html#replace-130-accordingly","upgrading/index.html#replace-130-and-stretch-accordingly","upgrading/index.html#upgrading-to-v1340","upgrading/index.html#room_invite_state_types-configuration-setting","upgrading/index.html#upgrading-to-v1330","upgrading/index.html#account-validity-html-templates-can-now-display-a-users-expiration-date","upgrading/index.html#upgrading-to-v1320","upgrading/index.html#regression-causing-connected-prometheus-instances-to-become-overwhelmed","upgrading/index.html#dropping-support-for-old-python-postgres-and-sqlite-versions","upgrading/index.html#removal-of-old-list-accounts-admin-api","upgrading/index.html#application-services-must-use-type-mloginapplication_service-when-registering-users","upgrading/index.html#upgrading-to-v1290","upgrading/index.html#requirement-for-x-forwarded-proto-header","upgrading/index.html#upgrading-to-v1270","upgrading/index.html#changes-to-callback-uri-for-oauth2--openid-connect-and-saml2","upgrading/index.html#changes-to-html-templates","upgrading/index.html#upgrading-to-v1260","upgrading/index.html#rolling-back-to-v1250-after-a-failed-upgrade","upgrading/index.html#upgrading-to-v1250","upgrading/index.html#last-release-supporting-python-35","upgrading/index.html#blacklisting-ip-ranges","upgrading/index.html#upgrading-to-v1240","upgrading/index.html#custom-openid-connect-mapping-provider-breaking-change","upgrading/index.html#removal-historical-synapse-admin-api","upgrading/index.html#upgrading-to-v1230","upgrading/index.html#structured-logging-configuration-breaking-changes","upgrading/index.html#upgrading-to-v1220","upgrading/index.html#thirdpartyeventrules-breaking-changes","upgrading/index.html#upgrading-to-v1210","upgrading/index.html#forwarding-_synapseclient-through-your-reverse-proxy","upgrading/index.html#new-html-templates","upgrading/index.html#updated-single-sign-on-html-templates","upgrading/index.html#upgrading-to-v1180","upgrading/index.html#docker--py3-suffix-will-be-removed-in-future-versions","upgrading/index.html#redis-replication-is-now-recommended-in-lieu-of-tcp-replication","upgrading/index.html#upgrading-to-v1140","upgrading/index.html#upgrading-to-v1130","upgrading/index.html#incorrect-database-migration-in-old-synapse-versions","upgrading/index.html#new-single-sign-on-html-templates","upgrading/index.html#synapse-sso-plugins-method-deprecation","upgrading/index.html#rolling-back-to-v1124-after-a-failed-upgrade","upgrading/index.html#upgrading-to-v1120","upgrading/index.html#upgrading-to-v1100","upgrading/index.html#upgrading-to-v180","upgrading/index.html#upgrading-to-v170","uLine truncated
+1 -1
View File
@@ -1 +1 @@
{"doc_urls":["welcome_and_overview.html#introduction","setup/installation.html#installation-instructions","setup/installation.html#choosing-your-server-name","setup/installation.html#installing-synapse","setup/installation.html#installing-from-source","setup/installation.html#prebuilt-packages","setup/installation.html#setting-up-synapse","setup/installation.html#using-postgresql","setup/installation.html#tls-certificates","setup/installation.html#client-well-known-uri","setup/installation.html#email","setup/installation.html#registering-a-user","setup/installation.html#setting-up-a-turn-server","setup/installation.html#url-previews","setup/installation.html#troubleshooting-installation","postgres.html#using-postgres","postgres.html#install-postgres-client-libraries","postgres.html#set-up-database","postgres.html#synapse-config","postgres.html#tuning-postgres","postgres.html#porting-from-sqlite","postgres.html#overview","postgres.html#using-the-port-script","postgres.html#troubleshooting","postgres.html#alternative-auth-methods","postgres.html#fixing-incorrect-collate-or-ctype","postgres.html#fixing-inconsistent-sequences-error","reverse_proxy.html#using-a-reverse-proxy-with-synapse","reverse_proxy.html#reverse-proxy-configuration-examples","reverse_proxy.html#nginx","reverse_proxy.html#caddy-1","reverse_proxy.html#caddy-2","reverse_proxy.html#apache","reverse_proxy.html#haproxy","reverse_proxy.html#relayd","reverse_proxy.html#homeserver-configuration","reverse_proxy.html#health-check-endpoint","reverse_proxy.html#synapse-administration-endpoints","turn-howto.html#overview","turn-howto.html#requirements","turn-howto.html#coturn-setup","turn-howto.html#initial-installation","turn-howto.html#configuration","turn-howto.html#synapse-setup","turn-howto.html#troubleshooting","delegate.html#delegation","delegate.html#well-known-delegation","delegate.html#srv-dns-record-delegation","delegate.html#delegation-faq","delegate.html#when-do-i-need-delegation","delegate.html#do-you-still-recommend-against-using-a-reverse-proxy-on-the-federation-port","delegate.html#do-i-still-need-to-give-my-tls-certificates-to-synapse-if-i-am-using-a-reverse-proxy","delegate.html#do-i-need-the-same-certificate-for-the-client-and-federation-port","upgrading/index.html#upgrading-synapse","upgrading/index.html#rolling-back-to-older-versions","upgrading/index.html#replace-130-accordingly","upgrading/index.html#replace-130-and-stretch-accordingly","upgrading/index.html#upgrading-to-v1340","upgrading/index.html#room_invite_state_types-configuration-setting","upgrading/index.html#upgrading-to-v1330","upgrading/index.html#account-validity-html-templates-can-now-display-a-users-expiration-date","upgrading/index.html#upgrading-to-v1320","upgrading/index.html#regression-causing-connected-prometheus-instances-to-become-overwhelmed","upgrading/index.html#dropping-support-for-old-python-postgres-and-sqlite-versions","upgrading/index.html#removal-of-old-list-accounts-admin-api","upgrading/index.html#application-services-must-use-type-mloginapplication_service-when-registering-users","upgrading/index.html#upgrading-to-v1290","upgrading/index.html#requirement-for-x-forwarded-proto-header","upgrading/index.html#upgrading-to-v1270","upgrading/index.html#changes-to-callback-uri-for-oauth2--openid-connect-and-saml2","upgrading/index.html#changes-to-html-templates","upgrading/index.html#upgrading-to-v1260","upgrading/index.html#rolling-back-to-v1250-after-a-failed-upgrade","upgrading/index.html#upgrading-to-v1250","upgrading/index.html#last-release-supporting-python-35","upgrading/index.html#blacklisting-ip-ranges","upgrading/index.html#upgrading-to-v1240","upgrading/index.html#custom-openid-connect-mapping-provider-breaking-change","upgrading/index.html#removal-historical-synapse-admin-api","upgrading/index.html#upgrading-to-v1230","upgrading/index.html#structured-logging-configuration-breaking-changes","upgrading/index.html#upgrading-to-v1220","upgrading/index.html#thirdpartyeventrules-breaking-changes","upgrading/index.html#upgrading-to-v1210","upgrading/index.html#forwarding-_synapseclient-through-your-reverse-proxy","upgrading/index.html#new-html-templates","upgrading/index.html#updated-single-sign-on-html-templates","upgrading/index.html#upgrading-to-v1180","upgrading/index.html#docker--py3-suffix-will-be-removed-in-future-versions","upgrading/index.html#redis-replication-is-now-recommended-in-lieu-of-tcp-replication","upgrading/index.html#upgrading-to-v1140","upgrading/index.html#upgrading-to-v1130","upgrading/index.html#incorrect-database-migration-in-old-synapse-versions","upgrading/index.html#new-single-sign-on-html-templates","upgrading/index.html#synapse-sso-plugins-method-deprecation","upgrading/index.html#rolling-back-to-v1124-after-a-failed-upgrade","upgrading/index.html#upgrading-to-v1120","upgrading/index.html#upgrading-to-v1100","upgrading/index.html#upgrading-to-v180","upgrading/index.html#upgrading-to-v170","upgrading/index.html#upgradingLine truncated
{"doc_urls":["welcome_and_overview.html#introduction","setup/installation.html#installation-instructions","setup/installation.html#choosing-your-server-name","setup/installation.html#installing-synapse","setup/installation.html#installing-from-source","setup/installation.html#prebuilt-packages","setup/installation.html#setting-up-synapse","setup/installation.html#using-postgresql","setup/installation.html#tls-certificates","setup/installation.html#client-well-known-uri","setup/installation.html#email","setup/installation.html#registering-a-user","setup/installation.html#setting-up-a-turn-server","setup/installation.html#url-previews","setup/installation.html#troubleshooting-installation","postgres.html#using-postgres","postgres.html#install-postgres-client-libraries","postgres.html#set-up-database","postgres.html#synapse-config","postgres.html#tuning-postgres","postgres.html#porting-from-sqlite","postgres.html#overview","postgres.html#using-the-port-script","postgres.html#troubleshooting","postgres.html#alternative-auth-methods","postgres.html#fixing-incorrect-collate-or-ctype","postgres.html#fixing-inconsistent-sequences-error","reverse_proxy.html#using-a-reverse-proxy-with-synapse","reverse_proxy.html#reverse-proxy-configuration-examples","reverse_proxy.html#nginx","reverse_proxy.html#caddy-1","reverse_proxy.html#caddy-2","reverse_proxy.html#apache","reverse_proxy.html#haproxy","reverse_proxy.html#relayd","reverse_proxy.html#homeserver-configuration","reverse_proxy.html#health-check-endpoint","reverse_proxy.html#synapse-administration-endpoints","turn-howto.html#overview","turn-howto.html#requirements","turn-howto.html#coturn-setup","turn-howto.html#initial-installation","turn-howto.html#configuration","turn-howto.html#synapse-setup","turn-howto.html#troubleshooting","delegate.html#delegation","delegate.html#well-known-delegation","delegate.html#srv-dns-record-delegation","delegate.html#delegation-faq","delegate.html#when-do-i-need-delegation","delegate.html#do-you-still-recommend-against-using-a-reverse-proxy-on-the-federation-port","delegate.html#do-i-still-need-to-give-my-tls-certificates-to-synapse-if-i-am-using-a-reverse-proxy","delegate.html#do-i-need-the-same-certificate-for-the-client-and-federation-port","upgrading/index.html#upgrading-synapse","upgrading/index.html#rolling-back-to-older-versions","upgrading/index.html#replace-130-accordingly","upgrading/index.html#replace-130-and-stretch-accordingly","upgrading/index.html#upgrading-to-v1340","upgrading/index.html#room_invite_state_types-configuration-setting","upgrading/index.html#upgrading-to-v1330","upgrading/index.html#account-validity-html-templates-can-now-display-a-users-expiration-date","upgrading/index.html#upgrading-to-v1320","upgrading/index.html#regression-causing-connected-prometheus-instances-to-become-overwhelmed","upgrading/index.html#dropping-support-for-old-python-postgres-and-sqlite-versions","upgrading/index.html#removal-of-old-list-accounts-admin-api","upgrading/index.html#application-services-must-use-type-mloginapplication_service-when-registering-users","upgrading/index.html#upgrading-to-v1290","upgrading/index.html#requirement-for-x-forwarded-proto-header","upgrading/index.html#upgrading-to-v1270","upgrading/index.html#changes-to-callback-uri-for-oauth2--openid-connect-and-saml2","upgrading/index.html#changes-to-html-templates","upgrading/index.html#upgrading-to-v1260","upgrading/index.html#rolling-back-to-v1250-after-a-failed-upgrade","upgrading/index.html#upgrading-to-v1250","upgrading/index.html#last-release-supporting-python-35","upgrading/index.html#blacklisting-ip-ranges","upgrading/index.html#upgrading-to-v1240","upgrading/index.html#custom-openid-connect-mapping-provider-breaking-change","upgrading/index.html#removal-historical-synapse-admin-api","upgrading/index.html#upgrading-to-v1230","upgrading/index.html#structured-logging-configuration-breaking-changes","upgrading/index.html#upgrading-to-v1220","upgrading/index.html#thirdpartyeventrules-breaking-changes","upgrading/index.html#upgrading-to-v1210","upgrading/index.html#forwarding-_synapseclient-through-your-reverse-proxy","upgrading/index.html#new-html-templates","upgrading/index.html#updated-single-sign-on-html-templates","upgrading/index.html#upgrading-to-v1180","upgrading/index.html#docker--py3-suffix-will-be-removed-in-future-versions","upgrading/index.html#redis-replication-is-now-recommended-in-lieu-of-tcp-replication","upgrading/index.html#upgrading-to-v1140","upgrading/index.html#upgrading-to-v1130","upgrading/index.html#incorrect-database-migration-in-old-synapse-versions","upgrading/index.html#new-single-sign-on-html-templates","upgrading/index.html#synapse-sso-plugins-method-deprecation","upgrading/index.html#rolling-back-to-v1124-after-a-failed-upgrade","upgrading/index.html#upgrading-to-v1120","upgrading/index.html#upgrading-to-v1100","upgrading/index.html#upgrading-to-v180","upgrading/index.html#upgrading-to-v170","upgrading/index.html#upgradingLine truncated