You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2021/12/03 07:44:28 UTC

[pulsar] branch asf-site updated: Updated site at revision b2b5463

This is an automated email from the ASF dual-hosted git repository.

penghui pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 647a69d  Updated site at revision b2b5463
647a69d is described below

commit 647a69d167236e54f546b93c801bdbb5002a4a8c
Author: Pulsar Site Updater <de...@pulsar.incubator.apache.org>
AuthorDate: Fri Dec 3 07:43:14 2021 +0000

    Updated site at revision b2b5463
---
 content/api/python/2.10.0-SNAPSHOT/index.html      |   6 +-
 content/api/python/index.html                      |   6 +-
 content/docs/en/next/security-oauth2.html          |   4 +-
 content/docs/en/next/security-oauth2/index.html    |   4 +-
 .../docs/fr/next/cookbooks-retention-expiry.html   |   5 +-
 .../fr/next/cookbooks-retention-expiry/index.html  |   5 +-
 content/docs/fr/next/develop-binary-protocol.html  |   2 +
 .../fr/next/develop-binary-protocol/index.html     |   2 +
 content/docs/fr/next/io-debug.html                 |  22 +-
 content/docs/fr/next/io-debug/index.html           |  22 +-
 content/docs/fr/next/reference-cli-tools.html      |  18 +-
 .../docs/fr/next/reference-cli-tools/index.html    |  18 +-
 .../docs/ja/next/cookbooks-retention-expiry.html   |   5 +-
 .../ja/next/cookbooks-retention-expiry/index.html  |   5 +-
 content/docs/ja/next/develop-binary-protocol.html  |   2 +
 .../ja/next/develop-binary-protocol/index.html     |   2 +
 content/docs/ja/next/io-debug.html                 |  22 +-
 content/docs/ja/next/io-debug/index.html           |  22 +-
 content/docs/ja/next/reference-cli-tools.html      |  18 +-
 .../docs/ja/next/reference-cli-tools/index.html    |  18 +-
 .../docs/ko/next/cookbooks-retention-expiry.html   |   5 +-
 .../ko/next/cookbooks-retention-expiry/index.html  |   5 +-
 content/docs/ko/next/develop-binary-protocol.html  |   2 +
 .../ko/next/develop-binary-protocol/index.html     |   2 +
 content/docs/ko/next/io-debug.html                 |  22 +-
 content/docs/ko/next/io-debug/index.html           |  22 +-
 content/docs/ko/next/reference-cli-tools.html      |  18 +-
 .../docs/ko/next/reference-cli-tools/index.html    |  18 +-
 .../zh-CN/next/cookbooks-retention-expiry.html     |   5 +-
 .../next/cookbooks-retention-expiry/index.html     |   5 +-
 .../docs/zh-CN/next/develop-binary-protocol.html   |   2 +
 .../zh-CN/next/develop-binary-protocol/index.html  |   2 +
 content/docs/zh-CN/next/io-debug.html              |  22 +-
 content/docs/zh-CN/next/io-debug/index.html        |  22 +-
 content/docs/zh-CN/next/reference-cli-tools.html   |  74 +-
 .../docs/zh-CN/next/reference-cli-tools/index.html |  74 +-
 .../zh-TW/next/cookbooks-retention-expiry.html     |   5 +-
 .../next/cookbooks-retention-expiry/index.html     |   5 +-
 .../docs/zh-TW/next/develop-binary-protocol.html   |   2 +
 .../zh-TW/next/develop-binary-protocol/index.html  |   2 +
 content/docs/zh-TW/next/io-debug.html              |  22 +-
 content/docs/zh-TW/next/io-debug/index.html        |  22 +-
 content/docs/zh-TW/next/reference-cli-tools.html   |  18 +-
 .../docs/zh-TW/next/reference-cli-tools/index.html |  18 +-
 content/en/resources.html                          |   2 +-
 content/en/resources/index.html                    |   2 +-
 content/fr/resources.html                          |   2 +-
 content/fr/resources/index.html                    |   2 +-
 content/ja/resources.html                          |   2 +-
 content/ja/resources/index.html                    |   2 +-
 content/ko/resources.html                          |   2 +-
 content/ko/resources/index.html                    |   2 +-
 content/resources.html                             |   2 +-
 content/resources/index.html                       |   2 +-
 content/swagger/2.10.0-SNAPSHOT/swagger.json       | 894 ++++++++++----------
 .../swagger/2.10.0-SNAPSHOT/swaggerfunctions.json  | 402 ++++-----
 .../swagger/2.10.0-SNAPSHOT/swaggerpackages.json   | 284 +++----
 content/swagger/2.10.0-SNAPSHOT/swaggersink.json   | 284 +++----
 content/swagger/2.10.0-SNAPSHOT/swaggersource.json | 284 +++----
 content/swagger/2.10.0-SNAPSHOT/v2/swagger.json    | 900 ++++++++++-----------
 .../2.10.0-SNAPSHOT/v3/swaggerfunctions.json       | 406 +++++-----
 .../2.10.0-SNAPSHOT/v3/swaggerpackages.json        | 288 +++----
 .../swagger/2.10.0-SNAPSHOT/v3/swaggersink.json    | 288 +++----
 .../swagger/2.10.0-SNAPSHOT/v3/swaggersource.json  | 288 +++----
 content/swagger/master/swagger.json                | 894 ++++++++++----------
 content/swagger/master/swaggerfunctions.json       | 402 ++++-----
 content/swagger/master/swaggerpackages.json        | 284 +++----
 content/swagger/master/swaggersink.json            | 284 +++----
 content/swagger/master/swaggersource.json          | 284 +++----
 content/swagger/master/v2/swagger.json             | 900 ++++++++++-----------
 content/swagger/master/v3/swaggerfunctions.json    | 406 +++++-----
 content/swagger/master/v3/swaggerpackages.json     | 288 +++----
 content/swagger/master/v3/swaggersink.json         | 288 +++----
 content/swagger/master/v3/swaggersource.json       | 288 +++----
 content/zh-CN/resources.html                       |   2 +-
 content/zh-CN/resources/index.html                 |   2 +-
 content/zh-TW/resources.html                       |   2 +-
 content/zh-TW/resources/index.html                 |   2 +-
 78 files changed, 4708 insertions(+), 4558 deletions(-)

diff --git a/content/api/python/2.10.0-SNAPSHOT/index.html b/content/api/python/2.10.0-SNAPSHOT/index.html
index 8dd6662..b31d40c 100644
--- a/content/api/python/2.10.0-SNAPSHOT/index.html
+++ b/content/api/python/2.10.0-SNAPSHOT/index.html
@@ -3764,7 +3764,7 @@ producers and consumers.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_producer">
-    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fc230d30cd0&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
+    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f19efa0bcd0&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
     </div>
     
 
@@ -4018,7 +4018,7 @@ batched into single batch message:
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_reader">
-    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fc22fe271d0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
+    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f19e7f921d0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
     </div>
     
 
@@ -4235,7 +4235,7 @@ for ongoing operations to complete.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.subscribe">
-    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fc22fe27110&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
+    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f19e7f92110&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
     </div>
     
 
diff --git a/content/api/python/index.html b/content/api/python/index.html
index 8dd6662..b31d40c 100644
--- a/content/api/python/index.html
+++ b/content/api/python/index.html
@@ -3764,7 +3764,7 @@ producers and consumers.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_producer">
-    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fc230d30cd0&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
+    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f19efa0bcd0&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
     </div>
     
 
@@ -4018,7 +4018,7 @@ batched into single batch message:
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_reader">
-    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fc22fe271d0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
+    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f19e7f921d0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
     </div>
     
 
@@ -4235,7 +4235,7 @@ for ongoing operations to complete.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.subscribe">
-    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fc22fe27110&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
+    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f19e7f92110&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
     </div>
     
 
diff --git a/content/docs/en/next/security-oauth2.html b/content/docs/en/next/security-oauth2.html
index 1471f44..9108b2f 100644
--- a/content/docs/en/next/security-oauth2.html
+++ b/content/docs/en/next/security-oauth2.html
@@ -94,7 +94,7 @@
 <tr><td><code>type</code></td><td>Oauth 2.0 authentication type.</td><td><code>client_credentials</code> (default)</td><td>Optional</td></tr>
 <tr><td><code>issuerUrl</code></td><td>URL of the authentication provider which allows the Pulsar client to obtain an access token</td><td><code>https://accounts.google.com</code></td><td>Required</td></tr>
 <tr><td><code>privateKey</code></td><td>URL to a JSON credentials file</td><td>Support the following pattern formats: <br> <li> <code>file:///path/to/file</code> <li><code>file:/path/to/file</code> <li> <code>data:application/json;base64,&lt;base64-encoded value&gt;</code></td><td>Required</td></tr>
-<tr><td><code>audience</code></td><td>An OAuth 2.0 &quot;resource server&quot; identifier for the Pulsar cluster</td><td><code>https://broker.example.com</code></td><td>Required</td></tr>
+<tr><td><code>audience</code></td><td>An OAuth 2.0 &quot;resource server&quot; identifier for the Pulsar cluster</td><td><code>https://broker.example.com</code></td><td>Optional</td></tr>
 <tr><td><code>scope</code></td><td>Scope of an access request. <br />For more more information, see <a href="https://datatracker.ietf.org/doc/html/rfc6749#section-3.3">access token scope</a>.</td><td><a href="api://pulsar-cluster-1/.default">api://pulsar-cluster-1/.default</a></td><td>Optional</td></tr>
 </tbody>
 </table>
@@ -123,7 +123,7 @@
 <ul>
 <li>The <code>issuerUrl</code> parameter in this plugin is mapped to <code>--url https://dev-kt-aa9ne.us.auth0.com</code>.</li>
 <li>The <code>privateKey</code> file parameter in this plugin should at least contains the <code>client_id</code> and <code>client_secret</code> fields.</li>
-<li>The <code>audience</code> parameter in this plugin is mapped to  <code>&quot;audience&quot;:&quot;https://dev-kt-aa9ne.us.auth0.com/api/v2/&quot;</code>.</li>
+<li>The <code>audience</code> parameter in this plugin is mapped to  <code>&quot;audience&quot;:&quot;https://dev-kt-aa9ne.us.auth0.com/api/v2/&quot;</code>. This field is only used by some identity providers.</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="client-configuration"></a><a href="#client-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
 <p>You can use the OAuth2 authentication provider with the following Pulsar clients.</p>
diff --git a/content/docs/en/next/security-oauth2/index.html b/content/docs/en/next/security-oauth2/index.html
index 1471f44..9108b2f 100644
--- a/content/docs/en/next/security-oauth2/index.html
+++ b/content/docs/en/next/security-oauth2/index.html
@@ -94,7 +94,7 @@
 <tr><td><code>type</code></td><td>Oauth 2.0 authentication type.</td><td><code>client_credentials</code> (default)</td><td>Optional</td></tr>
 <tr><td><code>issuerUrl</code></td><td>URL of the authentication provider which allows the Pulsar client to obtain an access token</td><td><code>https://accounts.google.com</code></td><td>Required</td></tr>
 <tr><td><code>privateKey</code></td><td>URL to a JSON credentials file</td><td>Support the following pattern formats: <br> <li> <code>file:///path/to/file</code> <li><code>file:/path/to/file</code> <li> <code>data:application/json;base64,&lt;base64-encoded value&gt;</code></td><td>Required</td></tr>
-<tr><td><code>audience</code></td><td>An OAuth 2.0 &quot;resource server&quot; identifier for the Pulsar cluster</td><td><code>https://broker.example.com</code></td><td>Required</td></tr>
+<tr><td><code>audience</code></td><td>An OAuth 2.0 &quot;resource server&quot; identifier for the Pulsar cluster</td><td><code>https://broker.example.com</code></td><td>Optional</td></tr>
 <tr><td><code>scope</code></td><td>Scope of an access request. <br />For more more information, see <a href="https://datatracker.ietf.org/doc/html/rfc6749#section-3.3">access token scope</a>.</td><td><a href="api://pulsar-cluster-1/.default">api://pulsar-cluster-1/.default</a></td><td>Optional</td></tr>
 </tbody>
 </table>
@@ -123,7 +123,7 @@
 <ul>
 <li>The <code>issuerUrl</code> parameter in this plugin is mapped to <code>--url https://dev-kt-aa9ne.us.auth0.com</code>.</li>
 <li>The <code>privateKey</code> file parameter in this plugin should at least contains the <code>client_id</code> and <code>client_secret</code> fields.</li>
-<li>The <code>audience</code> parameter in this plugin is mapped to  <code>&quot;audience&quot;:&quot;https://dev-kt-aa9ne.us.auth0.com/api/v2/&quot;</code>.</li>
+<li>The <code>audience</code> parameter in this plugin is mapped to  <code>&quot;audience&quot;:&quot;https://dev-kt-aa9ne.us.auth0.com/api/v2/&quot;</code>. This field is only used by some identity providers.</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="client-configuration"></a><a href="#client-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
 <p>You can use the OAuth2 authentication provider with the following Pulsar clients.</p>
diff --git a/content/docs/fr/next/cookbooks-retention-expiry.html b/content/docs/fr/next/cookbooks-retention-expiry.html
index c5d3ba3..de81bdf 100644
--- a/content/docs/fr/next/cookbooks-retention-expiry.html
+++ b/content/docs/fr/next/cookbooks-retention-expiry.html
@@ -144,10 +144,9 @@ To disable the retention policy, you need to set both the size and time limit to
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="backlog-quotas"></a><a href="#backlog-quotas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p><em>Backlogs</em> are sets of unacknowledged messages for a topic that have been stored by bookies. Pulsar stores all unacknowledged messages in backlogs until they are processed and acknowledged.</p>
-<p>You can control the allowable size of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
-<p>TODO: Expand on is this per backlog or per topic?</p>
+<p>You can control the allowable size and/or time of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
 <ul>
-<li>an allowable <em>size threshold</em> for each topic in the namespace</li>
+<li>an allowable <em>size and/or time threshold</em> for each topic in the namespace</li>
 <li>a <em>retention policy</em> that determines which action the <a href="/docs/fr/next/reference-terminology#broker">broker</a> takes if the threshold is exceeded.</li>
 </ul>
 <p>The following retention policies are available:</p>
diff --git a/content/docs/fr/next/cookbooks-retention-expiry/index.html b/content/docs/fr/next/cookbooks-retention-expiry/index.html
index c5d3ba3..de81bdf 100644
--- a/content/docs/fr/next/cookbooks-retention-expiry/index.html
+++ b/content/docs/fr/next/cookbooks-retention-expiry/index.html
@@ -144,10 +144,9 @@ To disable the retention policy, you need to set both the size and time limit to
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="backlog-quotas"></a><a href="#backlog-quotas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p><em>Backlogs</em> are sets of unacknowledged messages for a topic that have been stored by bookies. Pulsar stores all unacknowledged messages in backlogs until they are processed and acknowledged.</p>
-<p>You can control the allowable size of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
-<p>TODO: Expand on is this per backlog or per topic?</p>
+<p>You can control the allowable size and/or time of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
 <ul>
-<li>an allowable <em>size threshold</em> for each topic in the namespace</li>
+<li>an allowable <em>size and/or time threshold</em> for each topic in the namespace</li>
 <li>a <em>retention policy</em> that determines which action the <a href="/docs/fr/next/reference-terminology#broker">broker</a> takes if the threshold is exceeded.</li>
 </ul>
 <p>The following retention policies are available:</p>
diff --git a/content/docs/fr/next/develop-binary-protocol.html b/content/docs/fr/next/develop-binary-protocol.html
index 3796839..98cbb5a 100644
--- a/content/docs/fr/next/develop-binary-protocol.html
+++ b/content/docs/fr/next/develop-binary-protocol.html
@@ -206,6 +206,7 @@
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>Once the client gets confirmation of the producer creation, it can publish messages to the broker, referring to the producer id negotiated before.</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
+<p>If the client does not receive a response indicating producer creation success or failure, the client should first send a command to close the original producer before sending a command to re-attempt producer creation.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-producer"></a><a href="#command-producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandProducer</span> </span>{
   <span class="hljs-string">"topic"</span> : <span class="hljs-string">"persistent://my-property/my-cluster/my-namespace/my-topic"</span>,
@@ -246,6 +247,7 @@
 <h5><a class="anchor" aria-hidden="true" id="command-closeproducer"></a><a href="#command-closeproducer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p><strong>Note</strong>: <em>This command can be sent by either producer or broker</em>.</p>
 <p>When receiving a <code>CloseProducer</code> command, the broker will stop accepting any more messages for the producer, wait until all pending messages are persisted and then reply <code>Success</code> to the client.</p>
+<p>If the client does not receive a response to a <code>Producer</code> command within a timeout, the client must first send a <code>CloseProducer</code> command before sending another <code>Producer</code> command. The client does not need to await a response to the <code>CloseProducer</code> command before sending the next <code>Producer</code> command.</p>
 <p>The broker can send a <code>CloseProducer</code> command to client when it's performing a graceful failover (eg: broker is being restarted, or the topic is being unloaded by load balancer to be transferred to a different broker).</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
 <h3><a class="anchor" aria-hidden="true" id="consumer"></a><a href="#consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
diff --git a/content/docs/fr/next/develop-binary-protocol/index.html b/content/docs/fr/next/develop-binary-protocol/index.html
index 3796839..98cbb5a 100644
--- a/content/docs/fr/next/develop-binary-protocol/index.html
+++ b/content/docs/fr/next/develop-binary-protocol/index.html
@@ -206,6 +206,7 @@
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>Once the client gets confirmation of the producer creation, it can publish messages to the broker, referring to the producer id negotiated before.</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
+<p>If the client does not receive a response indicating producer creation success or failure, the client should first send a command to close the original producer before sending a command to re-attempt producer creation.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-producer"></a><a href="#command-producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandProducer</span> </span>{
   <span class="hljs-string">"topic"</span> : <span class="hljs-string">"persistent://my-property/my-cluster/my-namespace/my-topic"</span>,
@@ -246,6 +247,7 @@
 <h5><a class="anchor" aria-hidden="true" id="command-closeproducer"></a><a href="#command-closeproducer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p><strong>Note</strong>: <em>This command can be sent by either producer or broker</em>.</p>
 <p>When receiving a <code>CloseProducer</code> command, the broker will stop accepting any more messages for the producer, wait until all pending messages are persisted and then reply <code>Success</code> to the client.</p>
+<p>If the client does not receive a response to a <code>Producer</code> command within a timeout, the client must first send a <code>CloseProducer</code> command before sending another <code>Producer</code> command. The client does not need to await a response to the <code>CloseProducer</code> command before sending the next <code>Producer</code> command.</p>
 <p>The broker can send a <code>CloseProducer</code> command to client when it's performing a graceful failover (eg: broker is being restarted, or the topic is being unloaded by load balancer to be transferred to a different broker).</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
 <h3><a class="anchor" aria-hidden="true" id="consumer"></a><a href="#consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
diff --git a/content/docs/fr/next/io-debug.html b/content/docs/fr/next/io-debug.html
index dc95e05..e77811d 100644
--- a/content/docs/fr/next/io-debug.html
+++ b/content/docs/fr/next/io-debug.html
@@ -94,11 +94,11 @@ docker run -d -it -p 6650:6650 -p 8080:8080 -v <span class="hljs-variable">$PWD<
 </code></pre></li>
 <li><p>Configure the Mongo sink with the <code>mongo-sink-config.yaml</code> file.</p>
 <pre><code class="hljs css language-bash">configs:
-mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
-database: <span class="hljs-string">"pulsar"</span>
-collection: <span class="hljs-string">"messages"</span>
-batchSize: 2
-batchTimeMs: 500
+  mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
+  database: <span class="hljs-string">"pulsar"</span>
+  collection: <span class="hljs-string">"messages"</span>
+  batchSize: 2
+  batchTimeMs: 500
 </code></pre>
 <pre><code class="hljs css language-bash">docker cp mongo-sink-config.yaml pulsar-mongo-standalone:/pulsar/
 </code></pre></li>
@@ -110,11 +110,11 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 <h2><a class="anchor" aria-hidden="true" id="debug-in-localrun-mode"></a><a href="#debug-in-localrun-mode" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Start the Mongo sink in localrun mode using the <code>localrun</code> command.</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip"></a><a href="#tip" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>localrun</code> command, see <a href="/docs/fr/next/reference-connector-admin/#localrun-1"><code>localrun</code></a>.</p>
 </blockquote>
 <pre><code class="hljs css language-bash">./bin/pulsar-admin sinks localrun \
---archive pulsar-io-mongo-2.4.0.nar \ 
+--archive connectors/pulsar-io-mongo-2.8.1.nar \ 
 --tenant public --namespace default \
 --inputs <span class="hljs-built_in">test</span>-mongo \
 --name pulsar-mongo-sink \
@@ -136,7 +136,7 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 </code></pre>
 <p>To clearly explain the log information, here breaks down the large block of information into small blocks and add descriptions for each block.</p>
 <ul>
-<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; #### Tip &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is decompressed in [...]
+<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; <strong>Tip</strong> &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is dec [...]
 <li><p>This piece of log information illustrates the basic information about the Mongo sink connector, such as tenant, namespace, name, parallelism, resources, and so on, which can be used to <strong>check whether the Mongo sink connector is configured correctly or not</strong>.
 bash
 08:21:55.390 [main] INFO  org.apache.pulsar.functions.runtime.ThreadRuntime - ThreadContainer starting function with instance config InstanceConfig(instanceId=0, functionId=853d60a1-0c48-44d5-9a5c-6917386476b2, functionVersion=c2ce1458-b69e-4175-88c0-a0a856a2be8c, functionDetails=tenant: &quot;public&quot;
@@ -271,7 +271,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-1"></a><a href="#tip-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>get</code> command, see <a href="/docs/fr/next/reference-connector-admin/#get-1"><code>get</code></a>.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="status"></a><a href="#status" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
@@ -302,7 +302,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-2"></a><a href="#tip-2" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>status</code> command, see <a href="/docs/fr/next/reference-connector-admin/#stauts-1"><code>status</code></a>.</p>
 <p>If there are multiple connectors running on a worker, <code>workerId</code> can locate the worker on which the specified connector is running.</p>
 </blockquote>
@@ -353,7 +353,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-3"></a><a href="#tip-3" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>topic stats</code> command, see <a href="http://pulsar.apache.org/docs/en/pulsar-admin/#stats-1"><code>topic stats</code></a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="checklist"></a><a href="#checklist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
diff --git a/content/docs/fr/next/io-debug/index.html b/content/docs/fr/next/io-debug/index.html
index dc95e05..e77811d 100644
--- a/content/docs/fr/next/io-debug/index.html
+++ b/content/docs/fr/next/io-debug/index.html
@@ -94,11 +94,11 @@ docker run -d -it -p 6650:6650 -p 8080:8080 -v <span class="hljs-variable">$PWD<
 </code></pre></li>
 <li><p>Configure the Mongo sink with the <code>mongo-sink-config.yaml</code> file.</p>
 <pre><code class="hljs css language-bash">configs:
-mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
-database: <span class="hljs-string">"pulsar"</span>
-collection: <span class="hljs-string">"messages"</span>
-batchSize: 2
-batchTimeMs: 500
+  mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
+  database: <span class="hljs-string">"pulsar"</span>
+  collection: <span class="hljs-string">"messages"</span>
+  batchSize: 2
+  batchTimeMs: 500
 </code></pre>
 <pre><code class="hljs css language-bash">docker cp mongo-sink-config.yaml pulsar-mongo-standalone:/pulsar/
 </code></pre></li>
@@ -110,11 +110,11 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 <h2><a class="anchor" aria-hidden="true" id="debug-in-localrun-mode"></a><a href="#debug-in-localrun-mode" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Start the Mongo sink in localrun mode using the <code>localrun</code> command.</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip"></a><a href="#tip" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>localrun</code> command, see <a href="/docs/fr/next/reference-connector-admin/#localrun-1"><code>localrun</code></a>.</p>
 </blockquote>
 <pre><code class="hljs css language-bash">./bin/pulsar-admin sinks localrun \
---archive pulsar-io-mongo-2.4.0.nar \ 
+--archive connectors/pulsar-io-mongo-2.8.1.nar \ 
 --tenant public --namespace default \
 --inputs <span class="hljs-built_in">test</span>-mongo \
 --name pulsar-mongo-sink \
@@ -136,7 +136,7 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 </code></pre>
 <p>To clearly explain the log information, here breaks down the large block of information into small blocks and add descriptions for each block.</p>
 <ul>
-<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; #### Tip &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is decompressed in [...]
+<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; <strong>Tip</strong> &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is dec [...]
 <li><p>This piece of log information illustrates the basic information about the Mongo sink connector, such as tenant, namespace, name, parallelism, resources, and so on, which can be used to <strong>check whether the Mongo sink connector is configured correctly or not</strong>.
 bash
 08:21:55.390 [main] INFO  org.apache.pulsar.functions.runtime.ThreadRuntime - ThreadContainer starting function with instance config InstanceConfig(instanceId=0, functionId=853d60a1-0c48-44d5-9a5c-6917386476b2, functionVersion=c2ce1458-b69e-4175-88c0-a0a856a2be8c, functionDetails=tenant: &quot;public&quot;
@@ -271,7 +271,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-1"></a><a href="#tip-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>get</code> command, see <a href="/docs/fr/next/reference-connector-admin/#get-1"><code>get</code></a>.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="status"></a><a href="#status" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
@@ -302,7 +302,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-2"></a><a href="#tip-2" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>status</code> command, see <a href="/docs/fr/next/reference-connector-admin/#stauts-1"><code>status</code></a>.</p>
 <p>If there are multiple connectors running on a worker, <code>workerId</code> can locate the worker on which the specified connector is running.</p>
 </blockquote>
@@ -353,7 +353,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-3"></a><a href="#tip-3" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>topic stats</code> command, see <a href="http://pulsar.apache.org/docs/en/pulsar-admin/#stats-1"><code>topic stats</code></a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="checklist"></a><a href="#checklist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
diff --git a/content/docs/fr/next/reference-cli-tools.html b/content/docs/fr/next/reference-cli-tools.html
index ef2cd9b..a3bec3f 100644
--- a/content/docs/fr/next/reference-cli-tools.html
+++ b/content/docs/fr/next/reference-cli-tools.html
@@ -99,7 +99,7 @@
 <p>Usage:</p>
 <pre><code class="hljs css language-bash">$ pulsar <span class="hljs-built_in">command</span>
 </code></pre>
-<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code></p>
+<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code> * <code>autorecovery</code></p>
 <p>Example:</p>
 <pre><code class="hljs css language-bash">$ PULSAR_BROKER_CONF=/path/to/broker.conf pulsar broker
 </code></pre>
@@ -287,6 +287,20 @@
 <tr><td><code>-server</code></td><td>Configuration zk address, eg: <code>127.0.0.1:2181</code></td><td></td></tr>
 </tbody>
 </table>
+<h3><a class="anchor" aria-hidden="true" id="autorecovery"></a><a href="#autorecovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>Runs an auto-recovery service.</p>
+<p>Usage</p>
+<pre><code class="hljs css language-bash">$ pulsar autorecovery options
+</code></pre>
+<p>Options</p>
+<table>
+<thead>
+<tr><th>Flag</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>-c</code>, <code>--conf</code></td><td>Configuration for the autorecovery</td><td>N/A</td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="pulsar-client"></a><a href="#pulsar-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>The pulsar-client tool</p>
 <p>Usage</p>
@@ -754,7 +768,7 @@ $ broker-tool <span class="hljs-built_in">command</span> --<span class="hljs-bui
 <tr><td><code>-h</code>, <code>--help</code></td><td>Display help information</td><td></td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/fr/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie">< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/fr/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie">< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/reference-cli-tools/index.html b/content/docs/fr/next/reference-cli-tools/index.html
index ef2cd9b..a3bec3f 100644
--- a/content/docs/fr/next/reference-cli-tools/index.html
+++ b/content/docs/fr/next/reference-cli-tools/index.html
@@ -99,7 +99,7 @@
 <p>Usage:</p>
 <pre><code class="hljs css language-bash">$ pulsar <span class="hljs-built_in">command</span>
 </code></pre>
-<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code></p>
+<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code> * <code>autorecovery</code></p>
 <p>Example:</p>
 <pre><code class="hljs css language-bash">$ PULSAR_BROKER_CONF=/path/to/broker.conf pulsar broker
 </code></pre>
@@ -287,6 +287,20 @@
 <tr><td><code>-server</code></td><td>Configuration zk address, eg: <code>127.0.0.1:2181</code></td><td></td></tr>
 </tbody>
 </table>
+<h3><a class="anchor" aria-hidden="true" id="autorecovery"></a><a href="#autorecovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>Runs an auto-recovery service.</p>
+<p>Usage</p>
+<pre><code class="hljs css language-bash">$ pulsar autorecovery options
+</code></pre>
+<p>Options</p>
+<table>
+<thead>
+<tr><th>Flag</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>-c</code>, <code>--conf</code></td><td>Configuration for the autorecovery</td><td>N/A</td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="pulsar-client"></a><a href="#pulsar-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>The pulsar-client tool</p>
 <p>Usage</p>
@@ -754,7 +768,7 @@ $ broker-tool <span class="hljs-built_in">command</span> --<span class="hljs-bui
 <tr><td><code>-h</code>, <code>--help</code></td><td>Display help information</td><td></td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/fr/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie">< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/fr/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie">< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/cookbooks-retention-expiry.html b/content/docs/ja/next/cookbooks-retention-expiry.html
index 37e3b28..6612f1e 100644
--- a/content/docs/ja/next/cookbooks-retention-expiry.html
+++ b/content/docs/ja/next/cookbooks-retention-expiry.html
@@ -144,10 +144,9 @@ To disable the retention policy, you need to set both the size and time limit to
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="backlog-quotas"></a><a href="#backlog-quotas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p><em>Backlogs</em> are sets of unacknowledged messages for a topic that have been stored by bookies. Pulsar stores all unacknowledged messages in backlogs until they are processed and acknowledged.</p>
-<p>You can control the allowable size of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
-<p>TODO: Expand on is this per backlog or per topic?</p>
+<p>You can control the allowable size and/or time of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
 <ul>
-<li>an allowable <em>size threshold</em> for each topic in the namespace</li>
+<li>an allowable <em>size and/or time threshold</em> for each topic in the namespace</li>
 <li>a <em>retention policy</em> that determines which action the <a href="/docs/ja/next/reference-terminology#broker">broker</a> takes if the threshold is exceeded.</li>
 </ul>
 <p>The following retention policies are available:</p>
diff --git a/content/docs/ja/next/cookbooks-retention-expiry/index.html b/content/docs/ja/next/cookbooks-retention-expiry/index.html
index 37e3b28..6612f1e 100644
--- a/content/docs/ja/next/cookbooks-retention-expiry/index.html
+++ b/content/docs/ja/next/cookbooks-retention-expiry/index.html
@@ -144,10 +144,9 @@ To disable the retention policy, you need to set both the size and time limit to
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="backlog-quotas"></a><a href="#backlog-quotas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p><em>Backlogs</em> are sets of unacknowledged messages for a topic that have been stored by bookies. Pulsar stores all unacknowledged messages in backlogs until they are processed and acknowledged.</p>
-<p>You can control the allowable size of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
-<p>TODO: Expand on is this per backlog or per topic?</p>
+<p>You can control the allowable size and/or time of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
 <ul>
-<li>an allowable <em>size threshold</em> for each topic in the namespace</li>
+<li>an allowable <em>size and/or time threshold</em> for each topic in the namespace</li>
 <li>a <em>retention policy</em> that determines which action the <a href="/docs/ja/next/reference-terminology#broker">broker</a> takes if the threshold is exceeded.</li>
 </ul>
 <p>The following retention policies are available:</p>
diff --git a/content/docs/ja/next/develop-binary-protocol.html b/content/docs/ja/next/develop-binary-protocol.html
index baa220f..f1838a4 100644
--- a/content/docs/ja/next/develop-binary-protocol.html
+++ b/content/docs/ja/next/develop-binary-protocol.html
@@ -206,6 +206,7 @@
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>Once the client gets confirmation of the producer creation, it can publish messages to the broker, referring to the producer id negotiated before.</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
+<p>If the client does not receive a response indicating producer creation success or failure, the client should first send a command to close the original producer before sending a command to re-attempt producer creation.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-producer"></a><a href="#command-producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandProducer</span> </span>{
   <span class="hljs-string">"topic"</span> : <span class="hljs-string">"persistent://my-property/my-cluster/my-namespace/my-topic"</span>,
@@ -246,6 +247,7 @@
 <h5><a class="anchor" aria-hidden="true" id="command-closeproducer"></a><a href="#command-closeproducer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p><strong>Note</strong>: <em>This command can be sent by either producer or broker</em>.</p>
 <p>When receiving a <code>CloseProducer</code> command, the broker will stop accepting any more messages for the producer, wait until all pending messages are persisted and then reply <code>Success</code> to the client.</p>
+<p>If the client does not receive a response to a <code>Producer</code> command within a timeout, the client must first send a <code>CloseProducer</code> command before sending another <code>Producer</code> command. The client does not need to await a response to the <code>CloseProducer</code> command before sending the next <code>Producer</code> command.</p>
 <p>The broker can send a <code>CloseProducer</code> command to client when it's performing a graceful failover (eg: broker is being restarted, or the topic is being unloaded by load balancer to be transferred to a different broker).</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
 <h3><a class="anchor" aria-hidden="true" id="コンシューマー"></a><a href="#コンシューマー" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
diff --git a/content/docs/ja/next/develop-binary-protocol/index.html b/content/docs/ja/next/develop-binary-protocol/index.html
index baa220f..f1838a4 100644
--- a/content/docs/ja/next/develop-binary-protocol/index.html
+++ b/content/docs/ja/next/develop-binary-protocol/index.html
@@ -206,6 +206,7 @@
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>Once the client gets confirmation of the producer creation, it can publish messages to the broker, referring to the producer id negotiated before.</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
+<p>If the client does not receive a response indicating producer creation success or failure, the client should first send a command to close the original producer before sending a command to re-attempt producer creation.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-producer"></a><a href="#command-producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandProducer</span> </span>{
   <span class="hljs-string">"topic"</span> : <span class="hljs-string">"persistent://my-property/my-cluster/my-namespace/my-topic"</span>,
@@ -246,6 +247,7 @@
 <h5><a class="anchor" aria-hidden="true" id="command-closeproducer"></a><a href="#command-closeproducer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p><strong>Note</strong>: <em>This command can be sent by either producer or broker</em>.</p>
 <p>When receiving a <code>CloseProducer</code> command, the broker will stop accepting any more messages for the producer, wait until all pending messages are persisted and then reply <code>Success</code> to the client.</p>
+<p>If the client does not receive a response to a <code>Producer</code> command within a timeout, the client must first send a <code>CloseProducer</code> command before sending another <code>Producer</code> command. The client does not need to await a response to the <code>CloseProducer</code> command before sending the next <code>Producer</code> command.</p>
 <p>The broker can send a <code>CloseProducer</code> command to client when it's performing a graceful failover (eg: broker is being restarted, or the topic is being unloaded by load balancer to be transferred to a different broker).</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
 <h3><a class="anchor" aria-hidden="true" id="コンシューマー"></a><a href="#コンシューマー" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
diff --git a/content/docs/ja/next/io-debug.html b/content/docs/ja/next/io-debug.html
index 3c86b84..7e24294 100644
--- a/content/docs/ja/next/io-debug.html
+++ b/content/docs/ja/next/io-debug.html
@@ -94,11 +94,11 @@ docker run -d -it -p 6650:6650 -p 8080:8080 -v <span class="hljs-variable">$PWD<
 </code></pre></li>
 <li><p>Configure the Mongo sink with the <code>mongo-sink-config.yaml</code> file.</p>
 <pre><code class="hljs css language-bash">configs:
-mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
-database: <span class="hljs-string">"pulsar"</span>
-collection: <span class="hljs-string">"messages"</span>
-batchSize: 2
-batchTimeMs: 500
+  mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
+  database: <span class="hljs-string">"pulsar"</span>
+  collection: <span class="hljs-string">"messages"</span>
+  batchSize: 2
+  batchTimeMs: 500
 </code></pre>
 <pre><code class="hljs css language-bash">docker cp mongo-sink-config.yaml pulsar-mongo-standalone:/pulsar/
 </code></pre></li>
@@ -110,11 +110,11 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 <h2><a class="anchor" aria-hidden="true" id="debug-in-localrun-mode"></a><a href="#debug-in-localrun-mode" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Start the Mongo sink in localrun mode using the <code>localrun</code> command.</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip"></a><a href="#tip" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>localrun</code> command, see <a href="/docs/ja/next/reference-connector-admin/#localrun-1"><code>localrun</code></a>.</p>
 </blockquote>
 <pre><code class="hljs css language-bash">./bin/pulsar-admin sinks localrun \
---archive pulsar-io-mongo-2.4.0.nar \ 
+--archive connectors/pulsar-io-mongo-2.8.1.nar \ 
 --tenant public --namespace default \
 --inputs <span class="hljs-built_in">test</span>-mongo \
 --name pulsar-mongo-sink \
@@ -136,7 +136,7 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 </code></pre>
 <p>To clearly explain the log information, here breaks down the large block of information into small blocks and add descriptions for each block.</p>
 <ul>
-<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; #### Tip &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is decompressed in [...]
+<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; <strong>Tip</strong> &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is dec [...]
 <li><p>This piece of log information illustrates the basic information about the Mongo sink connector, such as tenant, namespace, name, parallelism, resources, and so on, which can be used to <strong>check whether the Mongo sink connector is configured correctly or not</strong>.
 bash
 08:21:55.390 [main] INFO  org.apache.pulsar.functions.runtime.ThreadRuntime - ThreadContainer starting function with instance config InstanceConfig(instanceId=0, functionId=853d60a1-0c48-44d5-9a5c-6917386476b2, functionVersion=c2ce1458-b69e-4175-88c0-a0a856a2be8c, functionDetails=tenant: &quot;public&quot;
@@ -271,7 +271,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-1"></a><a href="#tip-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>get</code> command, see <a href="/docs/ja/next/reference-connector-admin/#get-1"><code>get</code></a>.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="status"></a><a href="#status" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
@@ -302,7 +302,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-2"></a><a href="#tip-2" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>status</code> command, see <a href="/docs/ja/next/reference-connector-admin/#stauts-1"><code>status</code></a>.</p>
 <p>If there are multiple connectors running on a worker, <code>workerId</code> can locate the worker on which the specified connector is running.</p>
 </blockquote>
@@ -353,7 +353,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-3"></a><a href="#tip-3" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>topic stats</code> command, see <a href="http://pulsar.apache.org/docs/en/pulsar-admin/#stats-1"><code>topic stats</code></a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="checklist"></a><a href="#checklist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
diff --git a/content/docs/ja/next/io-debug/index.html b/content/docs/ja/next/io-debug/index.html
index 3c86b84..7e24294 100644
--- a/content/docs/ja/next/io-debug/index.html
+++ b/content/docs/ja/next/io-debug/index.html
@@ -94,11 +94,11 @@ docker run -d -it -p 6650:6650 -p 8080:8080 -v <span class="hljs-variable">$PWD<
 </code></pre></li>
 <li><p>Configure the Mongo sink with the <code>mongo-sink-config.yaml</code> file.</p>
 <pre><code class="hljs css language-bash">configs:
-mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
-database: <span class="hljs-string">"pulsar"</span>
-collection: <span class="hljs-string">"messages"</span>
-batchSize: 2
-batchTimeMs: 500
+  mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
+  database: <span class="hljs-string">"pulsar"</span>
+  collection: <span class="hljs-string">"messages"</span>
+  batchSize: 2
+  batchTimeMs: 500
 </code></pre>
 <pre><code class="hljs css language-bash">docker cp mongo-sink-config.yaml pulsar-mongo-standalone:/pulsar/
 </code></pre></li>
@@ -110,11 +110,11 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 <h2><a class="anchor" aria-hidden="true" id="debug-in-localrun-mode"></a><a href="#debug-in-localrun-mode" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Start the Mongo sink in localrun mode using the <code>localrun</code> command.</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip"></a><a href="#tip" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>localrun</code> command, see <a href="/docs/ja/next/reference-connector-admin/#localrun-1"><code>localrun</code></a>.</p>
 </blockquote>
 <pre><code class="hljs css language-bash">./bin/pulsar-admin sinks localrun \
---archive pulsar-io-mongo-2.4.0.nar \ 
+--archive connectors/pulsar-io-mongo-2.8.1.nar \ 
 --tenant public --namespace default \
 --inputs <span class="hljs-built_in">test</span>-mongo \
 --name pulsar-mongo-sink \
@@ -136,7 +136,7 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 </code></pre>
 <p>To clearly explain the log information, here breaks down the large block of information into small blocks and add descriptions for each block.</p>
 <ul>
-<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; #### Tip &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is decompressed in [...]
+<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; <strong>Tip</strong> &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is dec [...]
 <li><p>This piece of log information illustrates the basic information about the Mongo sink connector, such as tenant, namespace, name, parallelism, resources, and so on, which can be used to <strong>check whether the Mongo sink connector is configured correctly or not</strong>.
 bash
 08:21:55.390 [main] INFO  org.apache.pulsar.functions.runtime.ThreadRuntime - ThreadContainer starting function with instance config InstanceConfig(instanceId=0, functionId=853d60a1-0c48-44d5-9a5c-6917386476b2, functionVersion=c2ce1458-b69e-4175-88c0-a0a856a2be8c, functionDetails=tenant: &quot;public&quot;
@@ -271,7 +271,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-1"></a><a href="#tip-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>get</code> command, see <a href="/docs/ja/next/reference-connector-admin/#get-1"><code>get</code></a>.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="status"></a><a href="#status" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
@@ -302,7 +302,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-2"></a><a href="#tip-2" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>status</code> command, see <a href="/docs/ja/next/reference-connector-admin/#stauts-1"><code>status</code></a>.</p>
 <p>If there are multiple connectors running on a worker, <code>workerId</code> can locate the worker on which the specified connector is running.</p>
 </blockquote>
@@ -353,7 +353,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-3"></a><a href="#tip-3" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>topic stats</code> command, see <a href="http://pulsar.apache.org/docs/en/pulsar-admin/#stats-1"><code>topic stats</code></a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="checklist"></a><a href="#checklist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
diff --git a/content/docs/ja/next/reference-cli-tools.html b/content/docs/ja/next/reference-cli-tools.html
index f51e8d2..a5ef980 100644
--- a/content/docs/ja/next/reference-cli-tools.html
+++ b/content/docs/ja/next/reference-cli-tools.html
@@ -99,7 +99,7 @@
 <p>使い方:</p>
 <pre><code class="hljs css language-bash">$ pulsar <span class="hljs-built_in">command</span>
 </code></pre>
-<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code></p>
+<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code> * <code>autorecovery</code></p>
 <p>例:</p>
 <pre><code class="hljs css language-bash">$ PULSAR_BROKER_CONF=/path/to/broker.conf pulsar broker
 </code></pre>
@@ -287,6 +287,20 @@
 <tr><td><code>-server</code></td><td>Configuration zk address, eg: <code>127.0.0.1:2181</code></td><td></td></tr>
 </tbody>
 </table>
+<h3><a class="anchor" aria-hidden="true" id="autorecovery"></a><a href="#autorecovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>Runs an auto-recovery service.</p>
+<p>使い方</p>
+<pre><code class="hljs css language-bash">$ pulsar autorecovery options
+</code></pre>
+<p>オプション</p>
+<table>
+<thead>
+<tr><th>Flag</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>-c</code>, <code>--conf</code></td><td>Configuration for the autorecovery</td><td>N/A</td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="pulsar-client"></a><a href="#pulsar-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>The pulsar-client tool</p>
 <p>使い方</p>
@@ -754,7 +768,7 @@ $ broker-tool <span class="hljs-built_in">command</span> --<span class="hljs-bui
 <tr><td><code>-h</code>, <code>--help</code></td><td>Display help information</td><td></td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/ja/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie">< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/ja/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie">< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/reference-cli-tools/index.html b/content/docs/ja/next/reference-cli-tools/index.html
index f51e8d2..a5ef980 100644
--- a/content/docs/ja/next/reference-cli-tools/index.html
+++ b/content/docs/ja/next/reference-cli-tools/index.html
@@ -99,7 +99,7 @@
 <p>使い方:</p>
 <pre><code class="hljs css language-bash">$ pulsar <span class="hljs-built_in">command</span>
 </code></pre>
-<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code></p>
+<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code> * <code>autorecovery</code></p>
 <p>例:</p>
 <pre><code class="hljs css language-bash">$ PULSAR_BROKER_CONF=/path/to/broker.conf pulsar broker
 </code></pre>
@@ -287,6 +287,20 @@
 <tr><td><code>-server</code></td><td>Configuration zk address, eg: <code>127.0.0.1:2181</code></td><td></td></tr>
 </tbody>
 </table>
+<h3><a class="anchor" aria-hidden="true" id="autorecovery"></a><a href="#autorecovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>Runs an auto-recovery service.</p>
+<p>使い方</p>
+<pre><code class="hljs css language-bash">$ pulsar autorecovery options
+</code></pre>
+<p>オプション</p>
+<table>
+<thead>
+<tr><th>Flag</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>-c</code>, <code>--conf</code></td><td>Configuration for the autorecovery</td><td>N/A</td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="pulsar-client"></a><a href="#pulsar-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>The pulsar-client tool</p>
 <p>使い方</p>
@@ -754,7 +768,7 @@ $ broker-tool <span class="hljs-built_in">command</span> --<span class="hljs-bui
 <tr><td><code>-h</code>, <code>--help</code></td><td>Display help information</td><td></td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/ja/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie">< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/ja/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie">< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ko/next/cookbooks-retention-expiry.html b/content/docs/ko/next/cookbooks-retention-expiry.html
index 8364936..83d17d0 100644
--- a/content/docs/ko/next/cookbooks-retention-expiry.html
+++ b/content/docs/ko/next/cookbooks-retention-expiry.html
@@ -144,10 +144,9 @@ To disable the retention policy, you need to set both the size and time limit to
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="backlog-quotas"></a><a href="#backlog-quotas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p><em>Backlogs</em> are sets of unacknowledged messages for a topic that have been stored by bookies. Pulsar stores all unacknowledged messages in backlogs until they are processed and acknowledged.</p>
-<p>You can control the allowable size of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
-<p>TODO: Expand on is this per backlog or per topic?</p>
+<p>You can control the allowable size and/or time of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
 <ul>
-<li>an allowable <em>size threshold</em> for each topic in the namespace</li>
+<li>an allowable <em>size and/or time threshold</em> for each topic in the namespace</li>
 <li>a <em>retention policy</em> that determines which action the <a href="/docs/ko/next/reference-terminology#broker">broker</a> takes if the threshold is exceeded.</li>
 </ul>
 <p>The following retention policies are available:</p>
diff --git a/content/docs/ko/next/cookbooks-retention-expiry/index.html b/content/docs/ko/next/cookbooks-retention-expiry/index.html
index 8364936..83d17d0 100644
--- a/content/docs/ko/next/cookbooks-retention-expiry/index.html
+++ b/content/docs/ko/next/cookbooks-retention-expiry/index.html
@@ -144,10 +144,9 @@ To disable the retention policy, you need to set both the size and time limit to
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="backlog-quotas"></a><a href="#backlog-quotas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p><em>Backlogs</em> are sets of unacknowledged messages for a topic that have been stored by bookies. Pulsar stores all unacknowledged messages in backlogs until they are processed and acknowledged.</p>
-<p>You can control the allowable size of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
-<p>TODO: Expand on is this per backlog or per topic?</p>
+<p>You can control the allowable size and/or time of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
 <ul>
-<li>an allowable <em>size threshold</em> for each topic in the namespace</li>
+<li>an allowable <em>size and/or time threshold</em> for each topic in the namespace</li>
 <li>a <em>retention policy</em> that determines which action the <a href="/docs/ko/next/reference-terminology#broker">broker</a> takes if the threshold is exceeded.</li>
 </ul>
 <p>The following retention policies are available:</p>
diff --git a/content/docs/ko/next/develop-binary-protocol.html b/content/docs/ko/next/develop-binary-protocol.html
index a6cf874..a654d8a 100644
--- a/content/docs/ko/next/develop-binary-protocol.html
+++ b/content/docs/ko/next/develop-binary-protocol.html
@@ -206,6 +206,7 @@
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>Once the client gets confirmation of the producer creation, it can publish messages to the broker, referring to the producer id negotiated before.</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
+<p>If the client does not receive a response indicating producer creation success or failure, the client should first send a command to close the original producer before sending a command to re-attempt producer creation.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-producer"></a><a href="#command-producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandProducer</span> </span>{
   <span class="hljs-string">"topic"</span> : <span class="hljs-string">"persistent://my-property/my-cluster/my-namespace/my-topic"</span>,
@@ -246,6 +247,7 @@
 <h5><a class="anchor" aria-hidden="true" id="command-closeproducer"></a><a href="#command-closeproducer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p><strong>Note</strong>: <em>This command can be sent by either producer or broker</em>.</p>
 <p>When receiving a <code>CloseProducer</code> command, the broker will stop accepting any more messages for the producer, wait until all pending messages are persisted and then reply <code>Success</code> to the client.</p>
+<p>If the client does not receive a response to a <code>Producer</code> command within a timeout, the client must first send a <code>CloseProducer</code> command before sending another <code>Producer</code> command. The client does not need to await a response to the <code>CloseProducer</code> command before sending the next <code>Producer</code> command.</p>
 <p>The broker can send a <code>CloseProducer</code> command to client when it's performing a graceful failover (eg: broker is being restarted, or the topic is being unloaded by load balancer to be transferred to a different broker).</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
 <h3><a class="anchor" aria-hidden="true" id="consumer"></a><a href="#consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
diff --git a/content/docs/ko/next/develop-binary-protocol/index.html b/content/docs/ko/next/develop-binary-protocol/index.html
index a6cf874..a654d8a 100644
--- a/content/docs/ko/next/develop-binary-protocol/index.html
+++ b/content/docs/ko/next/develop-binary-protocol/index.html
@@ -206,6 +206,7 @@
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>Once the client gets confirmation of the producer creation, it can publish messages to the broker, referring to the producer id negotiated before.</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
+<p>If the client does not receive a response indicating producer creation success or failure, the client should first send a command to close the original producer before sending a command to re-attempt producer creation.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-producer"></a><a href="#command-producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandProducer</span> </span>{
   <span class="hljs-string">"topic"</span> : <span class="hljs-string">"persistent://my-property/my-cluster/my-namespace/my-topic"</span>,
@@ -246,6 +247,7 @@
 <h5><a class="anchor" aria-hidden="true" id="command-closeproducer"></a><a href="#command-closeproducer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p><strong>Note</strong>: <em>This command can be sent by either producer or broker</em>.</p>
 <p>When receiving a <code>CloseProducer</code> command, the broker will stop accepting any more messages for the producer, wait until all pending messages are persisted and then reply <code>Success</code> to the client.</p>
+<p>If the client does not receive a response to a <code>Producer</code> command within a timeout, the client must first send a <code>CloseProducer</code> command before sending another <code>Producer</code> command. The client does not need to await a response to the <code>CloseProducer</code> command before sending the next <code>Producer</code> command.</p>
 <p>The broker can send a <code>CloseProducer</code> command to client when it's performing a graceful failover (eg: broker is being restarted, or the topic is being unloaded by load balancer to be transferred to a different broker).</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
 <h3><a class="anchor" aria-hidden="true" id="consumer"></a><a href="#consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
diff --git a/content/docs/ko/next/io-debug.html b/content/docs/ko/next/io-debug.html
index 63e9348..131b287 100644
--- a/content/docs/ko/next/io-debug.html
+++ b/content/docs/ko/next/io-debug.html
@@ -94,11 +94,11 @@ docker run -d -it -p 6650:6650 -p 8080:8080 -v <span class="hljs-variable">$PWD<
 </code></pre></li>
 <li><p>Configure the Mongo sink with the <code>mongo-sink-config.yaml</code> file.</p>
 <pre><code class="hljs css language-bash">configs:
-mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
-database: <span class="hljs-string">"pulsar"</span>
-collection: <span class="hljs-string">"messages"</span>
-batchSize: 2
-batchTimeMs: 500
+  mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
+  database: <span class="hljs-string">"pulsar"</span>
+  collection: <span class="hljs-string">"messages"</span>
+  batchSize: 2
+  batchTimeMs: 500
 </code></pre>
 <pre><code class="hljs css language-bash">docker cp mongo-sink-config.yaml pulsar-mongo-standalone:/pulsar/
 </code></pre></li>
@@ -110,11 +110,11 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 <h2><a class="anchor" aria-hidden="true" id="debug-in-localrun-mode"></a><a href="#debug-in-localrun-mode" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Start the Mongo sink in localrun mode using the <code>localrun</code> command.</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip"></a><a href="#tip" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>localrun</code> command, see <a href="/docs/ko/next/reference-connector-admin/#localrun-1"><code>localrun</code></a>.</p>
 </blockquote>
 <pre><code class="hljs css language-bash">./bin/pulsar-admin sinks localrun \
---archive pulsar-io-mongo-2.4.0.nar \ 
+--archive connectors/pulsar-io-mongo-2.8.1.nar \ 
 --tenant public --namespace default \
 --inputs <span class="hljs-built_in">test</span>-mongo \
 --name pulsar-mongo-sink \
@@ -136,7 +136,7 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 </code></pre>
 <p>To clearly explain the log information, here breaks down the large block of information into small blocks and add descriptions for each block.</p>
 <ul>
-<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; #### Tip &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is decompressed in [...]
+<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; <strong>Tip</strong> &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is dec [...]
 <li><p>This piece of log information illustrates the basic information about the Mongo sink connector, such as tenant, namespace, name, parallelism, resources, and so on, which can be used to <strong>check whether the Mongo sink connector is configured correctly or not</strong>.
 bash
 08:21:55.390 [main] INFO  org.apache.pulsar.functions.runtime.ThreadRuntime - ThreadContainer starting function with instance config InstanceConfig(instanceId=0, functionId=853d60a1-0c48-44d5-9a5c-6917386476b2, functionVersion=c2ce1458-b69e-4175-88c0-a0a856a2be8c, functionDetails=tenant: &quot;public&quot;
@@ -271,7 +271,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-1"></a><a href="#tip-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>get</code> command, see <a href="/docs/ko/next/reference-connector-admin/#get-1"><code>get</code></a>.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="status"></a><a href="#status" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
@@ -302,7 +302,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-2"></a><a href="#tip-2" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>status</code> command, see <a href="/docs/ko/next/reference-connector-admin/#stauts-1"><code>status</code></a>.</p>
 <p>If there are multiple connectors running on a worker, <code>workerId</code> can locate the worker on which the specified connector is running.</p>
 </blockquote>
@@ -353,7 +353,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-3"></a><a href="#tip-3" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>topic stats</code> command, see <a href="http://pulsar.apache.org/docs/en/pulsar-admin/#stats-1"><code>topic stats</code></a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="checklist"></a><a href="#checklist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
diff --git a/content/docs/ko/next/io-debug/index.html b/content/docs/ko/next/io-debug/index.html
index 63e9348..131b287 100644
--- a/content/docs/ko/next/io-debug/index.html
+++ b/content/docs/ko/next/io-debug/index.html
@@ -94,11 +94,11 @@ docker run -d -it -p 6650:6650 -p 8080:8080 -v <span class="hljs-variable">$PWD<
 </code></pre></li>
 <li><p>Configure the Mongo sink with the <code>mongo-sink-config.yaml</code> file.</p>
 <pre><code class="hljs css language-bash">configs:
-mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
-database: <span class="hljs-string">"pulsar"</span>
-collection: <span class="hljs-string">"messages"</span>
-batchSize: 2
-batchTimeMs: 500
+  mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
+  database: <span class="hljs-string">"pulsar"</span>
+  collection: <span class="hljs-string">"messages"</span>
+  batchSize: 2
+  batchTimeMs: 500
 </code></pre>
 <pre><code class="hljs css language-bash">docker cp mongo-sink-config.yaml pulsar-mongo-standalone:/pulsar/
 </code></pre></li>
@@ -110,11 +110,11 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 <h2><a class="anchor" aria-hidden="true" id="debug-in-localrun-mode"></a><a href="#debug-in-localrun-mode" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Start the Mongo sink in localrun mode using the <code>localrun</code> command.</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip"></a><a href="#tip" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>localrun</code> command, see <a href="/docs/ko/next/reference-connector-admin/#localrun-1"><code>localrun</code></a>.</p>
 </blockquote>
 <pre><code class="hljs css language-bash">./bin/pulsar-admin sinks localrun \
---archive pulsar-io-mongo-2.4.0.nar \ 
+--archive connectors/pulsar-io-mongo-2.8.1.nar \ 
 --tenant public --namespace default \
 --inputs <span class="hljs-built_in">test</span>-mongo \
 --name pulsar-mongo-sink \
@@ -136,7 +136,7 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 </code></pre>
 <p>To clearly explain the log information, here breaks down the large block of information into small blocks and add descriptions for each block.</p>
 <ul>
-<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; #### Tip &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is decompressed in [...]
+<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; <strong>Tip</strong> &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is dec [...]
 <li><p>This piece of log information illustrates the basic information about the Mongo sink connector, such as tenant, namespace, name, parallelism, resources, and so on, which can be used to <strong>check whether the Mongo sink connector is configured correctly or not</strong>.
 bash
 08:21:55.390 [main] INFO  org.apache.pulsar.functions.runtime.ThreadRuntime - ThreadContainer starting function with instance config InstanceConfig(instanceId=0, functionId=853d60a1-0c48-44d5-9a5c-6917386476b2, functionVersion=c2ce1458-b69e-4175-88c0-a0a856a2be8c, functionDetails=tenant: &quot;public&quot;
@@ -271,7 +271,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-1"></a><a href="#tip-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>get</code> command, see <a href="/docs/ko/next/reference-connector-admin/#get-1"><code>get</code></a>.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="status"></a><a href="#status" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
@@ -302,7 +302,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-2"></a><a href="#tip-2" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>status</code> command, see <a href="/docs/ko/next/reference-connector-admin/#stauts-1"><code>status</code></a>.</p>
 <p>If there are multiple connectors running on a worker, <code>workerId</code> can locate the worker on which the specified connector is running.</p>
 </blockquote>
@@ -353,7 +353,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="tip-3"></a><a href="#tip-3" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><strong>Tip</strong></p>
 <p>For more information about the <code>topic stats</code> command, see <a href="http://pulsar.apache.org/docs/en/pulsar-admin/#stats-1"><code>topic stats</code></a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="checklist"></a><a href="#checklist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
diff --git a/content/docs/ko/next/reference-cli-tools.html b/content/docs/ko/next/reference-cli-tools.html
index b031063..d8dd22e 100644
--- a/content/docs/ko/next/reference-cli-tools.html
+++ b/content/docs/ko/next/reference-cli-tools.html
@@ -99,7 +99,7 @@
 <p>Usage:</p>
 <pre><code class="hljs css language-bash">$ pulsar <span class="hljs-built_in">command</span>
 </code></pre>
-<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code></p>
+<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code> * <code>autorecovery</code></p>
 <p>Example:</p>
 <pre><code class="hljs css language-bash">$ PULSAR_BROKER_CONF=/path/to/broker.conf pulsar broker
 </code></pre>
@@ -287,6 +287,20 @@
 <tr><td><code>-server</code></td><td>Configuration zk address, eg: <code>127.0.0.1:2181</code></td><td></td></tr>
 </tbody>
 </table>
+<h3><a class="anchor" aria-hidden="true" id="autorecovery"></a><a href="#autorecovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>Runs an auto-recovery service.</p>
+<p>Usage</p>
+<pre><code class="hljs css language-bash">$ pulsar autorecovery options
+</code></pre>
+<p>Options</p>
+<table>
+<thead>
+<tr><th>Flag</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>-c</code>, <code>--conf</code></td><td>Configuration for the autorecovery</td><td>N/A</td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="pulsar-client"></a><a href="#pulsar-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>The pulsar-client tool</p>
 <p>Usage</p>
@@ -754,7 +768,7 @@ $ broker-tool <span class="hljs-built_in">command</span> --<span class="hljs-bui
 <tr><td><code>-h</code>, <code>--help</code></td><td>Display help information</td><td></td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/ko/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie">< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/ko/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie">< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ko/next/reference-cli-tools/index.html b/content/docs/ko/next/reference-cli-tools/index.html
index b031063..d8dd22e 100644
--- a/content/docs/ko/next/reference-cli-tools/index.html
+++ b/content/docs/ko/next/reference-cli-tools/index.html
@@ -99,7 +99,7 @@
 <p>Usage:</p>
 <pre><code class="hljs css language-bash">$ pulsar <span class="hljs-built_in">command</span>
 </code></pre>
-<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code></p>
+<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code> * <code>autorecovery</code></p>
 <p>Example:</p>
 <pre><code class="hljs css language-bash">$ PULSAR_BROKER_CONF=/path/to/broker.conf pulsar broker
 </code></pre>
@@ -287,6 +287,20 @@
 <tr><td><code>-server</code></td><td>Configuration zk address, eg: <code>127.0.0.1:2181</code></td><td></td></tr>
 </tbody>
 </table>
+<h3><a class="anchor" aria-hidden="true" id="autorecovery"></a><a href="#autorecovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>Runs an auto-recovery service.</p>
+<p>Usage</p>
+<pre><code class="hljs css language-bash">$ pulsar autorecovery options
+</code></pre>
+<p>Options</p>
+<table>
+<thead>
+<tr><th>Flag</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>-c</code>, <code>--conf</code></td><td>Configuration for the autorecovery</td><td>N/A</td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="pulsar-client"></a><a href="#pulsar-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>The pulsar-client tool</p>
 <p>Usage</p>
@@ -754,7 +768,7 @@ $ broker-tool <span class="hljs-built_in">command</span> --<span class="hljs-bui
 <tr><td><code>-h</code>, <code>--help</code></td><td>Display help information</td><td></td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/ko/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie">< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/ko/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie">< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/cookbooks-retention-expiry.html b/content/docs/zh-CN/next/cookbooks-retention-expiry.html
index 3366ecf..d9f09d4 100644
--- a/content/docs/zh-CN/next/cookbooks-retention-expiry.html
+++ b/content/docs/zh-CN/next/cookbooks-retention-expiry.html
@@ -145,10 +145,9 @@
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="backlog-quotas"></a><a href="#backlog-quotas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p><em>Backlogs</em>是由bookies存储的主题的未确认消息集。 Pulsar把所有未确认的消息存储在Backlog中,直到它们被处理和确认为止。</p>
-<p>可以使用 <em>backlog quotas</em> 在命名空间级别限制 Backlog 的大小。 设置backlog quota 涉及以下设置:</p>
-<p>待办:如何对每个主题或每个 backlog 进行扩展?</p>
+<p>You can control the allowable size and/or time of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
 <ul>
-<li>命名空间中每个主题允许的<em>大小阈值</em></li>
+<li>an allowable <em>size and/or time threshold</em> for each topic in the namespace</li>
 <li><em>保留策略</em>,决定了如果超过阈值,<a href="/docs/zh-CN/next/reference-terminology#broker">broker</a> 将采取什么操作。</li>
 </ul>
 <p>可以使用以下保留策略:</p>
diff --git a/content/docs/zh-CN/next/cookbooks-retention-expiry/index.html b/content/docs/zh-CN/next/cookbooks-retention-expiry/index.html
index 3366ecf..d9f09d4 100644
--- a/content/docs/zh-CN/next/cookbooks-retention-expiry/index.html
+++ b/content/docs/zh-CN/next/cookbooks-retention-expiry/index.html
@@ -145,10 +145,9 @@
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="backlog-quotas"></a><a href="#backlog-quotas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p><em>Backlogs</em>是由bookies存储的主题的未确认消息集。 Pulsar把所有未确认的消息存储在Backlog中,直到它们被处理和确认为止。</p>
-<p>可以使用 <em>backlog quotas</em> 在命名空间级别限制 Backlog 的大小。 设置backlog quota 涉及以下设置:</p>
-<p>待办:如何对每个主题或每个 backlog 进行扩展?</p>
+<p>You can control the allowable size and/or time of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
 <ul>
-<li>命名空间中每个主题允许的<em>大小阈值</em></li>
+<li>an allowable <em>size and/or time threshold</em> for each topic in the namespace</li>
 <li><em>保留策略</em>,决定了如果超过阈值,<a href="/docs/zh-CN/next/reference-terminology#broker">broker</a> 将采取什么操作。</li>
 </ul>
 <p>可以使用以下保留策略:</p>
diff --git a/content/docs/zh-CN/next/develop-binary-protocol.html b/content/docs/zh-CN/next/develop-binary-protocol.html
index 1ad4e3c..6b4f0ce 100644
--- a/content/docs/zh-CN/next/develop-binary-protocol.html
+++ b/content/docs/zh-CN/next/develop-binary-protocol.html
@@ -207,6 +207,7 @@
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
+<p>If the client does not receive a response indicating producer creation success or failure, the client should first send a command to close the original producer before sending a command to re-attempt producer creation.</p>
 <h5><a class="anchor" aria-hidden="true" id="生产命令"></a><a href="#生产命令" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandProducer</span> </span>{
   <span class="hljs-string">"topic"</span> : <span class="hljs-string">"persistent://my-property/my-cluster/my-namespace/my-topic"</span>,
@@ -247,6 +248,7 @@
 <h5><a class="anchor" aria-hidden="true" id="关闭生产者命令"></a><a href="#关闭生产者命令" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p><strong>注意</strong>:<em>这个命令生产者和 broker 都可以主动发送</em>。</p>
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
+<p>If the client does not receive a response to a <code>Producer</code> command within a timeout, the client must first send a <code>CloseProducer</code> command before sending another <code>Producer</code> command. The client does not need to await a response to the <code>CloseProducer</code> command before sending the next <code>Producer</code> command.</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
 <h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
diff --git a/content/docs/zh-CN/next/develop-binary-protocol/index.html b/content/docs/zh-CN/next/develop-binary-protocol/index.html
index 1ad4e3c..6b4f0ce 100644
--- a/content/docs/zh-CN/next/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/next/develop-binary-protocol/index.html
@@ -207,6 +207,7 @@
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
+<p>If the client does not receive a response indicating producer creation success or failure, the client should first send a command to close the original producer before sending a command to re-attempt producer creation.</p>
 <h5><a class="anchor" aria-hidden="true" id="生产命令"></a><a href="#生产命令" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandProducer</span> </span>{
   <span class="hljs-string">"topic"</span> : <span class="hljs-string">"persistent://my-property/my-cluster/my-namespace/my-topic"</span>,
@@ -247,6 +248,7 @@
 <h5><a class="anchor" aria-hidden="true" id="关闭生产者命令"></a><a href="#关闭生产者命令" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p><strong>注意</strong>:<em>这个命令生产者和 broker 都可以主动发送</em>。</p>
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
+<p>If the client does not receive a response to a <code>Producer</code> command within a timeout, the client must first send a <code>CloseProducer</code> command before sending another <code>Producer</code> command. The client does not need to await a response to the <code>CloseProducer</code> command before sending the next <code>Producer</code> command.</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
 <h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
diff --git a/content/docs/zh-CN/next/io-debug.html b/content/docs/zh-CN/next/io-debug.html
index 35e8bcc..f29c85d 100644
--- a/content/docs/zh-CN/next/io-debug.html
+++ b/content/docs/zh-CN/next/io-debug.html
@@ -95,11 +95,11 @@ docker run -d -it -p 6650:6650 -p 8080:8080 -v <span class="hljs-variable">$PWD<
 </code></pre></li>
 <li><p>使用 <code>mongo-sink-config.yaml</code> 文件配置 Mongo sink。</p>
 <pre><code class="hljs css language-bash">configs:
-mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
-database: <span class="hljs-string">"pulsar"</span>
-collection: <span class="hljs-string">"messages"</span>
-batchSize: 2
-batchTimeMs: 500
+  mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
+  database: <span class="hljs-string">"pulsar"</span>
+  collection: <span class="hljs-string">"messages"</span>
+  batchSize: 2
+  batchTimeMs: 500
 </code></pre>
 <pre><code class="hljs css language-bash">docker cp mongo-sink-config.yaml pulsar-mongo-standalone:/pulsar/
 </code></pre></li>
@@ -111,11 +111,11 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 <h2><a class="anchor" aria-hidden="true" id="在本地运行模式下调试"></a><a href="#在本地运行模式下调试" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>使用 <code>localrun</code> 命令以本地模式启动 Mongo sink。</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
+<p><strong>提示</strong></p>
 <p>关于 <code>localrun</code> 命令的更多信息,请参阅 <a href="/docs/zh-CN/next/reference-connector-admin/#localrun-1"><code>localrun</code></a>。</p>
 </blockquote>
 <pre><code class="hljs css language-bash">./bin/pulsar-admin sinks localrun \
---archive pulsar-io-mongo-2.4.0.nar \ 
+--archive connectors/pulsar-io-mongo-2.8.1.nar \ 
 --tenant public --namespace default \
 --inputs <span class="hljs-built_in">test</span>-mongo \
 --name pulsar-mongo-sink \
@@ -137,7 +137,7 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 </code></pre>
 <p>为了清楚地解释日志信息,此处将大块信息分解成小块,并为每个块添加描述。</p>
 <ul>
-<li><p>此日志信息显示解压后 nar 包的存储路径。 <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; #### 提示 &gt; &gt; 如果抛出异常 <code>class cannot be found</code>,请检查 nar 文件是否在文件夹 <code>file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/</code> 中已解压。</p></li>
+<li><p>此日志信息显示解压后 nar 包的存储路径。 <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; <strong>Tip</strong> &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is decompressed in the folder <code>file:/tmp/pulsar-nar/pulsar-io-mongo-2.4 [...]
 <li><p>这个日志信息说明了 Mongo sink 连接器的基本信息,如租户、命名空间、名称、并行度、资源等等,可以用于 <strong>检查 Mongo sink 连接器配置是否正确</strong>。
 bash
 08:21:55.390 [main] INFO  org.apache.pulsar.functions.runtime.ThreadRuntime - ThreadContainer starting function with instance config InstanceConfig(instanceId=0, functionId=853d60a1-0c48-44d5-9a5c-6917386476b2, functionVersion=c2ce1458-b69e-4175-88c0-a0a856a2be8c, functionDetails=tenant: &quot;public&quot;
@@ -272,7 +272,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示-1"></a><a href="#提示-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><strong>提示</strong></p>
 <p>更多 <code>get</code> 命令信息,请参阅 <a href="/docs/zh-CN/next/reference-connector-admin/#get-1"><code>get</code></a> 章节。</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="status"></a><a href="#status" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
@@ -303,7 +303,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示-2"></a><a href="#提示-2" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><strong>提示</strong></p>
 <p>关于 <code>status</code> 命令的更多信息,可参阅 <a href="/docs/zh-CN/next/reference-connector-admin/#stauts-1"><code>status</code></a>。</p>
 <p>如果一个 worker 上运行着多个连接器,<code>workerId</code>可以找到指定的连接器所运行的 worker。</p>
 </blockquote>
@@ -354,7 +354,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示-3"></a><a href="#提示-3" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><strong>提示</strong></p>
 <p>关于 <code>topic stats</code> 命令的更多信息,请参阅 <a href="http://pulsar.apache.org/docs/en/pulsar-admin/#stats-1"><code>topic stats</code></a>。</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="检查清单"></a><a href="#检查清单" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
diff --git a/content/docs/zh-CN/next/io-debug/index.html b/content/docs/zh-CN/next/io-debug/index.html
index 35e8bcc..f29c85d 100644
--- a/content/docs/zh-CN/next/io-debug/index.html
+++ b/content/docs/zh-CN/next/io-debug/index.html
@@ -95,11 +95,11 @@ docker run -d -it -p 6650:6650 -p 8080:8080 -v <span class="hljs-variable">$PWD<
 </code></pre></li>
 <li><p>使用 <code>mongo-sink-config.yaml</code> 文件配置 Mongo sink。</p>
 <pre><code class="hljs css language-bash">configs:
-mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
-database: <span class="hljs-string">"pulsar"</span>
-collection: <span class="hljs-string">"messages"</span>
-batchSize: 2
-batchTimeMs: 500
+  mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
+  database: <span class="hljs-string">"pulsar"</span>
+  collection: <span class="hljs-string">"messages"</span>
+  batchSize: 2
+  batchTimeMs: 500
 </code></pre>
 <pre><code class="hljs css language-bash">docker cp mongo-sink-config.yaml pulsar-mongo-standalone:/pulsar/
 </code></pre></li>
@@ -111,11 +111,11 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 <h2><a class="anchor" aria-hidden="true" id="在本地运行模式下调试"></a><a href="#在本地运行模式下调试" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>使用 <code>localrun</code> 命令以本地模式启动 Mongo sink。</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
+<p><strong>提示</strong></p>
 <p>关于 <code>localrun</code> 命令的更多信息,请参阅 <a href="/docs/zh-CN/next/reference-connector-admin/#localrun-1"><code>localrun</code></a>。</p>
 </blockquote>
 <pre><code class="hljs css language-bash">./bin/pulsar-admin sinks localrun \
---archive pulsar-io-mongo-2.4.0.nar \ 
+--archive connectors/pulsar-io-mongo-2.8.1.nar \ 
 --tenant public --namespace default \
 --inputs <span class="hljs-built_in">test</span>-mongo \
 --name pulsar-mongo-sink \
@@ -137,7 +137,7 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 </code></pre>
 <p>为了清楚地解释日志信息,此处将大块信息分解成小块,并为每个块添加描述。</p>
 <ul>
-<li><p>此日志信息显示解压后 nar 包的存储路径。 <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; #### 提示 &gt; &gt; 如果抛出异常 <code>class cannot be found</code>,请检查 nar 文件是否在文件夹 <code>file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/</code> 中已解压。</p></li>
+<li><p>此日志信息显示解压后 nar 包的存储路径。 <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; <strong>Tip</strong> &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is decompressed in the folder <code>file:/tmp/pulsar-nar/pulsar-io-mongo-2.4 [...]
 <li><p>这个日志信息说明了 Mongo sink 连接器的基本信息,如租户、命名空间、名称、并行度、资源等等,可以用于 <strong>检查 Mongo sink 连接器配置是否正确</strong>。
 bash
 08:21:55.390 [main] INFO  org.apache.pulsar.functions.runtime.ThreadRuntime - ThreadContainer starting function with instance config InstanceConfig(instanceId=0, functionId=853d60a1-0c48-44d5-9a5c-6917386476b2, functionVersion=c2ce1458-b69e-4175-88c0-a0a856a2be8c, functionDetails=tenant: &quot;public&quot;
@@ -272,7 +272,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示-1"></a><a href="#提示-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><strong>提示</strong></p>
 <p>更多 <code>get</code> 命令信息,请参阅 <a href="/docs/zh-CN/next/reference-connector-admin/#get-1"><code>get</code></a> 章节。</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="status"></a><a href="#status" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
@@ -303,7 +303,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示-2"></a><a href="#提示-2" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><strong>提示</strong></p>
 <p>关于 <code>status</code> 命令的更多信息,可参阅 <a href="/docs/zh-CN/next/reference-connector-admin/#stauts-1"><code>status</code></a>。</p>
 <p>如果一个 worker 上运行着多个连接器,<code>workerId</code>可以找到指定的连接器所运行的 worker。</p>
 </blockquote>
@@ -354,7 +354,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示-3"></a><a href="#提示-3" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><strong>提示</strong></p>
 <p>关于 <code>topic stats</code> 命令的更多信息,请参阅 <a href="http://pulsar.apache.org/docs/en/pulsar-admin/#stats-1"><code>topic stats</code></a>。</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="检查清单"></a><a href="#检查清单" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
diff --git a/content/docs/zh-CN/next/reference-cli-tools.html b/content/docs/zh-CN/next/reference-cli-tools.html
index e50534b..e63c690 100644
--- a/content/docs/zh-CN/next/reference-cli-tools.html
+++ b/content/docs/zh-CN/next/reference-cli-tools.html
@@ -100,7 +100,7 @@
 <p>用法:</p>
 <pre><code class="hljs css language-bash">$ pulsar <span class="hljs-built_in">command</span>
 </code></pre>
-<p>命令: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code></p>
+<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code> * <code>autorecovery</code></p>
 <p>例子:</p>
 <pre><code class="hljs css language-bash">$ PULSAR_BROKER_CONF=/path/to/broker.conf pulsar broker
 </code></pre>
@@ -288,6 +288,20 @@
 <tr><td><code>-server</code></td><td>配置 zk 地址,比如 <code>127.0.0.1:2181</code></td><td></td></tr>
 </tbody>
 </table>
+<h3><a class="anchor" aria-hidden="true" id="autorecovery"></a><a href="#autorecovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>Runs an auto-recovery service.</p>
+<p>用法</p>
+<pre><code class="hljs css language-bash">$ pulsar autorecovery options
+</code></pre>
+<p>选项</p>
+<table>
+<thead>
+<tr><th>参数</th><th>说明</th><th>默认值</th></tr>
+</thead>
+<tbody>
+<tr><td><code>-c</code>, <code>--conf</code></td><td>Configuration for the autorecovery</td><td>N/A</td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="pulsar-client"></a><a href="#pulsar-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>pulsar-client 工具</p>
 <p>用法</p>
@@ -325,13 +339,13 @@
 <tr><td><code>-m</code>, <code>--messages</code></td><td>将要发送的消息字符串,以逗号分隔;必须指定 -m 或 -f</td><td>[]</td></tr>
 <tr><td><code>-n</code>, <code>--num-produce</code></td><td>发送单条或多条消息的次数;消息/文件 * 生产次数 应小于 1000</td><td>1</td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>生产消息的频率(单位是消息/秒),值为 0 表示尽可能快地生产消息</td><td>0.0</td></tr>
-<tr><td><code>-db</code>, <code>--disable-batching</code></td><td>禁用批量发送消息</td><td>false</td></tr>
+<tr><td><code>-db</code>, <code>--disable-batching</code></td><td>Disable batch sending of messages</td><td>false</td></tr>
 <tr><td><code>-c</code>, <code>--chunking</code></td><td>如果消息超过允许的最大大小,则将消息分割并分块发布。</td><td>false</td></tr>
 <tr><td><code>-s</code>, <code>--separator</code></td><td>用于分割消息字符的字符串。</td><td>&quot;,&quot;</td></tr>
 <tr><td><code>-k</code>, <code>--key</code></td><td>要添加的消息键(Message Key)</td><td>key=value string, like k1=v1,k2=v2.</td></tr>
-<tr><td><code>-p</code>, <code>--properties</code></td><td>要添加的属性。如果添加多个属性,要使用逗号作为分隔符,比如:<code>k1=v1,k2=v2</code>。</td><td></td></tr>
+<tr><td><code>-p</code>, <code>--properties</code></td><td>Properties to add. If you want to add multiple properties, use the comma as the separator, e.g. <code>k1=v1,k2=v2</code>.</td><td></td></tr>
 <tr><td><code>-ekn</code>, <code>--encryption-key-name</code></td><td>The public key name to encrypt payload.</td><td></td></tr>
-<tr><td><code>-ekv</code>, <code>--encryption-key-value</code></td><td>用于加密有效的公钥的URI。例如,<code>file://path/to/public.key</code>或<code>data:application/x-pem-file;base64,*****</code>。</td><td></td></tr>
+<tr><td><code>-ekv</code>, <code>--encryption-key-value</code></td><td>The URI of public key to encrypt payload. For example, <code>file:///path/to/public.key</code> or <code>data:application/x-pem-file;base64,*****</code>.</td><td></td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="consume"></a><a href="#consume" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
@@ -350,15 +364,15 @@
 <tr><td><code>-r</code>, <code>--rate</code></td><td>消费消息的频率(单位是消息/秒),值为 0 表示尽可能快地消费消息</td><td>0.0</td></tr>
 <tr><td><code>--regex</code></td><td>表明主题名称为正则表达式</td><td>false</td></tr>
 <tr><td><code>-s</code>, <code>--subscription-name</code></td><td>Subscription name</td><td></td></tr>
-<tr><td><code>-t</code>, <code>--subscription-type</code></td><td>订阅类型。可能的值有:Exclusive, Shared, Failover, Key_Shared。</td><td>Exclusive</td></tr>
-<tr><td><code>-p</code>, <code>--subscription-position</code></td><td>订阅的位置。可能的值有:Latest, Earliest。</td><td>Latest</td></tr>
-<tr><td><code>-m</code>, <code>--subscription-mode</code></td><td>订阅模式。可能的值:Durable ,NonDurable</td><td>Durable</td></tr>
+<tr><td><code>-t</code>, <code>--subscription-type</code></td><td>The type of the subscription. Possible values: Exclusive, Shared, Failover, Key_Shared.</td><td>Exclusive</td></tr>
+<tr><td><code>-p</code>, <code>--subscription-position</code></td><td>The position of the subscription. Possible values: Latest, Earliest.</td><td>Latest</td></tr>
+<tr><td><code>-m</code>, <code>--subscription-mode</code></td><td>Subscription mode. Possible values: Durable, NonDurable.</td><td>Durable</td></tr>
 <tr><td><code>-q</code>, <code>--queue-size</code></td><td>消费者接收队列的大小。</td><td>0</td></tr>
 <tr><td><code>-mc</code>, <code>--max_chunked_msg</code></td><td>最大的待处理块消息。</td><td>0</td></tr>
 <tr><td><code>-ac</code>, <code>--auto_ack_chunk_q_full</code></td><td>如果队列已满,则自动确认消费者的接收队列中最早的消息。</td><td>false</td></tr>
 <tr><td><code>--hide-content</code></td><td>不要将消息打印到控制台。</td><td>false</td></tr>
-<tr><td><code>-st</code>, <code>--schema-type</code></td><td>设置 Schema 类型。使用 <code>auto_consume</code> 导出 AVRO 或其他结构化数据类型。可用值有:bytes, auto_consume。</td><td>bytes</td></tr>
-<tr><td><code>-ekv</code>, <code>--encryption-key-value</code></td><td>用于加密有效的公钥的URI。例如,<code>file://path/to/public.key</code>或<code>data:application/x-pem-file;base64,*****</code>。</td><td></td></tr>
+<tr><td><code>-st</code>, <code>--schema-type</code></td><td>Set the schema type. Use <code>auto_consume</code> to dump AVRO and other structured data types. Possible values: bytes, auto_consume.</td><td>bytes</td></tr>
+<tr><td><code>-ekv</code>, <code>--encryption-key-value</code></td><td>The URI of public key to encrypt payload. For example, <code>file:///path/to/public.key</code> or <code>data:application/x-pem-file;base64,*****</code>.</td><td></td></tr>
 <tr><td><code>-pm</code>, <code>--pool-messages</code></td><td>使用池化消息</td><td>true</td></tr>
 </tbody>
 </table>
@@ -368,7 +382,7 @@
 <p>用法</p>
 <pre><code class="hljs css language-bash">$ pulsar-daemon <span class="hljs-built_in">command</span>
 </code></pre>
-<p>命令: * <code>start</code> * <code>stop</code> * <code>restart</code></p>
+<p>Commands * <code>start</code> * <code>stop</code> * <code>restart</code></p>
 <h3><a class="anchor" aria-hidden="true" id="start"></a><a href="#start" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>使用 nohup 在后台启动服务</p>
 <p>用法</p>
@@ -389,7 +403,7 @@
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="restart"></a><a href="#restart" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p>重新启动一个已经启动的服务。</p>
+<p>Restart a service that has already been started.</p>
 <pre><code class="hljs css language-bash">$ pulsar-daemon restart service
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="pulsar-perf"></a><a href="#pulsar-perf" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
@@ -397,7 +411,7 @@
 <p>用法</p>
 <pre><code class="hljs css language-bash">$ pulsar-perf <span class="hljs-built_in">command</span>
 </code></pre>
-<p>命令: * <code>consume</code> * <code>produce</code> * <code>read</code> * <code>websocket-producer</code> * <code>managed-ledger</code> * <code>monitor-brokers</code> * <code>simulation-client</code> * <code>simulation-controller</code> * <code>help</code></p>
+<p>Commands * <code>consume</code> * <code>produce</code> * <code>read</code> * <code>websocket-producer</code> * <code>managed-ledger</code> * <code>monitor-brokers</code> * <code>simulation-client</code> * <code>simulation-controller</code> * <code>help</code></p>
 <p>环境变量</p>
 <p>下表列出了你可以用来配置 pulsar-perf 工具的环境变量。</p>
 <table>
@@ -433,7 +447,7 @@
 <tr><td><code>-v</code>, <code>--encryption-key-value-file</code></td><td>包含解密有效荷载的私钥的文件</td><td></td></tr>
 <tr><td><code>-h</code>, <code>--help</code></td><td>帮助信息</td><td>false</td></tr>
 <tr><td><code>--conf-file</code></td><td>Configuration file</td><td></td></tr>
-<tr><td><code>-m</code>, <code>--num-messages</code></td><td>总共要消费的消息数量。如果值小于、等于 0,将持续消费消息。</td><td>0</td></tr>
+<tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to consume in total. If the value is equal to or smaller than 0, it keeps consuming messages.</td><td>0</td></tr>
 <tr><td><code>-e</code>, <code>--expire_time_incomplete_chunked_messages</code></td><td>不完整区块消息的到期时间 (毫秒)</td><td>0</td></tr>
 <tr><td><code>-c</code>, <code>--max-connections</code></td><td>Max number of TCP connections to a single broker</td><td>100</td></tr>
 <tr><td><code>-mc</code>, <code>--max_chunked_msg</code></td><td>最大的待处理块消息。</td><td>0</td></tr>
@@ -469,7 +483,7 @@
 <tr><th>参数</th><th>说明</th><th>默认值</th></tr>
 </thead>
 <tbody>
-<tr><td><code>-am</code>, <code>--access-mode</code></td><td>生产者访问模式。有效值是 <code>Shared</code>, <code>Exclusive</code> 和 <code>WaitForExclusive</code></td><td>Shared(共享)</td></tr>
+<tr><td><code>-am</code>, <code>--access-mode</code></td><td>Producer access mode. Valid values are <code>Shared</code>, <code>Exclusive</code> and <code>WaitForExclusive</code></td><td>Shared(共享)</td></tr>
 <tr><td><code>-au</code>, <code>--admin-url</code></td><td>Pulsar admin URL</td><td></td></tr>
 <tr><td><code>--auth-params</code></td><td>认证参数,其格式由认证插件类中<code>configure</code>方法的实现决定。 例如, <code>key1:val1,key2:val2</code> or <code>{&quot;key1&quot;:&quot;val1&quot;,&quot;key2&quot;:&quot;val2&quot;}</code></td><td></td></tr>
 <tr><td><code>--auth-plugin</code></td><td>认证插件类名称</td><td></td></tr>
@@ -480,7 +494,7 @@
 <tr><td><code>-bw</code>, <code>--busy-wait</code></td><td>在 Pulsar 客户端启用或禁用 Busy-Wait</td><td>false</td></tr>
 <tr><td><code>-bm</code>, <code>--batch-max-messages</code></td><td>如果消息超过允许的最大大小,则将消息分割并分块发布。</td><td>false</td></tr>
 <tr><td><code>-d</code>, <code>--delay</code></td><td>给消息标记延迟时间(秒)</td><td>0s</td></tr>
-<tr><td><code>-z</code>, <code>--compression</code></td><td>压缩消息的 payload。可能的值有:NONE, LZ4, ZLIB, ZSTD 或 SNAPPY。</td><td></td></tr>
+<tr><td><code>-z</code>, <code>--compression</code></td><td>Compress messages’ payload. Possible values are NONE, LZ4, ZLIB, ZSTD or SNAPPY.</td><td></td></tr>
 <tr><td><code>--conf-file</code></td><td>Configuration file</td><td></td></tr>
 <tr><td><code>-k</code>, <code>--encryption-key-name</code></td><td>加密有效载荷的公钥名称</td><td></td></tr>
 <tr><td><code>-v</code>, <code>--encryption-key-value-file</code></td><td>包含用于加密有效载荷的公钥文件</td><td></td></tr>
@@ -491,13 +505,13 @@
 <tr><td><code>-c</code>, <code>--max-connections</code></td><td>Max number of TCP connections to a single broker</td><td>100</td></tr>
 <tr><td><code>-o</code>, <code>--max-outstanding</code></td><td>Max number of outstanding messages</td><td>1000</td></tr>
 <tr><td><code>-p</code>, <code>--max-outstanding-across-partitions</code></td><td>跨分区场景下的最大未处理消息数</td><td>50000</td></tr>
-<tr><td><code>-m</code>, <code>--num-messages</code></td><td>总共要发布的消息的数量。如果这个值小于或等于0,它就会继续发布消息。</td><td>0</td></tr>
-<tr><td><code>-mk</code>, <code>--message-key-generation-mode</code></td><td>消息密钥的生成模式。有效选项是 <code>autoIncrement</code>, <code>random</code></td><td></td></tr>
+<tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If this value is less than or equal to 0, it keeps publishing messages.</td><td>0</td></tr>
+<tr><td><code>-mk</code>, <code>--message-key-generation-mode</code></td><td>The generation mode of message key. Valid options are <code>autoIncrement</code>, <code>random</code></td><td></td></tr>
 <tr><td><code>-ioThreads</code>, <code>--num-io-threads</code></td><td>设置用于处理 broker 连接的线程数</td><td>1</td></tr>
 <tr><td><code>-n</code>, <code>--num-producers</code></td><td>The number of producers (per topic)</td><td>1</td></tr>
 <tr><td><code>-threads</code>, <code>--num-test-threads</code></td><td>测试线程数</td><td>1</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>The number of topics</td><td>1</td></tr>
-<tr><td><code>-np</code>, <code>--partitions</code></td><td>以给定的分区数量创建分区主题。将此值设置为0意味着不尝试创建主题</td><td></td></tr>
+<tr><td><code>-np</code>, <code>--partitions</code></td><td>Create partitioned topics with the given number of partitions. Setting this value to 0 means not trying to create a topic</td><td></td></tr>
 <tr><td><code>-f</code>, <code>--payload-file</code></td><td>使用 UTF-8 编码的文本文件的有效载荷(payload),会在发布消息时随机选择一个有效载荷</td><td></td></tr>
 <tr><td><code>-e</code>, <code>--payload-delimiter</code></td><td>当使用来自文件的有效载荷( payload)时,设置每行之间的分隔符</td><td>\n</td></tr>
 <tr><td><code>-pn</code>, <code>--producer-name</code></td><td>生产者名称</td><td></td></tr>
@@ -507,7 +521,7 @@
 <tr><td><code>-u</code>, <code>--service-url</code></td><td>Pulsar service URL</td><td></td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>Message size (in bytes)</td><td>1024</td></tr>
 <tr><td><code>-i</code>, <code>--stats-interval-seconds</code></td><td>Statistics interval seconds. If 0, statistics will be disabled.</td><td>0</td></tr>
-<tr><td><code>-time</code>, <code>--test-duration</code></td><td>测试持续时间(单位:秒)。如果这个值小于或等于0,它就会一直发布消息。</td><td>0</td></tr>
+<tr><td><code>-time</code>, <code>--test-duration</code></td><td>Test duration (in seconds). If this value is less than or equal to 0, it keeps publishing messages.</td><td>0</td></tr>
 <tr><td><code>--trust-cert-file</code></td><td>Path for the trusted TLS certificate file</td><td></td></tr>
 <tr><td><code>--warmup-time</code></td><td>预热时间(秒)</td><td>1</td></tr>
 <tr><td><code>--tls-allow-insecure</code></td><td>允许不安全的 TLS 连接。</td><td></td></tr>
@@ -529,7 +543,7 @@
 <tr><td><code>--listener-name</code></td><td>broker 监听器名称</td><td></td></tr>
 <tr><td><code>--conf-file</code></td><td>Configuration file</td><td></td></tr>
 <tr><td><code>-h</code>, <code>--help</code></td><td>帮助信息</td><td>false</td></tr>
-<tr><td><code>-n</code>, <code>--num-messages</code></td><td>总共要消费的消息数量。如果值小于、等于 0,将持续消费消息。</td><td>0</td></tr>
+<tr><td><code>-n</code>, <code>--num-messages</code></td><td>Number of messages to consume in total. If the value is equal to or smaller than 0, it keeps consuming messages.</td><td>0</td></tr>
 <tr><td><code>-c</code>, <code>--max-connections</code></td><td>Max number of TCP connections to a single broker</td><td>100</td></tr>
 <tr><td><code>-ioThreads</code>, <code>--num-io-threads</code></td><td>设置用于处理 broker 连接的线程数</td><td>1</td></tr>
 <tr><td><code>-lt</code>, <code>--num-listener-threads</code></td><td>Set the number of threads to be used for message listeners</td><td>1</td></tr>
@@ -560,16 +574,16 @@
 <tr><td><code>--auth-plugin</code></td><td>认证插件类名称</td><td></td></tr>
 <tr><td><code>--conf-file</code></td><td>Configuration file</td><td></td></tr>
 <tr><td><code>-h</code>, <code>--help</code></td><td>帮助信息</td><td>false</td></tr>
-<tr><td><code>-m</code>, <code>--num-messages</code></td><td>总共要发布的消息的数量。如果这个值小于或等于0,它就会继续发布消息。</td><td>0</td></tr>
+<tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If this value is less than or equal to 0, it keeps publishing messages.</td><td>0</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>The number of topics</td><td>1</td></tr>
 <tr><td><code>-f</code>, <code>--payload-file</code></td><td>使用文件中的 payload 而不是空缓存中的</td><td></td></tr>
 <tr><td><code>-e</code>, <code>--payload-delimiter</code></td><td>当使用来自文件的有效载荷( payload)时,设置每行之间的分隔符</td><td>\n</td></tr>
 <tr><td><code>-fp</code>, <code>--format-payload</code></td><td>格式化为来自 producer 和/或流中的消息索引作为时间戳,单位为 nanoseconds</td><td>false</td></tr>
-<tr><td><code>-fc</code>, <code>--format-class</code></td><td>自定义 formatter 类名</td><td><code>org.apache.pulsar.testclient.DefaultMessageFormatter</code></td></tr>
+<tr><td><code>-fc</code>, <code>--format-class</code></td><td>Custom formatter class name</td><td><code>org.apache.pulsar.testclient.DefaultMessageFormatter</code></td></tr>
 <tr><td><code>-u</code>, <code>--proxy-url</code></td><td>Pulsar 代理 URL,比如 &quot;<a href="ws://localhost:8080/">ws://localhost:8080/</a>&quot;</td><td></td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>Publish rate msg/s across topics</td><td>100</td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>消息大小(字节)</td><td>1024</td></tr>
-<tr><td><code>-time</code>, <code>--test-duration</code></td><td>测试持续时间(单位:秒)。如果这个值小于或等于0,它就会一直发布消息。</td><td>0</td></tr>
+<tr><td><code>-time</code>, <code>--test-duration</code></td><td>Test duration (in seconds). If this value is less than or equal to 0, it keeps publishing messages.</td><td>0</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="managed-ledger"></a><a href="#managed-ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
@@ -584,16 +598,16 @@
 </thead>
 <tbody>
 <tr><td><code>-a</code>, <code>--ack-quorum</code></td><td>Ledger ack quorum</td><td>1</td></tr>
-<tr><td><code>-dt</code>, <code>--digest-type</code></td><td>BookKeeper 摘要类型。可能的值有:[CRC32, MAC, CRC32C, DUMMY]</td><td>CRC32C</td></tr>
+<tr><td><code>-dt</code>, <code>--digest-type</code></td><td>BookKeeper digest type. Possible Values: [CRC32, MAC, CRC32C, DUMMY]</td><td>CRC32C</td></tr>
 <tr><td><code>-e</code>, <code>--ensemble-size</code></td><td>Ledger 整体大小</td><td>1</td></tr>
 <tr><td><code>-h</code>, <code>--help</code></td><td>帮助信息</td><td>false</td></tr>
 <tr><td><code>-c</code>, <code>--max-connections</code></td><td>单个 bookie 的最大 TCP 连接数</td><td>1</td></tr>
 <tr><td><code>-o</code>, <code>--max-outstanding</code></td><td>未处理请求的最大数量</td><td>1000</td></tr>
-<tr><td><code>-m</code>, <code>--num-messages</code></td><td>总共要发布的消息的数量。如果这个值小于或等于0,它就会继续发布消息。</td><td>0</td></tr>
+<tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If this value is less than or equal to 0, it keeps publishing messages.</td><td>0</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>managed ledger 的数量</td><td>1</td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>在managed ledger中的写入速率(消息/秒)</td><td>100</td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>消息大小(字节)</td><td>1024</td></tr>
-<tr><td><code>-time</code>, <code>--test-duration</code></td><td>测试持续时间(单位:秒)。如果这个值小于或等于0,它就会一直发布消息。</td><td>0</td></tr>
+<tr><td><code>-time</code>, <code>--test-duration</code></td><td>Test duration (in seconds). If this value is less than or equal to 0, it keeps publishing messages.</td><td>0</td></tr>
 <tr><td><code>--threads</code></td><td>正在写入的线程数</td><td>1</td></tr>
 <tr><td><code>-w</code>, <code>--write-quorum</code></td><td>Ledger write quorum</td><td>1</td></tr>
 <tr><td><code>-zk</code>, <code>--zookeeperServers</code></td><td>ZooKeeper 连接字符串</td><td></td></tr>
@@ -615,7 +629,7 @@
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="simulation-client"></a><a href="#simulation-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p>运行一个 Pulsar 客户端的模拟服务器。使用在 <code>conf/client.conf</code> 中指定的客户端配置。</p>
+<p>Run a simulation server acting as a Pulsar client. Uses the client configuration specified in <code>conf/client.conf</code>.</p>
 <p>用法</p>
 <pre><code class="hljs css language-bash">$ pulsar-perf simulation-client options
 </code></pre>
@@ -738,13 +752,13 @@
 <p>用法</p>
 <pre><code class="hljs css language-bash">$ broker-tool <span class="hljs-built_in">command</span>
 </code></pre>
-<p>命令 * <code>load-report</code> * <code>help</code></p>
+<p>Commands * <code>load-report</code> * <code>help</code></p>
 <p>示例 获取关于某条命令的更多信息的两种方式:</p>
 <pre><code class="hljs css language-bash">$ broker-tool <span class="hljs-built_in">help</span> <span class="hljs-built_in">command</span>
 $ broker-tool <span class="hljs-built_in">command</span> --<span class="hljs-built_in">help</span>
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="load-report"></a><a href="#load-report" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>收集指定 broker 的负载报告。 命令会运行在 broker 上,会被用于排除 broker 无法收集正确负载报告的故障。</p>
+<p>Collect the load report of a specific broker. The command is run on a broker, and used for troubleshooting why broker can’t collect right load report.</p>
 <p>选项</p>
 <table>
 <thead>
@@ -755,7 +769,7 @@ $ broker-tool <span class="hljs-built_in">command</span> --<span class="hljs-bui
 <tr><td><code>-h</code>, <code>--help</code></td><td>显示帮助信息</td><td></td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/reference-terminology"><span class="arrow-prev">← </span><span>术语</span></a><a class="docs-next button" href="/docs/zh-CN/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie"><cod [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/reference-terminology"><span class="arrow-prev">← </span><span>术语</span></a><a class="docs-next button" href="/docs/zh-CN/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie"><cod [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/reference-cli-tools/index.html b/content/docs/zh-CN/next/reference-cli-tools/index.html
index e50534b..e63c690 100644
--- a/content/docs/zh-CN/next/reference-cli-tools/index.html
+++ b/content/docs/zh-CN/next/reference-cli-tools/index.html
@@ -100,7 +100,7 @@
 <p>用法:</p>
 <pre><code class="hljs css language-bash">$ pulsar <span class="hljs-built_in">command</span>
 </code></pre>
-<p>命令: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code></p>
+<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code> * <code>autorecovery</code></p>
 <p>例子:</p>
 <pre><code class="hljs css language-bash">$ PULSAR_BROKER_CONF=/path/to/broker.conf pulsar broker
 </code></pre>
@@ -288,6 +288,20 @@
 <tr><td><code>-server</code></td><td>配置 zk 地址,比如 <code>127.0.0.1:2181</code></td><td></td></tr>
 </tbody>
 </table>
+<h3><a class="anchor" aria-hidden="true" id="autorecovery"></a><a href="#autorecovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>Runs an auto-recovery service.</p>
+<p>用法</p>
+<pre><code class="hljs css language-bash">$ pulsar autorecovery options
+</code></pre>
+<p>选项</p>
+<table>
+<thead>
+<tr><th>参数</th><th>说明</th><th>默认值</th></tr>
+</thead>
+<tbody>
+<tr><td><code>-c</code>, <code>--conf</code></td><td>Configuration for the autorecovery</td><td>N/A</td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="pulsar-client"></a><a href="#pulsar-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>pulsar-client 工具</p>
 <p>用法</p>
@@ -325,13 +339,13 @@
 <tr><td><code>-m</code>, <code>--messages</code></td><td>将要发送的消息字符串,以逗号分隔;必须指定 -m 或 -f</td><td>[]</td></tr>
 <tr><td><code>-n</code>, <code>--num-produce</code></td><td>发送单条或多条消息的次数;消息/文件 * 生产次数 应小于 1000</td><td>1</td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>生产消息的频率(单位是消息/秒),值为 0 表示尽可能快地生产消息</td><td>0.0</td></tr>
-<tr><td><code>-db</code>, <code>--disable-batching</code></td><td>禁用批量发送消息</td><td>false</td></tr>
+<tr><td><code>-db</code>, <code>--disable-batching</code></td><td>Disable batch sending of messages</td><td>false</td></tr>
 <tr><td><code>-c</code>, <code>--chunking</code></td><td>如果消息超过允许的最大大小,则将消息分割并分块发布。</td><td>false</td></tr>
 <tr><td><code>-s</code>, <code>--separator</code></td><td>用于分割消息字符的字符串。</td><td>&quot;,&quot;</td></tr>
 <tr><td><code>-k</code>, <code>--key</code></td><td>要添加的消息键(Message Key)</td><td>key=value string, like k1=v1,k2=v2.</td></tr>
-<tr><td><code>-p</code>, <code>--properties</code></td><td>要添加的属性。如果添加多个属性,要使用逗号作为分隔符,比如:<code>k1=v1,k2=v2</code>。</td><td></td></tr>
+<tr><td><code>-p</code>, <code>--properties</code></td><td>Properties to add. If you want to add multiple properties, use the comma as the separator, e.g. <code>k1=v1,k2=v2</code>.</td><td></td></tr>
 <tr><td><code>-ekn</code>, <code>--encryption-key-name</code></td><td>The public key name to encrypt payload.</td><td></td></tr>
-<tr><td><code>-ekv</code>, <code>--encryption-key-value</code></td><td>用于加密有效的公钥的URI。例如,<code>file://path/to/public.key</code>或<code>data:application/x-pem-file;base64,*****</code>。</td><td></td></tr>
+<tr><td><code>-ekv</code>, <code>--encryption-key-value</code></td><td>The URI of public key to encrypt payload. For example, <code>file:///path/to/public.key</code> or <code>data:application/x-pem-file;base64,*****</code>.</td><td></td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="consume"></a><a href="#consume" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
@@ -350,15 +364,15 @@
 <tr><td><code>-r</code>, <code>--rate</code></td><td>消费消息的频率(单位是消息/秒),值为 0 表示尽可能快地消费消息</td><td>0.0</td></tr>
 <tr><td><code>--regex</code></td><td>表明主题名称为正则表达式</td><td>false</td></tr>
 <tr><td><code>-s</code>, <code>--subscription-name</code></td><td>Subscription name</td><td></td></tr>
-<tr><td><code>-t</code>, <code>--subscription-type</code></td><td>订阅类型。可能的值有:Exclusive, Shared, Failover, Key_Shared。</td><td>Exclusive</td></tr>
-<tr><td><code>-p</code>, <code>--subscription-position</code></td><td>订阅的位置。可能的值有:Latest, Earliest。</td><td>Latest</td></tr>
-<tr><td><code>-m</code>, <code>--subscription-mode</code></td><td>订阅模式。可能的值:Durable ,NonDurable</td><td>Durable</td></tr>
+<tr><td><code>-t</code>, <code>--subscription-type</code></td><td>The type of the subscription. Possible values: Exclusive, Shared, Failover, Key_Shared.</td><td>Exclusive</td></tr>
+<tr><td><code>-p</code>, <code>--subscription-position</code></td><td>The position of the subscription. Possible values: Latest, Earliest.</td><td>Latest</td></tr>
+<tr><td><code>-m</code>, <code>--subscription-mode</code></td><td>Subscription mode. Possible values: Durable, NonDurable.</td><td>Durable</td></tr>
 <tr><td><code>-q</code>, <code>--queue-size</code></td><td>消费者接收队列的大小。</td><td>0</td></tr>
 <tr><td><code>-mc</code>, <code>--max_chunked_msg</code></td><td>最大的待处理块消息。</td><td>0</td></tr>
 <tr><td><code>-ac</code>, <code>--auto_ack_chunk_q_full</code></td><td>如果队列已满,则自动确认消费者的接收队列中最早的消息。</td><td>false</td></tr>
 <tr><td><code>--hide-content</code></td><td>不要将消息打印到控制台。</td><td>false</td></tr>
-<tr><td><code>-st</code>, <code>--schema-type</code></td><td>设置 Schema 类型。使用 <code>auto_consume</code> 导出 AVRO 或其他结构化数据类型。可用值有:bytes, auto_consume。</td><td>bytes</td></tr>
-<tr><td><code>-ekv</code>, <code>--encryption-key-value</code></td><td>用于加密有效的公钥的URI。例如,<code>file://path/to/public.key</code>或<code>data:application/x-pem-file;base64,*****</code>。</td><td></td></tr>
+<tr><td><code>-st</code>, <code>--schema-type</code></td><td>Set the schema type. Use <code>auto_consume</code> to dump AVRO and other structured data types. Possible values: bytes, auto_consume.</td><td>bytes</td></tr>
+<tr><td><code>-ekv</code>, <code>--encryption-key-value</code></td><td>The URI of public key to encrypt payload. For example, <code>file:///path/to/public.key</code> or <code>data:application/x-pem-file;base64,*****</code>.</td><td></td></tr>
 <tr><td><code>-pm</code>, <code>--pool-messages</code></td><td>使用池化消息</td><td>true</td></tr>
 </tbody>
 </table>
@@ -368,7 +382,7 @@
 <p>用法</p>
 <pre><code class="hljs css language-bash">$ pulsar-daemon <span class="hljs-built_in">command</span>
 </code></pre>
-<p>命令: * <code>start</code> * <code>stop</code> * <code>restart</code></p>
+<p>Commands * <code>start</code> * <code>stop</code> * <code>restart</code></p>
 <h3><a class="anchor" aria-hidden="true" id="start"></a><a href="#start" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>使用 nohup 在后台启动服务</p>
 <p>用法</p>
@@ -389,7 +403,7 @@
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="restart"></a><a href="#restart" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p>重新启动一个已经启动的服务。</p>
+<p>Restart a service that has already been started.</p>
 <pre><code class="hljs css language-bash">$ pulsar-daemon restart service
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="pulsar-perf"></a><a href="#pulsar-perf" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
@@ -397,7 +411,7 @@
 <p>用法</p>
 <pre><code class="hljs css language-bash">$ pulsar-perf <span class="hljs-built_in">command</span>
 </code></pre>
-<p>命令: * <code>consume</code> * <code>produce</code> * <code>read</code> * <code>websocket-producer</code> * <code>managed-ledger</code> * <code>monitor-brokers</code> * <code>simulation-client</code> * <code>simulation-controller</code> * <code>help</code></p>
+<p>Commands * <code>consume</code> * <code>produce</code> * <code>read</code> * <code>websocket-producer</code> * <code>managed-ledger</code> * <code>monitor-brokers</code> * <code>simulation-client</code> * <code>simulation-controller</code> * <code>help</code></p>
 <p>环境变量</p>
 <p>下表列出了你可以用来配置 pulsar-perf 工具的环境变量。</p>
 <table>
@@ -433,7 +447,7 @@
 <tr><td><code>-v</code>, <code>--encryption-key-value-file</code></td><td>包含解密有效荷载的私钥的文件</td><td></td></tr>
 <tr><td><code>-h</code>, <code>--help</code></td><td>帮助信息</td><td>false</td></tr>
 <tr><td><code>--conf-file</code></td><td>Configuration file</td><td></td></tr>
-<tr><td><code>-m</code>, <code>--num-messages</code></td><td>总共要消费的消息数量。如果值小于、等于 0,将持续消费消息。</td><td>0</td></tr>
+<tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to consume in total. If the value is equal to or smaller than 0, it keeps consuming messages.</td><td>0</td></tr>
 <tr><td><code>-e</code>, <code>--expire_time_incomplete_chunked_messages</code></td><td>不完整区块消息的到期时间 (毫秒)</td><td>0</td></tr>
 <tr><td><code>-c</code>, <code>--max-connections</code></td><td>Max number of TCP connections to a single broker</td><td>100</td></tr>
 <tr><td><code>-mc</code>, <code>--max_chunked_msg</code></td><td>最大的待处理块消息。</td><td>0</td></tr>
@@ -469,7 +483,7 @@
 <tr><th>参数</th><th>说明</th><th>默认值</th></tr>
 </thead>
 <tbody>
-<tr><td><code>-am</code>, <code>--access-mode</code></td><td>生产者访问模式。有效值是 <code>Shared</code>, <code>Exclusive</code> 和 <code>WaitForExclusive</code></td><td>Shared(共享)</td></tr>
+<tr><td><code>-am</code>, <code>--access-mode</code></td><td>Producer access mode. Valid values are <code>Shared</code>, <code>Exclusive</code> and <code>WaitForExclusive</code></td><td>Shared(共享)</td></tr>
 <tr><td><code>-au</code>, <code>--admin-url</code></td><td>Pulsar admin URL</td><td></td></tr>
 <tr><td><code>--auth-params</code></td><td>认证参数,其格式由认证插件类中<code>configure</code>方法的实现决定。 例如, <code>key1:val1,key2:val2</code> or <code>{&quot;key1&quot;:&quot;val1&quot;,&quot;key2&quot;:&quot;val2&quot;}</code></td><td></td></tr>
 <tr><td><code>--auth-plugin</code></td><td>认证插件类名称</td><td></td></tr>
@@ -480,7 +494,7 @@
 <tr><td><code>-bw</code>, <code>--busy-wait</code></td><td>在 Pulsar 客户端启用或禁用 Busy-Wait</td><td>false</td></tr>
 <tr><td><code>-bm</code>, <code>--batch-max-messages</code></td><td>如果消息超过允许的最大大小,则将消息分割并分块发布。</td><td>false</td></tr>
 <tr><td><code>-d</code>, <code>--delay</code></td><td>给消息标记延迟时间(秒)</td><td>0s</td></tr>
-<tr><td><code>-z</code>, <code>--compression</code></td><td>压缩消息的 payload。可能的值有:NONE, LZ4, ZLIB, ZSTD 或 SNAPPY。</td><td></td></tr>
+<tr><td><code>-z</code>, <code>--compression</code></td><td>Compress messages’ payload. Possible values are NONE, LZ4, ZLIB, ZSTD or SNAPPY.</td><td></td></tr>
 <tr><td><code>--conf-file</code></td><td>Configuration file</td><td></td></tr>
 <tr><td><code>-k</code>, <code>--encryption-key-name</code></td><td>加密有效载荷的公钥名称</td><td></td></tr>
 <tr><td><code>-v</code>, <code>--encryption-key-value-file</code></td><td>包含用于加密有效载荷的公钥文件</td><td></td></tr>
@@ -491,13 +505,13 @@
 <tr><td><code>-c</code>, <code>--max-connections</code></td><td>Max number of TCP connections to a single broker</td><td>100</td></tr>
 <tr><td><code>-o</code>, <code>--max-outstanding</code></td><td>Max number of outstanding messages</td><td>1000</td></tr>
 <tr><td><code>-p</code>, <code>--max-outstanding-across-partitions</code></td><td>跨分区场景下的最大未处理消息数</td><td>50000</td></tr>
-<tr><td><code>-m</code>, <code>--num-messages</code></td><td>总共要发布的消息的数量。如果这个值小于或等于0,它就会继续发布消息。</td><td>0</td></tr>
-<tr><td><code>-mk</code>, <code>--message-key-generation-mode</code></td><td>消息密钥的生成模式。有效选项是 <code>autoIncrement</code>, <code>random</code></td><td></td></tr>
+<tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If this value is less than or equal to 0, it keeps publishing messages.</td><td>0</td></tr>
+<tr><td><code>-mk</code>, <code>--message-key-generation-mode</code></td><td>The generation mode of message key. Valid options are <code>autoIncrement</code>, <code>random</code></td><td></td></tr>
 <tr><td><code>-ioThreads</code>, <code>--num-io-threads</code></td><td>设置用于处理 broker 连接的线程数</td><td>1</td></tr>
 <tr><td><code>-n</code>, <code>--num-producers</code></td><td>The number of producers (per topic)</td><td>1</td></tr>
 <tr><td><code>-threads</code>, <code>--num-test-threads</code></td><td>测试线程数</td><td>1</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>The number of topics</td><td>1</td></tr>
-<tr><td><code>-np</code>, <code>--partitions</code></td><td>以给定的分区数量创建分区主题。将此值设置为0意味着不尝试创建主题</td><td></td></tr>
+<tr><td><code>-np</code>, <code>--partitions</code></td><td>Create partitioned topics with the given number of partitions. Setting this value to 0 means not trying to create a topic</td><td></td></tr>
 <tr><td><code>-f</code>, <code>--payload-file</code></td><td>使用 UTF-8 编码的文本文件的有效载荷(payload),会在发布消息时随机选择一个有效载荷</td><td></td></tr>
 <tr><td><code>-e</code>, <code>--payload-delimiter</code></td><td>当使用来自文件的有效载荷( payload)时,设置每行之间的分隔符</td><td>\n</td></tr>
 <tr><td><code>-pn</code>, <code>--producer-name</code></td><td>生产者名称</td><td></td></tr>
@@ -507,7 +521,7 @@
 <tr><td><code>-u</code>, <code>--service-url</code></td><td>Pulsar service URL</td><td></td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>Message size (in bytes)</td><td>1024</td></tr>
 <tr><td><code>-i</code>, <code>--stats-interval-seconds</code></td><td>Statistics interval seconds. If 0, statistics will be disabled.</td><td>0</td></tr>
-<tr><td><code>-time</code>, <code>--test-duration</code></td><td>测试持续时间(单位:秒)。如果这个值小于或等于0,它就会一直发布消息。</td><td>0</td></tr>
+<tr><td><code>-time</code>, <code>--test-duration</code></td><td>Test duration (in seconds). If this value is less than or equal to 0, it keeps publishing messages.</td><td>0</td></tr>
 <tr><td><code>--trust-cert-file</code></td><td>Path for the trusted TLS certificate file</td><td></td></tr>
 <tr><td><code>--warmup-time</code></td><td>预热时间(秒)</td><td>1</td></tr>
 <tr><td><code>--tls-allow-insecure</code></td><td>允许不安全的 TLS 连接。</td><td></td></tr>
@@ -529,7 +543,7 @@
 <tr><td><code>--listener-name</code></td><td>broker 监听器名称</td><td></td></tr>
 <tr><td><code>--conf-file</code></td><td>Configuration file</td><td></td></tr>
 <tr><td><code>-h</code>, <code>--help</code></td><td>帮助信息</td><td>false</td></tr>
-<tr><td><code>-n</code>, <code>--num-messages</code></td><td>总共要消费的消息数量。如果值小于、等于 0,将持续消费消息。</td><td>0</td></tr>
+<tr><td><code>-n</code>, <code>--num-messages</code></td><td>Number of messages to consume in total. If the value is equal to or smaller than 0, it keeps consuming messages.</td><td>0</td></tr>
 <tr><td><code>-c</code>, <code>--max-connections</code></td><td>Max number of TCP connections to a single broker</td><td>100</td></tr>
 <tr><td><code>-ioThreads</code>, <code>--num-io-threads</code></td><td>设置用于处理 broker 连接的线程数</td><td>1</td></tr>
 <tr><td><code>-lt</code>, <code>--num-listener-threads</code></td><td>Set the number of threads to be used for message listeners</td><td>1</td></tr>
@@ -560,16 +574,16 @@
 <tr><td><code>--auth-plugin</code></td><td>认证插件类名称</td><td></td></tr>
 <tr><td><code>--conf-file</code></td><td>Configuration file</td><td></td></tr>
 <tr><td><code>-h</code>, <code>--help</code></td><td>帮助信息</td><td>false</td></tr>
-<tr><td><code>-m</code>, <code>--num-messages</code></td><td>总共要发布的消息的数量。如果这个值小于或等于0,它就会继续发布消息。</td><td>0</td></tr>
+<tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If this value is less than or equal to 0, it keeps publishing messages.</td><td>0</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>The number of topics</td><td>1</td></tr>
 <tr><td><code>-f</code>, <code>--payload-file</code></td><td>使用文件中的 payload 而不是空缓存中的</td><td></td></tr>
 <tr><td><code>-e</code>, <code>--payload-delimiter</code></td><td>当使用来自文件的有效载荷( payload)时,设置每行之间的分隔符</td><td>\n</td></tr>
 <tr><td><code>-fp</code>, <code>--format-payload</code></td><td>格式化为来自 producer 和/或流中的消息索引作为时间戳,单位为 nanoseconds</td><td>false</td></tr>
-<tr><td><code>-fc</code>, <code>--format-class</code></td><td>自定义 formatter 类名</td><td><code>org.apache.pulsar.testclient.DefaultMessageFormatter</code></td></tr>
+<tr><td><code>-fc</code>, <code>--format-class</code></td><td>Custom formatter class name</td><td><code>org.apache.pulsar.testclient.DefaultMessageFormatter</code></td></tr>
 <tr><td><code>-u</code>, <code>--proxy-url</code></td><td>Pulsar 代理 URL,比如 &quot;<a href="ws://localhost:8080/">ws://localhost:8080/</a>&quot;</td><td></td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>Publish rate msg/s across topics</td><td>100</td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>消息大小(字节)</td><td>1024</td></tr>
-<tr><td><code>-time</code>, <code>--test-duration</code></td><td>测试持续时间(单位:秒)。如果这个值小于或等于0,它就会一直发布消息。</td><td>0</td></tr>
+<tr><td><code>-time</code>, <code>--test-duration</code></td><td>Test duration (in seconds). If this value is less than or equal to 0, it keeps publishing messages.</td><td>0</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="managed-ledger"></a><a href="#managed-ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
@@ -584,16 +598,16 @@
 </thead>
 <tbody>
 <tr><td><code>-a</code>, <code>--ack-quorum</code></td><td>Ledger ack quorum</td><td>1</td></tr>
-<tr><td><code>-dt</code>, <code>--digest-type</code></td><td>BookKeeper 摘要类型。可能的值有:[CRC32, MAC, CRC32C, DUMMY]</td><td>CRC32C</td></tr>
+<tr><td><code>-dt</code>, <code>--digest-type</code></td><td>BookKeeper digest type. Possible Values: [CRC32, MAC, CRC32C, DUMMY]</td><td>CRC32C</td></tr>
 <tr><td><code>-e</code>, <code>--ensemble-size</code></td><td>Ledger 整体大小</td><td>1</td></tr>
 <tr><td><code>-h</code>, <code>--help</code></td><td>帮助信息</td><td>false</td></tr>
 <tr><td><code>-c</code>, <code>--max-connections</code></td><td>单个 bookie 的最大 TCP 连接数</td><td>1</td></tr>
 <tr><td><code>-o</code>, <code>--max-outstanding</code></td><td>未处理请求的最大数量</td><td>1000</td></tr>
-<tr><td><code>-m</code>, <code>--num-messages</code></td><td>总共要发布的消息的数量。如果这个值小于或等于0,它就会继续发布消息。</td><td>0</td></tr>
+<tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If this value is less than or equal to 0, it keeps publishing messages.</td><td>0</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>managed ledger 的数量</td><td>1</td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>在managed ledger中的写入速率(消息/秒)</td><td>100</td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>消息大小(字节)</td><td>1024</td></tr>
-<tr><td><code>-time</code>, <code>--test-duration</code></td><td>测试持续时间(单位:秒)。如果这个值小于或等于0,它就会一直发布消息。</td><td>0</td></tr>
+<tr><td><code>-time</code>, <code>--test-duration</code></td><td>Test duration (in seconds). If this value is less than or equal to 0, it keeps publishing messages.</td><td>0</td></tr>
 <tr><td><code>--threads</code></td><td>正在写入的线程数</td><td>1</td></tr>
 <tr><td><code>-w</code>, <code>--write-quorum</code></td><td>Ledger write quorum</td><td>1</td></tr>
 <tr><td><code>-zk</code>, <code>--zookeeperServers</code></td><td>ZooKeeper 连接字符串</td><td></td></tr>
@@ -615,7 +629,7 @@
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="simulation-client"></a><a href="#simulation-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p>运行一个 Pulsar 客户端的模拟服务器。使用在 <code>conf/client.conf</code> 中指定的客户端配置。</p>
+<p>Run a simulation server acting as a Pulsar client. Uses the client configuration specified in <code>conf/client.conf</code>.</p>
 <p>用法</p>
 <pre><code class="hljs css language-bash">$ pulsar-perf simulation-client options
 </code></pre>
@@ -738,13 +752,13 @@
 <p>用法</p>
 <pre><code class="hljs css language-bash">$ broker-tool <span class="hljs-built_in">command</span>
 </code></pre>
-<p>命令 * <code>load-report</code> * <code>help</code></p>
+<p>Commands * <code>load-report</code> * <code>help</code></p>
 <p>示例 获取关于某条命令的更多信息的两种方式:</p>
 <pre><code class="hljs css language-bash">$ broker-tool <span class="hljs-built_in">help</span> <span class="hljs-built_in">command</span>
 $ broker-tool <span class="hljs-built_in">command</span> --<span class="hljs-built_in">help</span>
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="load-report"></a><a href="#load-report" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>收集指定 broker 的负载报告。 命令会运行在 broker 上,会被用于排除 broker 无法收集正确负载报告的故障。</p>
+<p>Collect the load report of a specific broker. The command is run on a broker, and used for troubleshooting why broker can’t collect right load report.</p>
 <p>选项</p>
 <table>
 <thead>
@@ -755,7 +769,7 @@ $ broker-tool <span class="hljs-built_in">command</span> --<span class="hljs-bui
 <tr><td><code>-h</code>, <code>--help</code></td><td>显示帮助信息</td><td></td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/reference-terminology"><span class="arrow-prev">← </span><span>术语</span></a><a class="docs-next button" href="/docs/zh-CN/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie"><cod [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/reference-terminology"><span class="arrow-prev">← </span><span>术语</span></a><a class="docs-next button" href="/docs/zh-CN/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#bookie"><cod [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-TW/next/cookbooks-retention-expiry.html b/content/docs/zh-TW/next/cookbooks-retention-expiry.html
index 0913262..b95333f 100644
--- a/content/docs/zh-TW/next/cookbooks-retention-expiry.html
+++ b/content/docs/zh-TW/next/cookbooks-retention-expiry.html
@@ -144,10 +144,9 @@ To disable the retention policy, you need to set both the size and time limit to
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="backlog-quotas"></a><a href="#backlog-quotas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p><em>Backlogs</em> are sets of unacknowledged messages for a topic that have been stored by bookies. Pulsar stores all unacknowledged messages in backlogs until they are processed and acknowledged.</p>
-<p>You can control the allowable size of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
-<p>TODO: Expand on is this per backlog or per topic?</p>
+<p>You can control the allowable size and/or time of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
 <ul>
-<li>an allowable <em>size threshold</em> for each topic in the namespace</li>
+<li>an allowable <em>size and/or time threshold</em> for each topic in the namespace</li>
 <li>a <em>retention policy</em> that determines which action the <a href="/docs/zh-TW/next/reference-terminology#broker">broker</a> takes if the threshold is exceeded.</li>
 </ul>
 <p>The following retention policies are available:</p>
diff --git a/content/docs/zh-TW/next/cookbooks-retention-expiry/index.html b/content/docs/zh-TW/next/cookbooks-retention-expiry/index.html
index 0913262..b95333f 100644
--- a/content/docs/zh-TW/next/cookbooks-retention-expiry/index.html
+++ b/content/docs/zh-TW/next/cookbooks-retention-expiry/index.html
@@ -144,10 +144,9 @@ To disable the retention policy, you need to set both the size and time limit to
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="backlog-quotas"></a><a href="#backlog-quotas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p><em>Backlogs</em> are sets of unacknowledged messages for a topic that have been stored by bookies. Pulsar stores all unacknowledged messages in backlogs until they are processed and acknowledged.</p>
-<p>You can control the allowable size of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
-<p>TODO: Expand on is this per backlog or per topic?</p>
+<p>You can control the allowable size and/or time of backlogs, at the namespace level, using <em>backlog quotas</em>. Setting a backlog quota involves setting:</p>
 <ul>
-<li>an allowable <em>size threshold</em> for each topic in the namespace</li>
+<li>an allowable <em>size and/or time threshold</em> for each topic in the namespace</li>
 <li>a <em>retention policy</em> that determines which action the <a href="/docs/zh-TW/next/reference-terminology#broker">broker</a> takes if the threshold is exceeded.</li>
 </ul>
 <p>The following retention policies are available:</p>
diff --git a/content/docs/zh-TW/next/develop-binary-protocol.html b/content/docs/zh-TW/next/develop-binary-protocol.html
index f3d926a..c227bf6 100644
--- a/content/docs/zh-TW/next/develop-binary-protocol.html
+++ b/content/docs/zh-TW/next/develop-binary-protocol.html
@@ -206,6 +206,7 @@
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>Once the client gets confirmation of the producer creation, it can publish messages to the broker, referring to the producer id negotiated before.</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
+<p>If the client does not receive a response indicating producer creation success or failure, the client should first send a command to close the original producer before sending a command to re-attempt producer creation.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-producer"></a><a href="#command-producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandProducer</span> </span>{
   <span class="hljs-string">"topic"</span> : <span class="hljs-string">"persistent://my-property/my-cluster/my-namespace/my-topic"</span>,
@@ -246,6 +247,7 @@
 <h5><a class="anchor" aria-hidden="true" id="command-closeproducer"></a><a href="#command-closeproducer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p><strong>Note</strong>: <em>This command can be sent by either producer or broker</em>.</p>
 <p>When receiving a <code>CloseProducer</code> command, the broker will stop accepting any more messages for the producer, wait until all pending messages are persisted and then reply <code>Success</code> to the client.</p>
+<p>If the client does not receive a response to a <code>Producer</code> command within a timeout, the client must first send a <code>CloseProducer</code> command before sending another <code>Producer</code> command. The client does not need to await a response to the <code>CloseProducer</code> command before sending the next <code>Producer</code> command.</p>
 <p>The broker can send a <code>CloseProducer</code> command to client when it's performing a graceful failover (eg: broker is being restarted, or the topic is being unloaded by load balancer to be transferred to a different broker).</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
 <h3><a class="anchor" aria-hidden="true" id="consumer"></a><a href="#consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
diff --git a/content/docs/zh-TW/next/develop-binary-protocol/index.html b/content/docs/zh-TW/next/develop-binary-protocol/index.html
index f3d926a..c227bf6 100644
--- a/content/docs/zh-TW/next/develop-binary-protocol/index.html
+++ b/content/docs/zh-TW/next/develop-binary-protocol/index.html
@@ -206,6 +206,7 @@
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>Once the client gets confirmation of the producer creation, it can publish messages to the broker, referring to the producer id negotiated before.</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
+<p>If the client does not receive a response indicating producer creation success or failure, the client should first send a command to close the original producer before sending a command to re-attempt producer creation.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-producer"></a><a href="#command-producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandProducer</span> </span>{
   <span class="hljs-string">"topic"</span> : <span class="hljs-string">"persistent://my-property/my-cluster/my-namespace/my-topic"</span>,
@@ -246,6 +247,7 @@
 <h5><a class="anchor" aria-hidden="true" id="command-closeproducer"></a><a href="#command-closeproducer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p><strong>Note</strong>: <em>This command can be sent by either producer or broker</em>.</p>
 <p>When receiving a <code>CloseProducer</code> command, the broker will stop accepting any more messages for the producer, wait until all pending messages are persisted and then reply <code>Success</code> to the client.</p>
+<p>If the client does not receive a response to a <code>Producer</code> command within a timeout, the client must first send a <code>CloseProducer</code> command before sending another <code>Producer</code> command. The client does not need to await a response to the <code>CloseProducer</code> command before sending the next <code>Producer</code> command.</p>
 <p>The broker can send a <code>CloseProducer</code> command to client when it's performing a graceful failover (eg: broker is being restarted, or the topic is being unloaded by load balancer to be transferred to a different broker).</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
 <h3><a class="anchor" aria-hidden="true" id="consumer"></a><a href="#consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
diff --git a/content/docs/zh-TW/next/io-debug.html b/content/docs/zh-TW/next/io-debug.html
index e3464d2..de007b8 100644
--- a/content/docs/zh-TW/next/io-debug.html
+++ b/content/docs/zh-TW/next/io-debug.html
@@ -94,11 +94,11 @@ docker run -d -it -p 6650:6650 -p 8080:8080 -v <span class="hljs-variable">$PWD<
 </code></pre></li>
 <li><p>Configure the Mongo sink with the <code>mongo-sink-config.yaml</code> file.</p>
 <pre><code class="hljs css language-bash">configs:
-mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
-database: <span class="hljs-string">"pulsar"</span>
-collection: <span class="hljs-string">"messages"</span>
-batchSize: 2
-batchTimeMs: 500
+  mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
+  database: <span class="hljs-string">"pulsar"</span>
+  collection: <span class="hljs-string">"messages"</span>
+  batchSize: 2
+  batchTimeMs: 500
 </code></pre>
 <pre><code class="hljs css language-bash">docker cp mongo-sink-config.yaml pulsar-mongo-standalone:/pulsar/
 </code></pre></li>
@@ -110,11 +110,11 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 <h2><a class="anchor" aria-hidden="true" id="debug-in-localrun-mode"></a><a href="#debug-in-localrun-mode" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Start the Mongo sink in localrun mode using the <code>localrun</code> command.</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
+<p><strong>提示</strong></p>
 <p>For more information about the <code>localrun</code> command, see <a href="/docs/zh-TW/next/reference-connector-admin/#localrun-1"><code>localrun</code></a>.</p>
 </blockquote>
 <pre><code class="hljs css language-bash">./bin/pulsar-admin sinks localrun \
---archive pulsar-io-mongo-2.4.0.nar \ 
+--archive connectors/pulsar-io-mongo-2.8.1.nar \ 
 --tenant public --namespace default \
 --inputs <span class="hljs-built_in">test</span>-mongo \
 --name pulsar-mongo-sink \
@@ -136,7 +136,7 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 </code></pre>
 <p>To clearly explain the log information, here breaks down the large block of information into small blocks and add descriptions for each block.</p>
 <ul>
-<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; #### Tip &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is decompressed in [...]
+<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; <strong>Tip</strong> &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is dec [...]
 <li><p>This piece of log information illustrates the basic information about the Mongo sink connector, such as tenant, namespace, name, parallelism, resources, and so on, which can be used to <strong>check whether the Mongo sink connector is configured correctly or not</strong>.
 bash
 08:21:55.390 [main] INFO  org.apache.pulsar.functions.runtime.ThreadRuntime - ThreadContainer starting function with instance config InstanceConfig(instanceId=0, functionId=853d60a1-0c48-44d5-9a5c-6917386476b2, functionVersion=c2ce1458-b69e-4175-88c0-a0a856a2be8c, functionDetails=tenant: &quot;public&quot;
@@ -271,7 +271,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示-1"></a><a href="#提示-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><strong>提示</strong></p>
 <p>For more information about the <code>get</code> command, see <a href="/docs/zh-TW/next/reference-connector-admin/#get-1"><code>get</code></a>.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="status"></a><a href="#status" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
@@ -302,7 +302,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示-2"></a><a href="#提示-2" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><strong>提示</strong></p>
 <p>For more information about the <code>status</code> command, see <a href="/docs/zh-TW/next/reference-connector-admin/#stauts-1"><code>status</code></a>.</p>
 <p>If there are multiple connectors running on a worker, <code>workerId</code> can locate the worker on which the specified connector is running.</p>
 </blockquote>
@@ -353,7 +353,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示-3"></a><a href="#提示-3" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><strong>提示</strong></p>
 <p>For more information about the <code>topic stats</code> command, see <a href="http://pulsar.apache.org/docs/en/pulsar-admin/#stats-1"><code>topic stats</code></a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="checklist"></a><a href="#checklist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
diff --git a/content/docs/zh-TW/next/io-debug/index.html b/content/docs/zh-TW/next/io-debug/index.html
index e3464d2..de007b8 100644
--- a/content/docs/zh-TW/next/io-debug/index.html
+++ b/content/docs/zh-TW/next/io-debug/index.html
@@ -94,11 +94,11 @@ docker run -d -it -p 6650:6650 -p 8080:8080 -v <span class="hljs-variable">$PWD<
 </code></pre></li>
 <li><p>Configure the Mongo sink with the <code>mongo-sink-config.yaml</code> file.</p>
 <pre><code class="hljs css language-bash">configs:
-mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
-database: <span class="hljs-string">"pulsar"</span>
-collection: <span class="hljs-string">"messages"</span>
-batchSize: 2
-batchTimeMs: 500
+  mongoUri: <span class="hljs-string">"mongodb://pulsar-mongo:27017"</span>
+  database: <span class="hljs-string">"pulsar"</span>
+  collection: <span class="hljs-string">"messages"</span>
+  batchSize: 2
+  batchTimeMs: 500
 </code></pre>
 <pre><code class="hljs css language-bash">docker cp mongo-sink-config.yaml pulsar-mongo-standalone:/pulsar/
 </code></pre></li>
@@ -110,11 +110,11 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 <h2><a class="anchor" aria-hidden="true" id="debug-in-localrun-mode"></a><a href="#debug-in-localrun-mode" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Start the Mongo sink in localrun mode using the <code>localrun</code> command.</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
+<p><strong>提示</strong></p>
 <p>For more information about the <code>localrun</code> command, see <a href="/docs/zh-TW/next/reference-connector-admin/#localrun-1"><code>localrun</code></a>.</p>
 </blockquote>
 <pre><code class="hljs css language-bash">./bin/pulsar-admin sinks localrun \
---archive pulsar-io-mongo-2.4.0.nar \ 
+--archive connectors/pulsar-io-mongo-2.8.1.nar \ 
 --tenant public --namespace default \
 --inputs <span class="hljs-built_in">test</span>-mongo \
 --name pulsar-mongo-sink \
@@ -136,7 +136,7 @@ curl -O http://apache.01link.hk/pulsar/pulsar-2.4.0/connectors/pulsar-io-mongo-2
 </code></pre>
 <p>To clearly explain the log information, here breaks down the large block of information into small blocks and add descriptions for each block.</p>
 <ul>
-<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; #### Tip &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is decompressed in [...]
+<li><p>This piece of log information shows the storage path of the nar package after decompression. <code>08:21:54.132 [main] INFO org.apache.pulsar.common.nar.NarClassLoader - Created class loader with paths: [file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/, file:/tmp/pulsar-nar/pulsar-io-mongo-2.4.0.nar-unpacked/META-INF/bundled-dependencies/,</code> &gt; <strong>Tip</strong> &gt; &gt; If <code>class cannot be found</code> exception is thrown, check whether the nar file is dec [...]
 <li><p>This piece of log information illustrates the basic information about the Mongo sink connector, such as tenant, namespace, name, parallelism, resources, and so on, which can be used to <strong>check whether the Mongo sink connector is configured correctly or not</strong>.
 bash
 08:21:55.390 [main] INFO  org.apache.pulsar.functions.runtime.ThreadRuntime - ThreadContainer starting function with instance config InstanceConfig(instanceId=0, functionId=853d60a1-0c48-44d5-9a5c-6917386476b2, functionVersion=c2ce1458-b69e-4175-88c0-a0a856a2be8c, functionDetails=tenant: &quot;public&quot;
@@ -271,7 +271,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示-1"></a><a href="#提示-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><strong>提示</strong></p>
 <p>For more information about the <code>get</code> command, see <a href="/docs/zh-TW/next/reference-connector-admin/#get-1"><code>get</code></a>.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="status"></a><a href="#status" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
@@ -302,7 +302,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示-2"></a><a href="#提示-2" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><strong>提示</strong></p>
 <p>For more information about the <code>status</code> command, see <a href="/docs/zh-TW/next/reference-connector-admin/#stauts-1"><code>status</code></a>.</p>
 <p>If there are multiple connectors running on a worker, <code>workerId</code> can locate the worker on which the specified connector is running.</p>
 </blockquote>
@@ -353,7 +353,7 @@ bash
 }
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="提示-3"></a><a href="#提示-3" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><strong>提示</strong></p>
 <p>For more information about the <code>topic stats</code> command, see <a href="http://pulsar.apache.org/docs/en/pulsar-admin/#stats-1"><code>topic stats</code></a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="checklist"></a><a href="#checklist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
diff --git a/content/docs/zh-TW/next/reference-cli-tools.html b/content/docs/zh-TW/next/reference-cli-tools.html
index 3159ec1..9561187 100644
--- a/content/docs/zh-TW/next/reference-cli-tools.html
+++ b/content/docs/zh-TW/next/reference-cli-tools.html
@@ -99,7 +99,7 @@
 <p>Usage:</p>
 <pre><code class="hljs css language-bash">$ pulsar <span class="hljs-built_in">command</span>
 </code></pre>
-<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code></p>
+<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code> * <code>autorecovery</code></p>
 <p>Example:</p>
 <pre><code class="hljs css language-bash">$ PULSAR_BROKER_CONF=/path/to/broker.conf pulsar broker
 </code></pre>
@@ -287,6 +287,20 @@
 <tr><td><code>-server</code></td><td>Configuration zk address, eg: <code>127.0.0.1:2181</code></td><td></td></tr>
 </tbody>
 </table>
+<h3><a class="anchor" aria-hidden="true" id="autorecovery"></a><a href="#autorecovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>Runs an auto-recovery service.</p>
+<p>Usage</p>
+<pre><code class="hljs css language-bash">$ pulsar autorecovery options
+</code></pre>
+<p>Options</p>
+<table>
+<thead>
+<tr><th>Flag</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>-c</code>, <code>--conf</code></td><td>Configuration for the autorecovery</td><td>N/A</td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="pulsar-client"></a><a href="#pulsar-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>The pulsar-client tool</p>
 <p>Usage</p>
@@ -754,7 +768,7 @@ $ broker-tool <span class="hljs-built_in">command</span> --<span class="hljs-bui
 <tr><td><code>-h</code>, <code>--help</code></td><td>Display help information</td><td></td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/zh-TW/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#boo [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/zh-TW/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#boo [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-TW/next/reference-cli-tools/index.html b/content/docs/zh-TW/next/reference-cli-tools/index.html
index 3159ec1..9561187 100644
--- a/content/docs/zh-TW/next/reference-cli-tools/index.html
+++ b/content/docs/zh-TW/next/reference-cli-tools/index.html
@@ -99,7 +99,7 @@
 <p>Usage:</p>
 <pre><code class="hljs css language-bash">$ pulsar <span class="hljs-built_in">command</span>
 </code></pre>
-<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code></p>
+<p>Commands: * <code>bookie</code> * <code>broker</code> * <code>compact-topic</code> * <code>configuration-store</code> * <code>initialize-cluster-metadata</code> * <code>proxy</code> * <code>standalone</code> * <code>websocket</code> * <code>zookeeper</code> * <code>zookeeper-shell</code> * <code>autorecovery</code></p>
 <p>Example:</p>
 <pre><code class="hljs css language-bash">$ PULSAR_BROKER_CONF=/path/to/broker.conf pulsar broker
 </code></pre>
@@ -287,6 +287,20 @@
 <tr><td><code>-server</code></td><td>Configuration zk address, eg: <code>127.0.0.1:2181</code></td><td></td></tr>
 </tbody>
 </table>
+<h3><a class="anchor" aria-hidden="true" id="autorecovery"></a><a href="#autorecovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>Runs an auto-recovery service.</p>
+<p>Usage</p>
+<pre><code class="hljs css language-bash">$ pulsar autorecovery options
+</code></pre>
+<p>Options</p>
+<table>
+<thead>
+<tr><th>Flag</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>-c</code>, <code>--conf</code></td><td>Configuration for the autorecovery</td><td>N/A</td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="pulsar-client"></a><a href="#pulsar-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>The pulsar-client tool</p>
 <p>Usage</p>
@@ -754,7 +768,7 @@ $ broker-tool <span class="hljs-built_in">command</span> --<span class="hljs-bui
 <tr><td><code>-h</code>, <code>--help</code></td><td>Display help information</td><td></td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/zh-TW/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#boo [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/reference-terminology"><span class="arrow-prev">← </span><span>Terminology</span></a><a class="docs-next button" href="/docs/zh-TW/next/reference-configuration"><span>Pulsar configuration</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pulsar"><code>pulsar</code></a><ul class="toc-headings"><li><a href="#boo [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/en/resources.html b/content/en/resources.html
index 250b093..b95b955 100644
--- a/content/en/resources.html
+++ b/content/en/resources.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Resources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th> [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Resources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/en/resources/index.html b/content/en/resources/index.html
index 250b093..b95b955 100644
--- a/content/en/resources/index.html
+++ b/content/en/resources/index.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Resources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th> [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Resources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/fr/resources.html b/content/fr/resources.html
index 84227c3..22bc789 100644
--- a/content/fr/resources.html
+++ b/content/fr/resources.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Ressources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Ressources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/fr/resources/index.html b/content/fr/resources/index.html
index 84227c3..22bc789 100644
--- a/content/fr/resources/index.html
+++ b/content/fr/resources/index.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Ressources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Ressources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/ja/resources.html b/content/ja/resources.html
index ff5616a..caee1ba 100644
--- a/content/ja/resources.html
+++ b/content/ja/resources.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Resources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th> [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Resources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/ja/resources/index.html b/content/ja/resources/index.html
index ff5616a..caee1ba 100644
--- a/content/ja/resources/index.html
+++ b/content/ja/resources/index.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Resources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th> [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Resources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/ko/resources.html b/content/ko/resources.html
index d670a47..ebca090 100644
--- a/content/ko/resources.html
+++ b/content/ko/resources.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>자료</h1><hr/></header><h2>글목록</h2><table class="versions"><thead><tr><th>Forum</th><th>Date</th><th [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>자료</h1><hr/></header><h2>글목록</h2><table class="versions"><thead><tr><th>Forum</th><th>Date</th><th [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/ko/resources/index.html b/content/ko/resources/index.html
index d670a47..ebca090 100644
--- a/content/ko/resources/index.html
+++ b/content/ko/resources/index.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>자료</h1><hr/></header><h2>글목록</h2><table class="versions"><thead><tr><th>Forum</th><th>Date</th><th [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>자료</h1><hr/></header><h2>글목록</h2><table class="versions"><thead><tr><th>Forum</th><th>Date</th><th [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/resources.html b/content/resources.html
index 250b093..b95b955 100644
--- a/content/resources.html
+++ b/content/resources.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Resources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th> [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Resources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/resources/index.html b/content/resources/index.html
index 250b093..b95b955 100644
--- a/content/resources/index.html
+++ b/content/resources/index.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Resources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th> [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Resources</h1><hr/></header><h2>Articles</h2><table class="versions"><thead><tr><th>Forum</th><th> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/swagger/2.10.0-SNAPSHOT/swagger.json b/content/swagger/2.10.0-SNAPSHOT/swagger.json
index 94449cc..4ce40eb 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swagger.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swagger.json
@@ -19888,6 +19888,16 @@
             }
           }
         },
+        "subscriptionAuthentication" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "array",
+            "uniqueItems" : true,
+            "items" : {
+              "type" : "string"
+            }
+          }
+        },
         "topicAuthentication" : {
           "type" : "object",
           "additionalProperties" : {
@@ -19901,16 +19911,6 @@
               }
             }
           }
-        },
-        "subscriptionAuthentication" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "array",
-            "uniqueItems" : true,
-            "items" : {
-              "type" : "string"
-            }
-          }
         }
       }
     },
@@ -19940,15 +19940,15 @@
     "AutoFailoverPolicyData" : {
       "type" : "object",
       "properties" : {
+        "policyType" : {
+          "type" : "string",
+          "enum" : [ "min_available" ]
+        },
         "parameters" : {
           "type" : "object",
           "additionalProperties" : {
             "type" : "string"
           }
-        },
-        "policyType" : {
-          "type" : "string",
-          "enum" : [ "min_available" ]
         }
       }
     },
@@ -19995,9 +19995,6 @@
     "Base64Variant" : {
       "type" : "object",
       "properties" : {
-        "name" : {
-          "type" : "string"
-        },
         "paddingChar" : {
           "type" : "string"
         },
@@ -20008,6 +20005,9 @@
         "maxLineLength" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "name" : {
+          "type" : "string"
         }
       }
     },
@@ -20325,23 +20325,12 @@
     "ConsumerStats" : {
       "type" : "object",
       "properties" : {
-        "address" : {
-          "type" : "string"
-        },
         "metadata" : {
           "type" : "object",
           "additionalProperties" : {
             "type" : "string"
           }
         },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "bytesOutCounter" : {
           "type" : "integer",
           "format" : "int64"
@@ -20350,20 +20339,18 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "consumerName" : {
-          "type" : "string"
+        "msgThroughputOut" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "connectedSince" : {
-          "type" : "string"
+        "msgRateOut" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "availablePermits" : {
+        "unackedMessages" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "msgRateRedeliver" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "lastConsumedTimestamp" : {
           "type" : "integer",
           "format" : "int64"
@@ -20372,17 +20359,13 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "chunkedMessageRate" : {
-          "type" : "number",
-          "format" : "double"
+        "consumerName" : {
+          "type" : "string"
         },
-        "unackedMessages" : {
+        "availablePermits" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "clientVersion" : {
-          "type" : "string"
-        },
         "avgMessagesPerEntry" : {
           "type" : "integer",
           "format" : "int32"
@@ -20398,6 +20381,23 @@
           "items" : {
             "type" : "string"
           }
+        },
+        "chunkedMessageRate" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "connectedSince" : {
+          "type" : "string"
+        },
+        "clientVersion" : {
+          "type" : "string"
+        },
+        "msgRateRedeliver" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "address" : {
+          "type" : "string"
         }
       }
     },
@@ -20512,23 +20512,23 @@
         "numberFormat" : {
           "$ref" : "#/definitions/NumberFormat"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "lenient" : {
           "type" : "boolean"
+        },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         }
       }
     },
     "DelayedDeliveryPolicies" : {
       "type" : "object",
       "properties" : {
-        "active" : {
-          "type" : "boolean"
-        },
         "tickTime" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "active" : {
+          "type" : "boolean"
         }
       }
     },
@@ -20544,25 +20544,22 @@
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
+        "problemHandlers" : {
+          "$ref" : "#/definitions/LinkedNodeDeserializationProblemHandler"
+        },
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "deserializationFeatures" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "problemHandlers" : {
-          "$ref" : "#/definitions/LinkedNodeDeserializationProblemHandler"
-        },
-        "attributes" : {
-          "$ref" : "#/definitions/ContextAttributes"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -20575,15 +20572,21 @@
         "defaultVisibilityChecker" : {
           "$ref" : "#/definitions/VisibilityCheckerObject"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
+        "attributes" : {
+          "$ref" : "#/definitions/ContextAttributes"
         },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "annotationProcessingEnabled" : {
+          "type" : "boolean"
+        },
         "handlerInstantiator" : {
           "$ref" : "#/definitions/HandlerInstantiator"
         },
@@ -20596,9 +20599,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "annotationProcessingEnabled" : {
-          "type" : "boolean"
-        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -20607,14 +20607,11 @@
     "DeserializationContext" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
-        "factory" : {
-          "$ref" : "#/definitions/DeserializerFactory"
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         },
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
@@ -20625,12 +20622,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
+        "arrayBuilders" : {
+          "$ref" : "#/definitions/ArrayBuilders"
         },
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "contextualType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -20641,8 +20641,8 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "arrayBuilders" : {
-          "$ref" : "#/definitions/ArrayBuilders"
+        "factory" : {
+          "$ref" : "#/definitions/DeserializerFactory"
         }
       }
     },
@@ -20724,13 +20724,6 @@
     "FunctionInstanceStatsData" : {
       "type" : "object",
       "properties" : {
-        "oneMin" : {
-          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
-        },
-        "lastInvocation" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "userMetrics" : {
           "type" : "object",
           "additionalProperties" : {
@@ -20738,6 +20731,13 @@
             "format" : "double"
           }
         },
+        "oneMin" : {
+          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
+        },
+        "lastInvocation" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "receivedTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -20931,27 +20931,6 @@
         "contentType" : {
           "$ref" : "#/definitions/JavaType"
         },
-        "interface" : {
-          "type" : "boolean"
-        },
-        "primitive" : {
-          "type" : "boolean"
-        },
-        "interfaces" : {
-          "type" : "array",
-          "items" : {
-            "$ref" : "#/definitions/JavaType"
-          }
-        },
-        "genericSignature" : {
-          "type" : "string"
-        },
-        "final" : {
-          "type" : "boolean"
-        },
-        "abstract" : {
-          "type" : "boolean"
-        },
         "bindings" : {
           "$ref" : "#/definitions/TypeBindings"
         },
@@ -20982,6 +20961,9 @@
         "typeHandler" : {
           "type" : "object"
         },
+        "collectionLikeType" : {
+          "type" : "boolean"
+        },
         "referencedType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -20997,10 +20979,28 @@
         "erasedSignature" : {
           "type" : "string"
         },
-        "collectionLikeType" : {
+        "mapLikeType" : {
           "type" : "boolean"
         },
-        "mapLikeType" : {
+        "interface" : {
+          "type" : "boolean"
+        },
+        "primitive" : {
+          "type" : "boolean"
+        },
+        "interfaces" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/JavaType"
+          }
+        },
+        "genericSignature" : {
+          "type" : "string"
+        },
+        "final" : {
+          "type" : "boolean"
+        },
+        "abstract" : {
           "type" : "boolean"
         },
         "typeName" : {
@@ -21014,9 +21014,6 @@
     "JsonFactory" : {
       "type" : "object",
       "properties" : {
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -21026,11 +21023,14 @@
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -21049,12 +21049,6 @@
         "prettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "currentValue" : {
-          "type" : "object"
-        },
         "featureMask" : {
           "type" : "integer",
           "format" : "int32"
@@ -21063,10 +21057,16 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currentValue" : {
+          "type" : "object"
+        },
         "highestEscapedChar" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
+        },
         "outputTarget" : {
           "type" : "object"
         },
@@ -21082,10 +21082,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -21100,6 +21096,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -21122,13 +21122,6 @@
             "type" : "string"
           }
         },
-        "booleanValue" : {
-          "type" : "boolean"
-        },
-        "byteValue" : {
-          "type" : "string",
-          "format" : "byte"
-        },
         "doubleValue" : {
           "type" : "number",
           "format" : "double"
@@ -21145,6 +21138,13 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "booleanValue" : {
+          "type" : "boolean"
+        },
+        "byteValue" : {
+          "type" : "string",
+          "format" : "byte"
+        },
         "closed" : {
           "type" : "boolean"
         },
@@ -21158,6 +21158,9 @@
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -21168,8 +21171,13 @@
         "currentName" : {
           "type" : "string"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         },
         "currentTokenId" : {
           "type" : "integer",
@@ -21244,14 +21252,6 @@
         },
         "currentValue" : {
           "type" : "object"
-        },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
         }
       }
     },
@@ -21277,9 +21277,6 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "parent" : {
-          "$ref" : "#/definitions/JsonStreamContext"
-        },
         "typeDesc" : {
           "type" : "string"
         },
@@ -21287,15 +21284,18 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "entryCount" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "currentName" : {
           "type" : "string"
         },
         "currentValue" : {
           "type" : "object"
+        },
+        "entryCount" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "parent" : {
+          "$ref" : "#/definitions/JsonStreamContext"
         }
       }
     },
@@ -21583,25 +21583,33 @@
           "type" : "number",
           "format" : "double"
         },
-        "bandwidthIn" : {
+        "cpu" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "bandwidthOut" : {
+        "memory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "memory" : {
+        "directMemory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "cpu" : {
+        "bandwidthIn" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "directMemory" : {
+        "bandwidthOut" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
         "lastUpdate" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "msgThroughputIn" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgThroughputOut" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "underLoaded" : {
           "type" : "boolean"
         },
@@ -21610,23 +21618,12 @@
         },
         "loadReportType" : {
           "type" : "string"
-        },
-        "msgThroughputIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
         }
       }
     },
     "Locale" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "script" : {
           "type" : "string"
         },
@@ -21675,6 +21672,9 @@
         "displayVariant" : {
           "type" : "string"
         },
+        "displayName" : {
+          "type" : "string"
+        },
         "language" : {
           "type" : "string"
         }
@@ -21898,19 +21898,13 @@
           "type" : "number",
           "format" : "double"
         },
-        "address" : {
-          "type" : "string"
-        },
         "metadata" : {
           "type" : "object",
           "additionalProperties" : {
             "type" : "string"
           }
         },
-        "producerName" : {
-          "type" : "string"
-        },
-        "msgRateIn" : {
+        "averageMsgSize" : {
           "type" : "number",
           "format" : "double"
         },
@@ -21918,13 +21912,10 @@
           "type" : "number",
           "format" : "double"
         },
-        "averageMsgSize" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "connectedSince" : {
-          "type" : "string"
-        },
         "accessMode" : {
           "type" : "string",
           "enum" : [ "Shared", "Exclusive", "WaitForExclusive" ]
@@ -21933,12 +21924,21 @@
           "type" : "number",
           "format" : "double"
         },
-        "clientVersion" : {
-          "type" : "string"
-        },
         "producerId" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "connectedSince" : {
+          "type" : "string"
+        },
+        "clientVersion" : {
+          "type" : "string"
+        },
+        "producerName" : {
+          "type" : "string"
+        },
+        "address" : {
+          "type" : "string"
         }
       }
     },
@@ -21952,26 +21952,22 @@
         "connected" : {
           "type" : "boolean"
         },
-        "msgRateIn" : {
+        "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputIn" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateOut" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "replicationDelayInSeconds" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "msgRateExpired" : {
           "type" : "number",
           "format" : "double"
@@ -21980,6 +21976,10 @@
           "type" : "integer",
           "format" : "int64"
         },
+        "replicationDelayInSeconds" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "inboundConnection" : {
           "type" : "string"
         },
@@ -22001,23 +22001,12 @@
           "type" : "number",
           "format" : "double"
         },
-        "type" : {
-          "type" : "string"
-        },
         "replicated" : {
           "type" : "boolean"
         },
         "durable" : {
           "type" : "boolean"
         },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "bytesOutCounter" : {
           "type" : "integer",
           "format" : "int64"
@@ -22030,46 +22019,25 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "nonContiguousDeletedMessagesRanges" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "consumers" : {
-          "type" : "array",
-          "items" : {
-            "$ref" : "#/definitions/ConsumerStats"
-          }
-        },
-        "allowOutOfOrderDelivery" : {
-          "type" : "boolean"
-        },
-        "keySharedMode" : {
-          "type" : "string"
-        },
-        "subscriptionProperties" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
-          }
-        },
-        "consumersAfterMarkDeletePosition" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
-          }
+        "msgThroughputOut" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "msgRateRedeliver" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgBacklog" : {
+        "msgDelayed" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "unackedMessages" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "activeConsumerName" : {
+          "type" : "string"
+        },
         "totalMsgExpired" : {
           "type" : "integer",
           "format" : "int64"
@@ -22094,47 +22062,69 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "msgBacklogNoDelayed" : {
+        "allowOutOfOrderDelivery" : {
+          "type" : "boolean"
+        },
+        "keySharedMode" : {
+          "type" : "string"
+        },
+        "consumersAfterMarkDeletePosition" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "subscriptionProperties" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "nonContiguousDeletedMessagesRanges" : {
           "type" : "integer",
-          "format" : "int64"
+          "format" : "int32"
         },
-        "chunkedMessageRate" : {
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "blockedSubscriptionOnUnackedMsgs" : {
-          "type" : "boolean"
+        "chunkedMessageRate" : {
+          "type" : "integer",
+          "format" : "int32"
         },
-        "msgDelayed" : {
+        "msgBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "unackedMessages" : {
+        "msgRateRedeliver" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgBacklogNoDelayed" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "activeConsumerName" : {
-          "type" : "string"
+        "blockedSubscriptionOnUnackedMsgs" : {
+          "type" : "boolean"
         },
         "msgRateExpired" : {
           "type" : "number",
           "format" : "double"
+        },
+        "consumers" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ConsumerStats"
+          }
+        },
+        "type" : {
+          "type" : "string"
         }
       }
     },
     "NonPersistentTopicStats" : {
       "type" : "object",
       "properties" : {
-        "msgDropRate" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "subscriptions" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "$ref" : "#/definitions/NonPersistentSubscriptionStats"
-          }
-        },
         "publishers" : {
           "type" : "array",
           "items" : {
@@ -22147,19 +22137,13 @@
             "$ref" : "#/definitions/NonPersistentReplicatorStats"
           }
         },
-        "msgRateIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgThroughputIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
+        "subscriptions" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "$ref" : "#/definitions/NonPersistentSubscriptionStats"
+          }
         },
-        "msgThroughputOut" : {
+        "msgDropRate" : {
           "type" : "number",
           "format" : "double"
         },
@@ -22202,10 +22186,30 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "msgThroughputIn" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgThroughputOut" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgRateIn" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgRateOut" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "nonContiguousDeletedMessagesRanges" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "deduplicationStatus" : {
           "type" : "string"
         },
@@ -22213,10 +22217,6 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "compaction" : {
           "$ref" : "#/definitions/CompactionStats"
         }
@@ -22262,10 +22262,10 @@
     "ObjectCodec" : {
       "type" : "object",
       "properties" : {
-        "factory" : {
+        "jsonFactory" : {
           "$ref" : "#/definitions/JsonFactory"
         },
-        "jsonFactory" : {
+        "factory" : {
           "$ref" : "#/definitions/JsonFactory"
         }
       }
@@ -22273,9 +22273,6 @@
     "ObjectMapper" : {
       "type" : "object",
       "properties" : {
-        "factory" : {
-          "$ref" : "#/definitions/JsonFactory"
-        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
@@ -22317,44 +22314,31 @@
         },
         "injectableValues" : {
           "$ref" : "#/definitions/InjectableValues"
+        },
+        "factory" : {
+          "$ref" : "#/definitions/JsonFactory"
         }
       }
     },
     "OffloadPolicies" : {
       "type" : "object",
       "properties" : {
-        "managedLedgerOffloadThresholdInBytes" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "managedLedgerOffloadDeletionLagInMillis" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "managedLedgerOffloadDriver" : {
+        "s3ManagedLedgerOffloadBucket" : {
           "type" : "string"
         },
-        "offloadersDirectory" : {
+        "s3ManagedLedgerOffloadRole" : {
           "type" : "string"
         },
-        "managedLedgerOffloadMaxThreads" : {
-          "type" : "integer",
-          "format" : "int32"
+        "gcsManagedLedgerOffloadRegion" : {
+          "type" : "string"
         },
-        "managedLedgerOffloadPrefetchRounds" : {
-          "type" : "integer",
-          "format" : "int32"
+        "gcsManagedLedgerOffloadBucket" : {
+          "type" : "string"
         },
         "managedLedgerOffloadedReadPriority" : {
           "type" : "string",
           "enum" : [ "BOOKKEEPER_FIRST", "TIERED_STORAGE_FIRST" ]
         },
-        "s3ManagedLedgerOffloadRegion" : {
-          "type" : "string"
-        },
-        "s3ManagedLedgerOffloadBucket" : {
-          "type" : "string"
-        },
         "s3ManagedLedgerOffloadServiceEndpoint" : {
           "type" : "string"
         },
@@ -22372,30 +22356,38 @@
         "s3ManagedLedgerOffloadCredentialSecret" : {
           "type" : "string"
         },
-        "s3ManagedLedgerOffloadRole" : {
-          "type" : "string"
-        },
         "s3ManagedLedgerOffloadRoleSessionName" : {
           "type" : "string"
         },
-        "gcsManagedLedgerOffloadRegion" : {
-          "type" : "string"
+        "gcsManagedLedgerOffloadMaxBlockSizeInBytes" : {
+          "type" : "integer",
+          "format" : "int32"
         },
-        "gcsManagedLedgerOffloadBucket" : {
+        "gcsManagedLedgerOffloadReadBufferSizeInBytes" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "fileSystemProfilePath" : {
           "type" : "string"
         },
-        "gcsManagedLedgerOffloadMaxBlockSizeInBytes" : {
+        "managedLedgerOffloadPrefetchRounds" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "gcsManagedLedgerOffloadReadBufferSizeInBytes" : {
+        "managedLedgerOffloadDriver" : {
+          "type" : "string"
+        },
+        "offloadersDirectory" : {
+          "type" : "string"
+        },
+        "managedLedgerOffloadMaxThreads" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "gcsManagedLedgerOffloadServiceAccountKeyFile" : {
+        "s3ManagedLedgerOffloadRegion" : {
           "type" : "string"
         },
-        "fileSystemProfilePath" : {
+        "gcsManagedLedgerOffloadServiceAccountKeyFile" : {
           "type" : "string"
         },
         "fileSystemURI" : {
@@ -22417,6 +22409,14 @@
         "managedLedgerOffloadReadBufferSizeInBytes" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "managedLedgerOffloadThresholdInBytes" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "managedLedgerOffloadDeletionLagInMillis" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -23132,14 +23132,14 @@
     "PropertyName" : {
       "type" : "object",
       "properties" : {
+        "namespace" : {
+          "type" : "string"
+        },
         "empty" : {
           "type" : "boolean"
         },
         "simpleName" : {
           "type" : "string"
-        },
-        "namespace" : {
-          "type" : "string"
         }
       }
     },
@@ -23149,10 +23149,10 @@
     "PublicKey" : {
       "type" : "object",
       "properties" : {
-        "algorithm" : {
+        "format" : {
           "type" : "string"
         },
-        "format" : {
+        "algorithm" : {
           "type" : "string"
         },
         "encoded" : {
@@ -23180,19 +23180,13 @@
     "PublisherStats" : {
       "type" : "object",
       "properties" : {
-        "address" : {
-          "type" : "string"
-        },
         "metadata" : {
           "type" : "object",
           "additionalProperties" : {
             "type" : "string"
           }
         },
-        "producerName" : {
-          "type" : "string"
-        },
-        "msgRateIn" : {
+        "averageMsgSize" : {
           "type" : "number",
           "format" : "double"
         },
@@ -23200,13 +23194,10 @@
           "type" : "number",
           "format" : "double"
         },
-        "averageMsgSize" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "connectedSince" : {
-          "type" : "string"
-        },
         "accessMode" : {
           "type" : "string",
           "enum" : [ "Shared", "Exclusive", "WaitForExclusive" ]
@@ -23215,12 +23206,21 @@
           "type" : "number",
           "format" : "double"
         },
-        "clientVersion" : {
-          "type" : "string"
-        },
         "producerId" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "connectedSince" : {
+          "type" : "string"
+        },
+        "clientVersion" : {
+          "type" : "string"
+        },
+        "producerName" : {
+          "type" : "string"
+        },
+        "address" : {
+          "type" : "string"
         }
       }
     },
@@ -23238,11 +23238,15 @@
         "connected" : {
           "type" : "boolean"
         },
-        "msgRateIn" : {
+        "msgThroughputIn" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputIn" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
@@ -23250,19 +23254,15 @@
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
+        "msgRateExpired" : {
           "type" : "number",
           "format" : "double"
         },
-        "replicationDelayInSeconds" : {
+        "replicationBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgRateExpired" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "replicationBacklog" : {
+        "replicationDelayInSeconds" : {
           "type" : "integer",
           "format" : "int64"
         },
@@ -23371,11 +23371,11 @@
     "ResourceUnit" : {
       "type" : "object",
       "properties" : {
-        "availableResource" : {
-          "$ref" : "#/definitions/ResourceDescription"
-        },
         "resourceId" : {
           "type" : "string"
+        },
+        "availableResource" : {
+          "$ref" : "#/definitions/ResourceDescription"
         }
       }
     },
@@ -23428,17 +23428,6 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -23448,8 +23437,16 @@
         "defaultPrettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
-        "attributes" : {
-          "$ref" : "#/definitions/ContextAttributes"
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         },
         "rootName" : {
           "type" : "string"
@@ -23463,15 +23460,21 @@
         "defaultVisibilityChecker" : {
           "$ref" : "#/definitions/VisibilityCheckerObject"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
+        "attributes" : {
+          "$ref" : "#/definitions/ContextAttributes"
         },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "annotationProcessingEnabled" : {
+          "type" : "boolean"
+        },
         "handlerInstantiator" : {
           "$ref" : "#/definitions/HandlerInstantiator"
         },
@@ -23484,9 +23487,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "annotationProcessingEnabled" : {
-          "type" : "boolean"
-        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -23498,32 +23498,32 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
+        "filterProvider" : {
+          "$ref" : "#/definitions/FilterProvider"
         },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
+        "defaultNullKeySerializer" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         },
         "defaultNullValueSerializer" : {
           "$ref" : "#/definitions/JsonSerializerObject"
         },
-        "filterProvider" : {
-          "$ref" : "#/definitions/FilterProvider"
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
         },
-        "defaultNullKeySerializer" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
         }
       }
     },
@@ -23617,23 +23617,12 @@
     "SubscriptionStats" : {
       "type" : "object",
       "properties" : {
-        "type" : {
-          "type" : "string"
-        },
         "replicated" : {
           "type" : "boolean"
         },
         "durable" : {
           "type" : "boolean"
         },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "bytesOutCounter" : {
           "type" : "integer",
           "format" : "int64"
@@ -23646,46 +23635,25 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "nonContiguousDeletedMessagesRanges" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "consumers" : {
-          "type" : "array",
-          "items" : {
-            "$ref" : "#/definitions/ConsumerStats"
-          }
-        },
-        "allowOutOfOrderDelivery" : {
-          "type" : "boolean"
-        },
-        "keySharedMode" : {
-          "type" : "string"
-        },
-        "subscriptionProperties" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
-          }
-        },
-        "consumersAfterMarkDeletePosition" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
-          }
+        "msgThroughputOut" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "msgRateRedeliver" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgBacklog" : {
+        "msgDelayed" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "unackedMessages" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "activeConsumerName" : {
+          "type" : "string"
+        },
         "totalMsgExpired" : {
           "type" : "integer",
           "format" : "int64"
@@ -23710,31 +23678,63 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "msgBacklogNoDelayed" : {
+        "allowOutOfOrderDelivery" : {
+          "type" : "boolean"
+        },
+        "keySharedMode" : {
+          "type" : "string"
+        },
+        "consumersAfterMarkDeletePosition" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "subscriptionProperties" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "nonContiguousDeletedMessagesRanges" : {
           "type" : "integer",
-          "format" : "int64"
+          "format" : "int32"
         },
-        "chunkedMessageRate" : {
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "blockedSubscriptionOnUnackedMsgs" : {
-          "type" : "boolean"
+        "chunkedMessageRate" : {
+          "type" : "integer",
+          "format" : "int32"
         },
-        "msgDelayed" : {
+        "msgBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "unackedMessages" : {
+        "msgRateRedeliver" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgBacklogNoDelayed" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "activeConsumerName" : {
-          "type" : "string"
+        "blockedSubscriptionOnUnackedMsgs" : {
+          "type" : "boolean"
         },
         "msgRateExpired" : {
           "type" : "number",
           "format" : "double"
+        },
+        "consumers" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ConsumerStats"
+          }
+        },
+        "type" : {
+          "type" : "string"
         }
       }
     },
@@ -23797,10 +23797,10 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
+        "id" : {
           "type" : "string"
         },
-        "id" : {
+        "displayName" : {
           "type" : "string"
         },
         "dstsavings" : {
@@ -23816,28 +23816,6 @@
     "TopicStats" : {
       "type" : "object",
       "properties" : {
-        "subscriptions" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "$ref" : "#/definitions/SubscriptionStats"
-          }
-        },
-        "msgRateIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgThroughputIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "bytesInCounter" : {
           "type" : "integer",
           "format" : "int64"
@@ -23889,10 +23867,36 @@
             "$ref" : "#/definitions/ReplicatorStats"
           }
         },
+        "msgThroughputIn" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgThroughputOut" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgRateIn" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgRateOut" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "subscriptions" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "$ref" : "#/definitions/SubscriptionStats"
+          }
+        },
         "nonContiguousDeletedMessagesRanges" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "deduplicationStatus" : {
           "type" : "string"
         },
@@ -23900,10 +23904,6 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "compaction" : {
           "$ref" : "#/definitions/CompactionStats"
         }
@@ -24311,14 +24311,14 @@
         "sinks" : {
           "$ref" : "#/definitions/SinksWorkerService"
         },
+        "workerConfig" : {
+          "$ref" : "#/definitions/WorkerConfig"
+        },
         "functionsV2" : {
           "$ref" : "#/definitions/FunctionsV2WorkerService"
         },
         "workers" : {
           "$ref" : "#/definitions/WorkersWorkerService"
-        },
-        "workerConfig" : {
-          "$ref" : "#/definitions/WorkerConfig"
         }
       }
     },
@@ -24355,12 +24355,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
         "version" : {
           "type" : "integer",
           "format" : "int32"
@@ -24375,6 +24369,12 @@
             "format" : "byte"
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json b/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json
index 60e8577..9d3dc6a 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json
@@ -985,9 +985,6 @@
     "Base64Variant" : {
       "type" : "object",
       "properties" : {
-        "name" : {
-          "type" : "string"
-        },
         "paddingChar" : {
           "type" : "string"
         },
@@ -998,6 +995,9 @@
         "maxLineLength" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "name" : {
+          "type" : "string"
         }
       }
     },
@@ -1183,36 +1183,33 @@
         "numberFormat" : {
           "$ref" : "#/definitions/NumberFormat"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "lenient" : {
           "type" : "boolean"
+        },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         }
       }
     },
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
+        "problemHandlers" : {
+          "$ref" : "#/definitions/LinkedNodeDeserializationProblemHandler"
+        },
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "deserializationFeatures" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "problemHandlers" : {
-          "$ref" : "#/definitions/LinkedNodeDeserializationProblemHandler"
-        },
-        "attributes" : {
-          "$ref" : "#/definitions/ContextAttributes"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -1225,15 +1222,21 @@
         "defaultVisibilityChecker" : {
           "$ref" : "#/definitions/VisibilityCheckerObject"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
+        "attributes" : {
+          "$ref" : "#/definitions/ContextAttributes"
         },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "annotationProcessingEnabled" : {
+          "type" : "boolean"
+        },
         "handlerInstantiator" : {
           "$ref" : "#/definitions/HandlerInstantiator"
         },
@@ -1246,9 +1249,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "annotationProcessingEnabled" : {
-          "type" : "boolean"
-        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -1257,14 +1257,11 @@
     "DeserializationContext" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
-        "factory" : {
-          "$ref" : "#/definitions/DeserializerFactory"
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         },
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
@@ -1275,12 +1272,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
+        "arrayBuilders" : {
+          "$ref" : "#/definitions/ArrayBuilders"
         },
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "contextualType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -1291,8 +1291,8 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "arrayBuilders" : {
-          "$ref" : "#/definitions/ArrayBuilders"
+        "factory" : {
+          "$ref" : "#/definitions/DeserializerFactory"
         }
       }
     },
@@ -1538,13 +1538,6 @@
     "FunctionInstanceStatsData" : {
       "type" : "object",
       "properties" : {
-        "oneMin" : {
-          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
-        },
-        "lastInvocation" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "userMetrics" : {
           "type" : "object",
           "additionalProperties" : {
@@ -1552,6 +1545,13 @@
             "format" : "double"
           }
         },
+        "oneMin" : {
+          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
+        },
+        "lastInvocation" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "receivedTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -1845,27 +1845,6 @@
         "contentType" : {
           "$ref" : "#/definitions/JavaType"
         },
-        "interface" : {
-          "type" : "boolean"
-        },
-        "primitive" : {
-          "type" : "boolean"
-        },
-        "interfaces" : {
-          "type" : "array",
-          "items" : {
-            "$ref" : "#/definitions/JavaType"
-          }
-        },
-        "genericSignature" : {
-          "type" : "string"
-        },
-        "final" : {
-          "type" : "boolean"
-        },
-        "abstract" : {
-          "type" : "boolean"
-        },
         "bindings" : {
           "$ref" : "#/definitions/TypeBindings"
         },
@@ -1896,6 +1875,9 @@
         "typeHandler" : {
           "type" : "object"
         },
+        "collectionLikeType" : {
+          "type" : "boolean"
+        },
         "referencedType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -1911,10 +1893,28 @@
         "erasedSignature" : {
           "type" : "string"
         },
-        "collectionLikeType" : {
+        "mapLikeType" : {
           "type" : "boolean"
         },
-        "mapLikeType" : {
+        "interface" : {
+          "type" : "boolean"
+        },
+        "primitive" : {
+          "type" : "boolean"
+        },
+        "interfaces" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/JavaType"
+          }
+        },
+        "genericSignature" : {
+          "type" : "string"
+        },
+        "final" : {
+          "type" : "boolean"
+        },
+        "abstract" : {
           "type" : "boolean"
         },
         "typeName" : {
@@ -1928,9 +1928,6 @@
     "JsonFactory" : {
       "type" : "object",
       "properties" : {
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -1940,11 +1937,14 @@
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -1963,12 +1963,6 @@
         "prettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "currentValue" : {
-          "type" : "object"
-        },
         "featureMask" : {
           "type" : "integer",
           "format" : "int32"
@@ -1977,10 +1971,16 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currentValue" : {
+          "type" : "object"
+        },
         "highestEscapedChar" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
+        },
         "outputTarget" : {
           "type" : "object"
         },
@@ -1996,10 +1996,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -2014,6 +2010,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -2036,13 +2036,6 @@
             "type" : "string"
           }
         },
-        "booleanValue" : {
-          "type" : "boolean"
-        },
-        "byteValue" : {
-          "type" : "string",
-          "format" : "byte"
-        },
         "doubleValue" : {
           "type" : "number",
           "format" : "double"
@@ -2059,6 +2052,13 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "booleanValue" : {
+          "type" : "boolean"
+        },
+        "byteValue" : {
+          "type" : "string",
+          "format" : "byte"
+        },
         "closed" : {
           "type" : "boolean"
         },
@@ -2072,6 +2072,9 @@
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -2082,8 +2085,13 @@
         "currentName" : {
           "type" : "string"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         },
         "currentTokenId" : {
           "type" : "integer",
@@ -2158,14 +2166,6 @@
         },
         "currentValue" : {
           "type" : "object"
-        },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
         }
       }
     },
@@ -2191,9 +2191,6 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "parent" : {
-          "$ref" : "#/definitions/JsonStreamContext"
-        },
         "typeDesc" : {
           "type" : "string"
         },
@@ -2201,15 +2198,18 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "entryCount" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "currentName" : {
           "type" : "string"
         },
         "currentValue" : {
           "type" : "object"
+        },
+        "entryCount" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "parent" : {
+          "$ref" : "#/definitions/JsonStreamContext"
         }
       }
     },
@@ -2222,9 +2222,6 @@
     "Locale" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "script" : {
           "type" : "string"
         },
@@ -2273,6 +2270,9 @@
         "displayVariant" : {
           "type" : "string"
         },
+        "displayName" : {
+          "type" : "string"
+        },
         "language" : {
           "type" : "string"
         }
@@ -2284,29 +2284,43 @@
     "Message" : {
       "type" : "object",
       "properties" : {
-        "value" : {
-          "type" : "object"
-        },
-        "key" : {
-          "type" : "string"
+        "replicated" : {
+          "type" : "boolean"
         },
-        "properties" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
+        "data" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
           }
         },
-        "index" : {
-          "type" : "integer",
-          "format" : "int64"
+        "topicName" : {
+          "type" : "string"
         },
-        "data" : {
+        "messageId" : {
+          "$ref" : "#/definitions/MessageId"
+        },
+        "keyBytes" : {
           "type" : "array",
           "items" : {
             "type" : "string",
             "format" : "byte"
           }
         },
+        "encryptionCtx" : {
+          "$ref" : "#/definitions/EncryptionContext"
+        },
+        "redeliveryCount" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "readerSchema" : {
+          "$ref" : "#/definitions/SchemaObject"
+        },
+        "brokerPublishTime" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "publishTime" : {
           "type" : "integer",
           "format" : "int64"
@@ -2339,35 +2353,21 @@
             "format" : "byte"
           }
         },
-        "replicated" : {
-          "type" : "boolean"
+        "value" : {
+          "type" : "object"
         },
-        "topicName" : {
+        "key" : {
           "type" : "string"
         },
-        "brokerPublishTime" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "messageId" : {
-          "$ref" : "#/definitions/MessageId"
-        },
-        "keyBytes" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
+        "properties" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
           }
         },
-        "encryptionCtx" : {
-          "$ref" : "#/definitions/EncryptionContext"
-        },
-        "redeliveryCount" : {
+        "index" : {
           "type" : "integer",
-          "format" : "int32"
-        },
-        "readerSchema" : {
-          "$ref" : "#/definitions/SchemaObject"
+          "format" : "int64"
         }
       }
     },
@@ -2467,10 +2467,10 @@
     "ObjectCodec" : {
       "type" : "object",
       "properties" : {
-        "factory" : {
+        "jsonFactory" : {
           "$ref" : "#/definitions/JsonFactory"
         },
-        "jsonFactory" : {
+        "factory" : {
           "$ref" : "#/definitions/JsonFactory"
         }
       }
@@ -2478,9 +2478,6 @@
     "ObjectMapper" : {
       "type" : "object",
       "properties" : {
-        "factory" : {
-          "$ref" : "#/definitions/JsonFactory"
-        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
@@ -2522,6 +2519,9 @@
         },
         "injectableValues" : {
           "$ref" : "#/definitions/InjectableValues"
+        },
+        "factory" : {
+          "$ref" : "#/definitions/JsonFactory"
         }
       }
     },
@@ -2605,14 +2605,14 @@
     "PropertyName" : {
       "type" : "object",
       "properties" : {
+        "namespace" : {
+          "type" : "string"
+        },
         "empty" : {
           "type" : "boolean"
         },
         "simpleName" : {
           "type" : "string"
-        },
-        "namespace" : {
-          "type" : "string"
         }
       }
     },
@@ -2622,10 +2622,10 @@
     "PublicKey" : {
       "type" : "object",
       "properties" : {
-        "algorithm" : {
+        "format" : {
           "type" : "string"
         },
-        "format" : {
+        "algorithm" : {
           "type" : "string"
         },
         "encoded" : {
@@ -2657,17 +2657,27 @@
     "Schema" : {
       "type" : "object",
       "properties" : {
-        "schemaInfo" : {
-          "$ref" : "#/definitions/SchemaInfo"
-        },
         "nativeSchema" : {
           "type" : "object"
+        },
+        "schemaInfo" : {
+          "$ref" : "#/definitions/SchemaInfo"
         }
       }
     },
     "SchemaInfo" : {
       "type" : "object",
       "properties" : {
+        "schemaDefinition" : {
+          "type" : "string"
+        },
+        "schema" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
         "name" : {
           "type" : "string"
         },
@@ -2680,44 +2690,23 @@
         "type" : {
           "type" : "string",
           "enum" : [ "NONE", "STRING", "JSON", "PROTOBUF", "AVRO", "BOOLEAN", "INT8", "INT16", "INT32", "INT64", "FLOAT", "DOUBLE", "DATE", "TIME", "TIMESTAMP", "KEY_VALUE", "INSTANT", "LOCAL_DATE", "LOCAL_TIME", "LOCAL_DATE_TIME", "PROTOBUF_NATIVE", "BYTES", "AUTO", "AUTO_CONSUME", "AUTO_PUBLISH" ]
-        },
-        "schemaDefinition" : {
-          "type" : "string"
-        },
-        "schema" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
         }
       }
     },
     "SchemaObject" : {
       "type" : "object",
       "properties" : {
-        "schemaInfo" : {
-          "$ref" : "#/definitions/SchemaInfo"
-        },
         "nativeSchema" : {
           "type" : "object"
+        },
+        "schemaInfo" : {
+          "$ref" : "#/definitions/SchemaInfo"
         }
       }
     },
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -2727,8 +2716,16 @@
         "defaultPrettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
-        "attributes" : {
-          "$ref" : "#/definitions/ContextAttributes"
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         },
         "rootName" : {
           "type" : "string"
@@ -2742,15 +2739,21 @@
         "defaultVisibilityChecker" : {
           "$ref" : "#/definitions/VisibilityCheckerObject"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
+        "attributes" : {
+          "$ref" : "#/definitions/ContextAttributes"
         },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "annotationProcessingEnabled" : {
+          "type" : "boolean"
+        },
         "handlerInstantiator" : {
           "$ref" : "#/definitions/HandlerInstantiator"
         },
@@ -2763,9 +2766,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "annotationProcessingEnabled" : {
-          "type" : "boolean"
-        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -2777,32 +2777,32 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
+        "filterProvider" : {
+          "$ref" : "#/definitions/FilterProvider"
         },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
+        "defaultNullKeySerializer" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         },
         "defaultNullValueSerializer" : {
           "$ref" : "#/definitions/JsonSerializerObject"
         },
-        "filterProvider" : {
-          "$ref" : "#/definitions/FilterProvider"
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
         },
-        "defaultNullKeySerializer" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
         }
       }
     },
@@ -2818,10 +2818,10 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
+        "id" : {
           "type" : "string"
         },
-        "id" : {
+        "displayName" : {
           "type" : "string"
         },
         "dstsavings" : {
@@ -2950,12 +2950,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
         "version" : {
           "type" : "integer",
           "format" : "int32"
@@ -2970,6 +2964,12 @@
             "format" : "byte"
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json b/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json
index d4fdc2c..0ca9318 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json
@@ -434,9 +434,6 @@
     "Base64Variant" : {
       "type" : "object",
       "properties" : {
-        "name" : {
-          "type" : "string"
-        },
         "paddingChar" : {
           "type" : "string"
         },
@@ -447,6 +444,9 @@
         "maxLineLength" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "name" : {
+          "type" : "string"
         }
       }
     },
@@ -568,36 +568,33 @@
         "numberFormat" : {
           "$ref" : "#/definitions/NumberFormat"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "lenient" : {
           "type" : "boolean"
+        },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         }
       }
     },
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
+        "problemHandlers" : {
+          "$ref" : "#/definitions/LinkedNodeDeserializationProblemHandler"
+        },
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "deserializationFeatures" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "problemHandlers" : {
-          "$ref" : "#/definitions/LinkedNodeDeserializationProblemHandler"
-        },
-        "attributes" : {
-          "$ref" : "#/definitions/ContextAttributes"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -610,15 +607,21 @@
         "defaultVisibilityChecker" : {
           "$ref" : "#/definitions/VisibilityCheckerObject"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
+        "attributes" : {
+          "$ref" : "#/definitions/ContextAttributes"
         },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "annotationProcessingEnabled" : {
+          "type" : "boolean"
+        },
         "handlerInstantiator" : {
           "$ref" : "#/definitions/HandlerInstantiator"
         },
@@ -631,9 +634,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "annotationProcessingEnabled" : {
-          "type" : "boolean"
-        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -642,14 +642,11 @@
     "DeserializationContext" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
-        "factory" : {
-          "$ref" : "#/definitions/DeserializerFactory"
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         },
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
@@ -660,12 +657,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
+        "arrayBuilders" : {
+          "$ref" : "#/definitions/ArrayBuilders"
         },
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "contextualType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -676,8 +676,8 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "arrayBuilders" : {
-          "$ref" : "#/definitions/ArrayBuilders"
+        "factory" : {
+          "$ref" : "#/definitions/DeserializerFactory"
         }
       }
     },
@@ -719,27 +719,6 @@
         "contentType" : {
           "$ref" : "#/definitions/JavaType"
         },
-        "interface" : {
-          "type" : "boolean"
-        },
-        "primitive" : {
-          "type" : "boolean"
-        },
-        "interfaces" : {
-          "type" : "array",
-          "items" : {
-            "$ref" : "#/definitions/JavaType"
-          }
-        },
-        "genericSignature" : {
-          "type" : "string"
-        },
-        "final" : {
-          "type" : "boolean"
-        },
-        "abstract" : {
-          "type" : "boolean"
-        },
         "bindings" : {
           "$ref" : "#/definitions/TypeBindings"
         },
@@ -770,6 +749,9 @@
         "typeHandler" : {
           "type" : "object"
         },
+        "collectionLikeType" : {
+          "type" : "boolean"
+        },
         "referencedType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -785,10 +767,28 @@
         "erasedSignature" : {
           "type" : "string"
         },
-        "collectionLikeType" : {
+        "mapLikeType" : {
           "type" : "boolean"
         },
-        "mapLikeType" : {
+        "interface" : {
+          "type" : "boolean"
+        },
+        "primitive" : {
+          "type" : "boolean"
+        },
+        "interfaces" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/JavaType"
+          }
+        },
+        "genericSignature" : {
+          "type" : "string"
+        },
+        "final" : {
+          "type" : "boolean"
+        },
+        "abstract" : {
           "type" : "boolean"
         },
         "typeName" : {
@@ -802,9 +802,6 @@
     "JsonFactory" : {
       "type" : "object",
       "properties" : {
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -814,11 +811,14 @@
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -837,12 +837,6 @@
         "prettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "currentValue" : {
-          "type" : "object"
-        },
         "featureMask" : {
           "type" : "integer",
           "format" : "int32"
@@ -851,10 +845,16 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currentValue" : {
+          "type" : "object"
+        },
         "highestEscapedChar" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
+        },
         "outputTarget" : {
           "type" : "object"
         },
@@ -870,10 +870,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -888,6 +884,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -910,13 +910,6 @@
             "type" : "string"
           }
         },
-        "booleanValue" : {
-          "type" : "boolean"
-        },
-        "byteValue" : {
-          "type" : "string",
-          "format" : "byte"
-        },
         "doubleValue" : {
           "type" : "number",
           "format" : "double"
@@ -933,6 +926,13 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "booleanValue" : {
+          "type" : "boolean"
+        },
+        "byteValue" : {
+          "type" : "string",
+          "format" : "byte"
+        },
         "closed" : {
           "type" : "boolean"
         },
@@ -946,6 +946,9 @@
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -956,8 +959,13 @@
         "currentName" : {
           "type" : "string"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         },
         "currentTokenId" : {
           "type" : "integer",
@@ -1032,14 +1040,6 @@
         },
         "currentValue" : {
           "type" : "object"
-        },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
         }
       }
     },
@@ -1065,9 +1065,6 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "parent" : {
-          "$ref" : "#/definitions/JsonStreamContext"
-        },
         "typeDesc" : {
           "type" : "string"
         },
@@ -1075,15 +1072,18 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "entryCount" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "currentName" : {
           "type" : "string"
         },
         "currentValue" : {
           "type" : "object"
+        },
+        "entryCount" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "parent" : {
+          "$ref" : "#/definitions/JsonStreamContext"
         }
       }
     },
@@ -1096,9 +1096,6 @@
     "Locale" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "script" : {
           "type" : "string"
         },
@@ -1147,6 +1144,9 @@
         "displayVariant" : {
           "type" : "string"
         },
+        "displayName" : {
+          "type" : "string"
+        },
         "language" : {
           "type" : "string"
         }
@@ -1248,10 +1248,10 @@
     "ObjectCodec" : {
       "type" : "object",
       "properties" : {
-        "factory" : {
+        "jsonFactory" : {
           "$ref" : "#/definitions/JsonFactory"
         },
-        "jsonFactory" : {
+        "factory" : {
           "$ref" : "#/definitions/JsonFactory"
         }
       }
@@ -1259,9 +1259,6 @@
     "ObjectMapper" : {
       "type" : "object",
       "properties" : {
-        "factory" : {
-          "$ref" : "#/definitions/JsonFactory"
-        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
@@ -1303,6 +1300,9 @@
         },
         "injectableValues" : {
           "$ref" : "#/definitions/InjectableValues"
+        },
+        "factory" : {
+          "$ref" : "#/definitions/JsonFactory"
         }
       }
     },
@@ -1389,14 +1389,14 @@
     "PropertyName" : {
       "type" : "object",
       "properties" : {
+        "namespace" : {
+          "type" : "string"
+        },
         "empty" : {
           "type" : "boolean"
         },
         "simpleName" : {
           "type" : "string"
-        },
-        "namespace" : {
-          "type" : "string"
         }
       }
     },
@@ -1406,10 +1406,10 @@
     "PublicKey" : {
       "type" : "object",
       "properties" : {
-        "algorithm" : {
+        "format" : {
           "type" : "string"
         },
-        "format" : {
+        "algorithm" : {
           "type" : "string"
         },
         "encoded" : {
@@ -1424,17 +1424,6 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1444,8 +1433,16 @@
         "defaultPrettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
-        "attributes" : {
-          "$ref" : "#/definitions/ContextAttributes"
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         },
         "rootName" : {
           "type" : "string"
@@ -1459,15 +1456,21 @@
         "defaultVisibilityChecker" : {
           "$ref" : "#/definitions/VisibilityCheckerObject"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
+        "attributes" : {
+          "$ref" : "#/definitions/ContextAttributes"
         },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "annotationProcessingEnabled" : {
+          "type" : "boolean"
+        },
         "handlerInstantiator" : {
           "$ref" : "#/definitions/HandlerInstantiator"
         },
@@ -1480,9 +1483,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "annotationProcessingEnabled" : {
-          "type" : "boolean"
-        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -1494,32 +1494,32 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
+        "filterProvider" : {
+          "$ref" : "#/definitions/FilterProvider"
         },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
+        "defaultNullKeySerializer" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         },
         "defaultNullValueSerializer" : {
           "$ref" : "#/definitions/JsonSerializerObject"
         },
-        "filterProvider" : {
-          "$ref" : "#/definitions/FilterProvider"
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
         },
-        "defaultNullKeySerializer" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
         }
       }
     },
@@ -1538,10 +1538,10 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
+        "id" : {
           "type" : "string"
         },
-        "id" : {
+        "displayName" : {
           "type" : "string"
         },
         "dstsavings" : {
@@ -1622,12 +1622,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
         "version" : {
           "type" : "integer",
           "format" : "int32"
@@ -1642,6 +1636,12 @@
             "format" : "byte"
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggersink.json b/content/swagger/2.10.0-SNAPSHOT/swaggersink.json
index fd1c5d5..146dea1 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggersink.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggersink.json
@@ -824,9 +824,6 @@
     "Base64Variant" : {
       "type" : "object",
       "properties" : {
-        "name" : {
-          "type" : "string"
-        },
         "paddingChar" : {
           "type" : "string"
         },
@@ -837,6 +834,9 @@
         "maxLineLength" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "name" : {
+          "type" : "string"
         }
       }
     },
@@ -1062,36 +1062,33 @@
         "numberFormat" : {
           "$ref" : "#/definitions/NumberFormat"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "lenient" : {
           "type" : "boolean"
+        },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         }
       }
     },
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
+        "problemHandlers" : {
+          "$ref" : "#/definitions/LinkedNodeDeserializationProblemHandler"
+        },
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "deserializationFeatures" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "problemHandlers" : {
-          "$ref" : "#/definitions/LinkedNodeDeserializationProblemHandler"
-        },
-        "attributes" : {
-          "$ref" : "#/definitions/ContextAttributes"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -1104,15 +1101,21 @@
         "defaultVisibilityChecker" : {
           "$ref" : "#/definitions/VisibilityCheckerObject"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
+        "attributes" : {
+          "$ref" : "#/definitions/ContextAttributes"
         },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "annotationProcessingEnabled" : {
+          "type" : "boolean"
+        },
         "handlerInstantiator" : {
           "$ref" : "#/definitions/HandlerInstantiator"
         },
@@ -1125,9 +1128,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "annotationProcessingEnabled" : {
-          "type" : "boolean"
-        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -1136,14 +1136,11 @@
     "DeserializationContext" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
-        "factory" : {
-          "$ref" : "#/definitions/DeserializerFactory"
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         },
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
@@ -1154,12 +1151,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
+        "arrayBuilders" : {
+          "$ref" : "#/definitions/ArrayBuilders"
         },
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "contextualType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -1170,8 +1170,8 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "arrayBuilders" : {
-          "$ref" : "#/definitions/ArrayBuilders"
+        "factory" : {
+          "$ref" : "#/definitions/DeserializerFactory"
         }
       }
     },
@@ -1225,27 +1225,6 @@
         "contentType" : {
           "$ref" : "#/definitions/JavaType"
         },
-        "interface" : {
-          "type" : "boolean"
-        },
-        "primitive" : {
-          "type" : "boolean"
-        },
-        "interfaces" : {
-          "type" : "array",
-          "items" : {
-            "$ref" : "#/definitions/JavaType"
-          }
-        },
-        "genericSignature" : {
-          "type" : "string"
-        },
-        "final" : {
-          "type" : "boolean"
-        },
-        "abstract" : {
-          "type" : "boolean"
-        },
         "bindings" : {
           "$ref" : "#/definitions/TypeBindings"
         },
@@ -1276,6 +1255,9 @@
         "typeHandler" : {
           "type" : "object"
         },
+        "collectionLikeType" : {
+          "type" : "boolean"
+        },
         "referencedType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -1291,10 +1273,28 @@
         "erasedSignature" : {
           "type" : "string"
         },
-        "collectionLikeType" : {
+        "mapLikeType" : {
           "type" : "boolean"
         },
-        "mapLikeType" : {
+        "interface" : {
+          "type" : "boolean"
+        },
+        "primitive" : {
+          "type" : "boolean"
+        },
+        "interfaces" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/JavaType"
+          }
+        },
+        "genericSignature" : {
+          "type" : "string"
+        },
+        "final" : {
+          "type" : "boolean"
+        },
+        "abstract" : {
           "type" : "boolean"
         },
         "typeName" : {
@@ -1308,9 +1308,6 @@
     "JsonFactory" : {
       "type" : "object",
       "properties" : {
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -1320,11 +1317,14 @@
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -1343,12 +1343,6 @@
         "prettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "currentValue" : {
-          "type" : "object"
-        },
         "featureMask" : {
           "type" : "integer",
           "format" : "int32"
@@ -1357,10 +1351,16 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currentValue" : {
+          "type" : "object"
+        },
         "highestEscapedChar" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
+        },
         "outputTarget" : {
           "type" : "object"
         },
@@ -1376,10 +1376,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -1394,6 +1390,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -1416,13 +1416,6 @@
             "type" : "string"
           }
         },
-        "booleanValue" : {
-          "type" : "boolean"
-        },
-        "byteValue" : {
-          "type" : "string",
-          "format" : "byte"
-        },
         "doubleValue" : {
           "type" : "number",
           "format" : "double"
@@ -1439,6 +1432,13 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "booleanValue" : {
+          "type" : "boolean"
+        },
+        "byteValue" : {
+          "type" : "string",
+          "format" : "byte"
+        },
         "closed" : {
           "type" : "boolean"
         },
@@ -1452,6 +1452,9 @@
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -1462,8 +1465,13 @@
         "currentName" : {
           "type" : "string"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         },
         "currentTokenId" : {
           "type" : "integer",
@@ -1538,14 +1546,6 @@
         },
         "currentValue" : {
           "type" : "object"
-        },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
         }
       }
     },
@@ -1571,9 +1571,6 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "parent" : {
-          "$ref" : "#/definitions/JsonStreamContext"
-        },
         "typeDesc" : {
           "type" : "string"
         },
@@ -1581,15 +1578,18 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "entryCount" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "currentName" : {
           "type" : "string"
         },
         "currentValue" : {
           "type" : "object"
+        },
+        "entryCount" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "parent" : {
+          "$ref" : "#/definitions/JsonStreamContext"
         }
       }
     },
@@ -1602,9 +1602,6 @@
     "Locale" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "script" : {
           "type" : "string"
         },
@@ -1653,6 +1650,9 @@
         "displayVariant" : {
           "type" : "string"
         },
+        "displayName" : {
+          "type" : "string"
+        },
         "language" : {
           "type" : "string"
         }
@@ -1754,10 +1754,10 @@
     "ObjectCodec" : {
       "type" : "object",
       "properties" : {
-        "factory" : {
+        "jsonFactory" : {
           "$ref" : "#/definitions/JsonFactory"
         },
-        "jsonFactory" : {
+        "factory" : {
           "$ref" : "#/definitions/JsonFactory"
         }
       }
@@ -1765,9 +1765,6 @@
     "ObjectMapper" : {
       "type" : "object",
       "properties" : {
-        "factory" : {
-          "$ref" : "#/definitions/JsonFactory"
-        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
@@ -1809,6 +1806,9 @@
         },
         "injectableValues" : {
           "$ref" : "#/definitions/InjectableValues"
+        },
+        "factory" : {
+          "$ref" : "#/definitions/JsonFactory"
         }
       }
     },
@@ -1870,14 +1870,14 @@
     "PropertyName" : {
       "type" : "object",
       "properties" : {
+        "namespace" : {
+          "type" : "string"
+        },
         "empty" : {
           "type" : "boolean"
         },
         "simpleName" : {
           "type" : "string"
-        },
-        "namespace" : {
-          "type" : "string"
         }
       }
     },
@@ -1887,10 +1887,10 @@
     "PublicKey" : {
       "type" : "object",
       "properties" : {
-        "algorithm" : {
+        "format" : {
           "type" : "string"
         },
-        "format" : {
+        "algorithm" : {
           "type" : "string"
         },
         "encoded" : {
@@ -1922,17 +1922,6 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1942,8 +1931,16 @@
         "defaultPrettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
-        "attributes" : {
-          "$ref" : "#/definitions/ContextAttributes"
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         },
         "rootName" : {
           "type" : "string"
@@ -1957,15 +1954,21 @@
         "defaultVisibilityChecker" : {
           "$ref" : "#/definitions/VisibilityCheckerObject"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
+        "attributes" : {
+          "$ref" : "#/definitions/ContextAttributes"
         },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "annotationProcessingEnabled" : {
+          "type" : "boolean"
+        },
         "handlerInstantiator" : {
           "$ref" : "#/definitions/HandlerInstantiator"
         },
@@ -1978,9 +1981,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "annotationProcessingEnabled" : {
-          "type" : "boolean"
-        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -1992,32 +1992,32 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
+        "filterProvider" : {
+          "$ref" : "#/definitions/FilterProvider"
         },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
+        "defaultNullKeySerializer" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         },
         "defaultNullValueSerializer" : {
           "$ref" : "#/definitions/JsonSerializerObject"
         },
-        "filterProvider" : {
-          "$ref" : "#/definitions/FilterProvider"
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
         },
-        "defaultNullKeySerializer" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
         }
       }
     },
@@ -2227,10 +2227,10 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
+        "id" : {
           "type" : "string"
         },
-        "id" : {
+        "displayName" : {
           "type" : "string"
         },
         "dstsavings" : {
@@ -2321,12 +2321,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
         "version" : {
           "type" : "integer",
           "format" : "int32"
@@ -2341,6 +2335,12 @@
             "format" : "byte"
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggersource.json b/content/swagger/2.10.0-SNAPSHOT/swaggersource.json
index 2e474c1..45d91ee 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggersource.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggersource.json
@@ -827,9 +827,6 @@
     "Base64Variant" : {
       "type" : "object",
       "properties" : {
-        "name" : {
-          "type" : "string"
-        },
         "paddingChar" : {
           "type" : "string"
         },
@@ -840,6 +837,9 @@
         "maxLineLength" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "name" : {
+          "type" : "string"
         }
       }
     },
@@ -1043,36 +1043,33 @@
         "numberFormat" : {
           "$ref" : "#/definitions/NumberFormat"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "lenient" : {
           "type" : "boolean"
+        },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         }
       }
     },
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
+        "problemHandlers" : {
+          "$ref" : "#/definitions/LinkedNodeDeserializationProblemHandler"
+        },
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "deserializationFeatures" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "problemHandlers" : {
-          "$ref" : "#/definitions/LinkedNodeDeserializationProblemHandler"
-        },
-        "attributes" : {
-          "$ref" : "#/definitions/ContextAttributes"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -1085,15 +1082,21 @@
         "defaultVisibilityChecker" : {
           "$ref" : "#/definitions/VisibilityCheckerObject"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
+        "attributes" : {
+          "$ref" : "#/definitions/ContextAttributes"
         },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "annotationProcessingEnabled" : {
+          "type" : "boolean"
+        },
         "handlerInstantiator" : {
           "$ref" : "#/definitions/HandlerInstantiator"
         },
@@ -1106,9 +1109,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "annotationProcessingEnabled" : {
-          "type" : "boolean"
-        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -1117,14 +1117,11 @@
     "DeserializationContext" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
-        "factory" : {
-          "$ref" : "#/definitions/DeserializerFactory"
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         },
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
@@ -1135,12 +1132,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
+        "arrayBuilders" : {
+          "$ref" : "#/definitions/ArrayBuilders"
         },
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "contextualType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -1151,8 +1151,8 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "arrayBuilders" : {
-          "$ref" : "#/definitions/ArrayBuilders"
+        "factory" : {
+          "$ref" : "#/definitions/DeserializerFactory"
         }
       }
     },
@@ -1206,27 +1206,6 @@
         "contentType" : {
           "$ref" : "#/definitions/JavaType"
         },
-        "interface" : {
-          "type" : "boolean"
-        },
-        "primitive" : {
-          "type" : "boolean"
-        },
-        "interfaces" : {
-          "type" : "array",
-          "items" : {
-            "$ref" : "#/definitions/JavaType"
-          }
-        },
-        "genericSignature" : {
-          "type" : "string"
-        },
-        "final" : {
-          "type" : "boolean"
-        },
-        "abstract" : {
-          "type" : "boolean"
-        },
         "bindings" : {
           "$ref" : "#/definitions/TypeBindings"
         },
@@ -1257,6 +1236,9 @@
         "typeHandler" : {
           "type" : "object"
         },
+        "collectionLikeType" : {
+          "type" : "boolean"
+        },
         "referencedType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -1272,10 +1254,28 @@
         "erasedSignature" : {
           "type" : "string"
         },
-        "collectionLikeType" : {
+        "mapLikeType" : {
           "type" : "boolean"
         },
-        "mapLikeType" : {
+        "interface" : {
+          "type" : "boolean"
+        },
+        "primitive" : {
+          "type" : "boolean"
+        },
+        "interfaces" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/JavaType"
+          }
+        },
+        "genericSignature" : {
+          "type" : "string"
+        },
+        "final" : {
+          "type" : "boolean"
+        },
+        "abstract" : {
           "type" : "boolean"
         },
         "typeName" : {
@@ -1289,9 +1289,6 @@
     "JsonFactory" : {
       "type" : "object",
       "properties" : {
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -1301,11 +1298,14 @@
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -1324,12 +1324,6 @@
         "prettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "currentValue" : {
-          "type" : "object"
-        },
         "featureMask" : {
           "type" : "integer",
           "format" : "int32"
@@ -1338,10 +1332,16 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currentValue" : {
+          "type" : "object"
+        },
         "highestEscapedChar" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
+        },
         "outputTarget" : {
           "type" : "object"
         },
@@ -1357,10 +1357,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -1375,6 +1371,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -1397,13 +1397,6 @@
             "type" : "string"
           }
         },
-        "booleanValue" : {
-          "type" : "boolean"
-        },
-        "byteValue" : {
-          "type" : "string",
-          "format" : "byte"
-        },
         "doubleValue" : {
           "type" : "number",
           "format" : "double"
@@ -1420,6 +1413,13 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "booleanValue" : {
+          "type" : "boolean"
+        },
+        "byteValue" : {
+          "type" : "string",
+          "format" : "byte"
+        },
         "closed" : {
           "type" : "boolean"
         },
@@ -1433,6 +1433,9 @@
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -1443,8 +1446,13 @@
         "currentName" : {
           "type" : "string"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         },
         "currentTokenId" : {
           "type" : "integer",
@@ -1519,14 +1527,6 @@
         },
         "currentValue" : {
           "type" : "object"
-        },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
         }
       }
     },
@@ -1552,9 +1552,6 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "parent" : {
-          "$ref" : "#/definitions/JsonStreamContext"
-        },
         "typeDesc" : {
           "type" : "string"
         },
@@ -1562,15 +1559,18 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "entryCount" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "currentName" : {
           "type" : "string"
         },
         "currentValue" : {
           "type" : "object"
+        },
+        "entryCount" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "parent" : {
+          "$ref" : "#/definitions/JsonStreamContext"
         }
       }
     },
@@ -1583,9 +1583,6 @@
     "Locale" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "script" : {
           "type" : "string"
         },
@@ -1634,6 +1631,9 @@
         "displayVariant" : {
           "type" : "string"
         },
+        "displayName" : {
+          "type" : "string"
+        },
         "language" : {
           "type" : "string"
         }
@@ -1735,10 +1735,10 @@
     "ObjectCodec" : {
       "type" : "object",
       "properties" : {
-        "factory" : {
+        "jsonFactory" : {
           "$ref" : "#/definitions/JsonFactory"
         },
-        "jsonFactory" : {
+        "factory" : {
           "$ref" : "#/definitions/JsonFactory"
         }
       }
@@ -1746,9 +1746,6 @@
     "ObjectMapper" : {
       "type" : "object",
       "properties" : {
-        "factory" : {
-          "$ref" : "#/definitions/JsonFactory"
-        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
@@ -1790,6 +1787,9 @@
         },
         "injectableValues" : {
           "$ref" : "#/definitions/InjectableValues"
+        },
+        "factory" : {
+          "$ref" : "#/definitions/JsonFactory"
         }
       }
     },
@@ -1873,14 +1873,14 @@
     "PropertyName" : {
       "type" : "object",
       "properties" : {
+        "namespace" : {
+          "type" : "string"
+        },
         "empty" : {
           "type" : "boolean"
         },
         "simpleName" : {
           "type" : "string"
-        },
-        "namespace" : {
-          "type" : "string"
         }
       }
     },
@@ -1890,10 +1890,10 @@
     "PublicKey" : {
       "type" : "object",
       "properties" : {
-        "algorithm" : {
+        "format" : {
           "type" : "string"
         },
-        "format" : {
+        "algorithm" : {
           "type" : "string"
         },
         "encoded" : {
@@ -1925,17 +1925,6 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1945,8 +1934,16 @@
         "defaultPrettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
-        "attributes" : {
-          "$ref" : "#/definitions/ContextAttributes"
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         },
         "rootName" : {
           "type" : "string"
@@ -1960,15 +1957,21 @@
         "defaultVisibilityChecker" : {
           "$ref" : "#/definitions/VisibilityCheckerObject"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
+        "attributes" : {
+          "$ref" : "#/definitions/ContextAttributes"
         },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "annotationProcessingEnabled" : {
+          "type" : "boolean"
+        },
         "handlerInstantiator" : {
           "$ref" : "#/definitions/HandlerInstantiator"
         },
@@ -1981,9 +1984,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "annotationProcessingEnabled" : {
-          "type" : "boolean"
-        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -1995,32 +1995,32 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
+        "filterProvider" : {
+          "$ref" : "#/definitions/FilterProvider"
         },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
+        "defaultNullKeySerializer" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         },
         "defaultNullValueSerializer" : {
           "$ref" : "#/definitions/JsonSerializerObject"
         },
-        "filterProvider" : {
-          "$ref" : "#/definitions/FilterProvider"
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
         },
-        "defaultNullKeySerializer" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
         }
       }
     },
@@ -2184,10 +2184,10 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
+        "id" : {
           "type" : "string"
         },
-        "id" : {
+        "displayName" : {
           "type" : "string"
         },
         "dstsavings" : {
@@ -2278,12 +2278,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
         "version" : {
           "type" : "integer",
           "format" : "int32"
@@ -2298,6 +2292,12 @@
             "format" : "byte"
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json b/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json
index 21e0483..6a97387 100644
--- a/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json
+++ b/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json
@@ -23951,6 +23951,16 @@
                         }
                     }
                 },
+                "subscriptionAuthentication": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "array",
+                        "uniqueItems": true,
+                        "items": {
+                            "type": "string"
+                        }
+                    }
+                },
                 "topicAuthentication": {
                     "type": "object",
                     "additionalProperties": {
@@ -23971,16 +23981,6 @@
                             }
                         }
                     }
-                },
-                "subscriptionAuthentication": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "array",
-                        "uniqueItems": true,
-                        "items": {
-                            "type": "string"
-                        }
-                    }
                 }
             }
         },
@@ -24010,17 +24010,17 @@
         "AutoFailoverPolicyData": {
             "type": "object",
             "properties": {
-                "parameters": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
-                    }
-                },
                 "policyType": {
                     "type": "string",
                     "enum": [
                         "min_available"
                     ]
+                },
+                "parameters": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
                 }
             }
         },
@@ -24071,9 +24071,6 @@
         "Base64Variant": {
             "type": "object",
             "properties": {
-                "name": {
-                    "type": "string"
-                },
                 "paddingChar": {
                     "type": "string"
                 },
@@ -24084,6 +24081,9 @@
                 "maxLineLength": {
                     "type": "integer",
                     "format": "int32"
+                },
+                "name": {
+                    "type": "string"
                 }
             }
         },
@@ -24403,23 +24403,12 @@
         "ConsumerStats": {
             "type": "object",
             "properties": {
-                "address": {
-                    "type": "string"
-                },
                 "metadata": {
                     "type": "object",
                     "additionalProperties": {
                         "type": "string"
                     }
                 },
-                "msgRateOut": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgThroughputOut": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "bytesOutCounter": {
                     "type": "integer",
                     "format": "int64"
@@ -24428,20 +24417,18 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "consumerName": {
-                    "type": "string"
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
                 },
-                "connectedSince": {
-                    "type": "string"
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
                 },
-                "availablePermits": {
+                "unackedMessages": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "msgRateRedeliver": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "lastConsumedTimestamp": {
                     "type": "integer",
                     "format": "int64"
@@ -24450,17 +24437,13 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "chunkedMessageRate": {
-                    "type": "number",
-                    "format": "double"
+                "consumerName": {
+                    "type": "string"
                 },
-                "unackedMessages": {
+                "availablePermits": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "clientVersion": {
-                    "type": "string"
-                },
                 "avgMessagesPerEntry": {
                     "type": "integer",
                     "format": "int32"
@@ -24476,6 +24459,23 @@
                     "items": {
                         "type": "string"
                     }
+                },
+                "chunkedMessageRate": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "connectedSince": {
+                    "type": "string"
+                },
+                "clientVersion": {
+                    "type": "string"
+                },
+                "msgRateRedeliver": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "address": {
+                    "type": "string"
                 }
             }
         },
@@ -24590,23 +24590,23 @@
                 "numberFormat": {
                     "$ref": "#/definitions/NumberFormat"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "lenient": {
                     "type": "boolean"
+                },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
                 }
             }
         },
         "DelayedDeliveryPolicies": {
             "type": "object",
             "properties": {
-                "active": {
-                    "type": "boolean"
-                },
                 "tickTime": {
                     "type": "integer",
                     "format": "int64"
+                },
+                "active": {
+                    "type": "boolean"
                 }
             }
         },
@@ -24622,25 +24622,22 @@
         "DeserializationConfig": {
             "type": "object",
             "properties": {
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
                 "defaultPropertyInclusion": {
                     "$ref": "#/definitions/Value"
                 },
+                "problemHandlers": {
+                    "$ref": "#/definitions/LinkedNodeDeserializationProblemHandler"
+                },
                 "nodeFactory": {
                     "$ref": "#/definitions/JsonNodeFactory"
                 },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "deserializationFeatures": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "problemHandlers": {
-                    "$ref": "#/definitions/LinkedNodeDeserializationProblemHandler"
-                },
-                "attributes": {
-                    "$ref": "#/definitions/ContextAttributes"
-                },
                 "rootName": {
                     "type": "string"
                 },
@@ -24653,15 +24650,21 @@
                 "defaultVisibilityChecker": {
                     "$ref": "#/definitions/VisibilityCheckerObject"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
+                "attributes": {
+                    "$ref": "#/definitions/ContextAttributes"
                 },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
+                "annotationProcessingEnabled": {
+                    "type": "boolean"
+                },
                 "handlerInstantiator": {
                     "$ref": "#/definitions/HandlerInstantiator"
                 },
@@ -24674,9 +24677,6 @@
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
-                "annotationProcessingEnabled": {
-                    "type": "boolean"
-                },
                 "classIntrospector": {
                     "$ref": "#/definitions/ClassIntrospector"
                 }
@@ -24685,14 +24685,11 @@
         "DeserializationContext": {
             "type": "object",
             "properties": {
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
-                "factory": {
-                    "$ref": "#/definitions/DeserializerFactory"
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
                 },
                 "config": {
                     "$ref": "#/definitions/DeserializationConfig"
@@ -24703,12 +24700,15 @@
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
+                "arrayBuilders": {
+                    "$ref": "#/definitions/ArrayBuilders"
                 },
                 "nodeFactory": {
                     "$ref": "#/definitions/JsonNodeFactory"
                 },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "contextualType": {
                     "$ref": "#/definitions/JavaType"
                 },
@@ -24719,8 +24719,8 @@
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
-                "arrayBuilders": {
-                    "$ref": "#/definitions/ArrayBuilders"
+                "factory": {
+                    "$ref": "#/definitions/DeserializerFactory"
                 }
             }
         },
@@ -24802,13 +24802,6 @@
         "FunctionInstanceStatsData": {
             "type": "object",
             "properties": {
-                "oneMin": {
-                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
-                },
-                "lastInvocation": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "userMetrics": {
                     "type": "object",
                     "additionalProperties": {
@@ -24816,6 +24809,13 @@
                         "format": "double"
                     }
                 },
+                "oneMin": {
+                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
+                },
+                "lastInvocation": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "receivedTotal": {
                     "type": "integer",
                     "format": "int64"
@@ -25038,27 +25038,6 @@
                 "contentType": {
                     "$ref": "#/definitions/JavaType"
                 },
-                "interface": {
-                    "type": "boolean"
-                },
-                "primitive": {
-                    "type": "boolean"
-                },
-                "interfaces": {
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/JavaType"
-                    }
-                },
-                "genericSignature": {
-                    "type": "string"
-                },
-                "final": {
-                    "type": "boolean"
-                },
-                "abstract": {
-                    "type": "boolean"
-                },
                 "bindings": {
                     "$ref": "#/definitions/TypeBindings"
                 },
@@ -25089,6 +25068,9 @@
                 "typeHandler": {
                     "type": "object"
                 },
+                "collectionLikeType": {
+                    "type": "boolean"
+                },
                 "referencedType": {
                     "$ref": "#/definitions/JavaType"
                 },
@@ -25104,10 +25086,28 @@
                 "erasedSignature": {
                     "type": "string"
                 },
-                "collectionLikeType": {
+                "mapLikeType": {
                     "type": "boolean"
                 },
-                "mapLikeType": {
+                "interface": {
+                    "type": "boolean"
+                },
+                "primitive": {
+                    "type": "boolean"
+                },
+                "interfaces": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/JavaType"
+                    }
+                },
+                "genericSignature": {
+                    "type": "string"
+                },
+                "final": {
+                    "type": "boolean"
+                },
+                "abstract": {
                     "type": "boolean"
                 },
                 "typeName": {
@@ -25121,9 +25121,6 @@
         "JsonFactory": {
             "type": "object",
             "properties": {
-                "rootValueSeparator": {
-                    "type": "string"
-                },
                 "codec": {
                     "$ref": "#/definitions/ObjectCodec"
                 },
@@ -25133,11 +25130,14 @@
                 "inputDecorator": {
                     "$ref": "#/definitions/InputDecorator"
                 },
-                "characterEscapes": {
-                    "$ref": "#/definitions/CharacterEscapes"
-                },
                 "outputDecorator": {
                     "$ref": "#/definitions/OutputDecorator"
+                },
+                "rootValueSeparator": {
+                    "type": "string"
+                },
+                "characterEscapes": {
+                    "$ref": "#/definitions/CharacterEscapes"
                 }
             }
         },
@@ -25156,12 +25156,6 @@
                 "prettyPrinter": {
                     "$ref": "#/definitions/PrettyPrinter"
                 },
-                "characterEscapes": {
-                    "$ref": "#/definitions/CharacterEscapes"
-                },
-                "currentValue": {
-                    "type": "object"
-                },
                 "featureMask": {
                     "type": "integer",
                     "format": "int32"
@@ -25170,10 +25164,16 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "currentValue": {
+                    "type": "object"
+                },
                 "highestEscapedChar": {
                     "type": "integer",
                     "format": "int32"
                 },
+                "characterEscapes": {
+                    "$ref": "#/definitions/CharacterEscapes"
+                },
                 "outputTarget": {
                     "type": "object"
                 },
@@ -25189,10 +25189,6 @@
         "JsonLocation": {
             "type": "object",
             "properties": {
-                "byteOffset": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "sourceRef": {
                     "type": "object"
                 },
@@ -25207,6 +25203,10 @@
                 "charOffset": {
                     "type": "integer",
                     "format": "int64"
+                },
+                "byteOffset": {
+                    "type": "integer",
+                    "format": "int64"
                 }
             }
         },
@@ -25229,13 +25229,6 @@
                         "type": "string"
                     }
                 },
-                "booleanValue": {
-                    "type": "boolean"
-                },
-                "byteValue": {
-                    "type": "string",
-                    "format": "byte"
-                },
                 "doubleValue": {
                     "type": "number",
                     "format": "double"
@@ -25252,6 +25245,13 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "booleanValue": {
+                    "type": "boolean"
+                },
+                "byteValue": {
+                    "type": "string",
+                    "format": "byte"
+                },
                 "closed": {
                     "type": "boolean"
                 },
@@ -25265,6 +25265,9 @@
                 "schema": {
                     "$ref": "#/definitions/FormatSchema"
                 },
+                "tokenLocation": {
+                    "$ref": "#/definitions/JsonLocation"
+                },
                 "codec": {
                     "$ref": "#/definitions/ObjectCodec"
                 },
@@ -25289,8 +25292,13 @@
                 "currentName": {
                     "type": "string"
                 },
-                "tokenLocation": {
-                    "$ref": "#/definitions/JsonLocation"
+                "featureMask": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "formatFeatures": {
+                    "type": "integer",
+                    "format": "int32"
                 },
                 "currentTokenId": {
                     "type": "integer",
@@ -25386,14 +25394,6 @@
                 },
                 "currentValue": {
                     "type": "object"
-                },
-                "featureMask": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "formatFeatures": {
-                    "type": "integer",
-                    "format": "int32"
                 }
             }
         },
@@ -25419,9 +25419,6 @@
         "JsonStreamContext": {
             "type": "object",
             "properties": {
-                "parent": {
-                    "$ref": "#/definitions/JsonStreamContext"
-                },
                 "typeDesc": {
                     "type": "string"
                 },
@@ -25429,15 +25426,18 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "entryCount": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "currentName": {
                     "type": "string"
                 },
                 "currentValue": {
                     "type": "object"
+                },
+                "entryCount": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "parent": {
+                    "$ref": "#/definitions/JsonStreamContext"
                 }
             }
         },
@@ -25725,25 +25725,33 @@
                     "type": "number",
                     "format": "double"
                 },
-                "bandwidthIn": {
+                "cpu": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
-                "bandwidthOut": {
+                "memory": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
-                "memory": {
+                "directMemory": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
-                "cpu": {
+                "bandwidthIn": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
-                "directMemory": {
+                "bandwidthOut": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
                 "lastUpdate": {
                     "type": "integer",
                     "format": "int64"
                 },
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
                 "underLoaded": {
                     "type": "boolean"
                 },
@@ -25752,23 +25760,12 @@
                 },
                 "loadReportType": {
                     "type": "string"
-                },
-                "msgThroughputIn": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgThroughputOut": {
-                    "type": "number",
-                    "format": "double"
                 }
             }
         },
         "Locale": {
             "type": "object",
             "properties": {
-                "displayName": {
-                    "type": "string"
-                },
                 "script": {
                     "type": "string"
                 },
@@ -25817,6 +25814,9 @@
                 "displayVariant": {
                     "type": "string"
                 },
+                "displayName": {
+                    "type": "string"
+                },
                 "language": {
                     "type": "string"
                 }
@@ -26049,19 +26049,13 @@
                     "type": "number",
                     "format": "double"
                 },
-                "address": {
-                    "type": "string"
-                },
                 "metadata": {
                     "type": "object",
                     "additionalProperties": {
                         "type": "string"
                     }
                 },
-                "producerName": {
-                    "type": "string"
-                },
-                "msgRateIn": {
+                "averageMsgSize": {
                     "type": "number",
                     "format": "double"
                 },
@@ -26069,13 +26063,10 @@
                     "type": "number",
                     "format": "double"
                 },
-                "averageMsgSize": {
+                "msgRateIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "connectedSince": {
-                    "type": "string"
-                },
                 "accessMode": {
                     "type": "string",
                     "enum": [
@@ -26088,12 +26079,21 @@
                     "type": "number",
                     "format": "double"
                 },
-                "clientVersion": {
-                    "type": "string"
-                },
                 "producerId": {
                     "type": "integer",
                     "format": "int64"
+                },
+                "connectedSince": {
+                    "type": "string"
+                },
+                "clientVersion": {
+                    "type": "string"
+                },
+                "producerName": {
+                    "type": "string"
+                },
+                "address": {
+                    "type": "string"
                 }
             }
         },
@@ -26107,26 +26107,22 @@
                 "connected": {
                     "type": "boolean"
                 },
-                "msgRateIn": {
+                "msgThroughputIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputIn": {
+                "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateOut": {
+                "msgRateIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputOut": {
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "replicationDelayInSeconds": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "msgRateExpired": {
                     "type": "number",
                     "format": "double"
@@ -26135,6 +26131,10 @@
                     "type": "integer",
                     "format": "int64"
                 },
+                "replicationDelayInSeconds": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "inboundConnection": {
                     "type": "string"
                 },
@@ -26156,23 +26156,12 @@
                     "type": "number",
                     "format": "double"
                 },
-                "type": {
-                    "type": "string"
-                },
                 "replicated": {
                     "type": "boolean"
                 },
                 "durable": {
                     "type": "boolean"
                 },
-                "msgRateOut": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgThroughputOut": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "bytesOutCounter": {
                     "type": "integer",
                     "format": "int64"
@@ -26185,46 +26174,25 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "nonContiguousDeletedMessagesRanges": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "nonContiguousDeletedMessagesRangesSerializedSize": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "consumers": {
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/ConsumerStats"
-                    }
-                },
-                "allowOutOfOrderDelivery": {
-                    "type": "boolean"
-                },
-                "keySharedMode": {
-                    "type": "string"
-                },
-                "subscriptionProperties": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
-                    }
-                },
-                "consumersAfterMarkDeletePosition": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
-                    }
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
                 },
-                "msgRateRedeliver": {
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgBacklog": {
+                "msgDelayed": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "unackedMessages": {
                     "type": "integer",
                     "format": "int64"
                 },
+                "activeConsumerName": {
+                    "type": "string"
+                },
                 "totalMsgExpired": {
                     "type": "integer",
                     "format": "int64"
@@ -26249,47 +26217,69 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgBacklogNoDelayed": {
+                "allowOutOfOrderDelivery": {
+                    "type": "boolean"
+                },
+                "keySharedMode": {
+                    "type": "string"
+                },
+                "consumersAfterMarkDeletePosition": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                },
+                "subscriptionProperties": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                },
+                "nonContiguousDeletedMessagesRanges": {
                     "type": "integer",
-                    "format": "int64"
+                    "format": "int32"
                 },
-                "chunkedMessageRate": {
+                "nonContiguousDeletedMessagesRangesSerializedSize": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "blockedSubscriptionOnUnackedMsgs": {
-                    "type": "boolean"
+                "chunkedMessageRate": {
+                    "type": "integer",
+                    "format": "int32"
                 },
-                "msgDelayed": {
+                "msgBacklog": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "unackedMessages": {
+                "msgRateRedeliver": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgBacklogNoDelayed": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "activeConsumerName": {
-                    "type": "string"
+                "blockedSubscriptionOnUnackedMsgs": {
+                    "type": "boolean"
                 },
                 "msgRateExpired": {
                     "type": "number",
                     "format": "double"
+                },
+                "consumers": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/ConsumerStats"
+                    }
+                },
+                "type": {
+                    "type": "string"
                 }
             }
         },
         "NonPersistentTopicStats": {
             "type": "object",
             "properties": {
-                "msgDropRate": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "subscriptions": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "$ref": "#/definitions/NonPersistentSubscriptionStats"
-                    }
-                },
                 "publishers": {
                     "type": "array",
                     "items": {
@@ -26302,19 +26292,13 @@
                         "$ref": "#/definitions/NonPersistentReplicatorStats"
                     }
                 },
-                "msgRateIn": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgThroughputIn": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgRateOut": {
-                    "type": "number",
-                    "format": "double"
+                "subscriptions": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/NonPersistentSubscriptionStats"
+                    }
                 },
-                "msgThroughputOut": {
+                "msgDropRate": {
                     "type": "number",
                     "format": "double"
                 },
@@ -26357,10 +26341,30 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
                 "nonContiguousDeletedMessagesRanges": {
                     "type": "integer",
                     "format": "int32"
                 },
+                "nonContiguousDeletedMessagesRangesSerializedSize": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "deduplicationStatus": {
                     "type": "string"
                 },
@@ -26368,10 +26372,6 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "nonContiguousDeletedMessagesRangesSerializedSize": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "compaction": {
                     "$ref": "#/definitions/CompactionStats"
                 }
@@ -26426,10 +26426,10 @@
         "ObjectCodec": {
             "type": "object",
             "properties": {
-                "factory": {
+                "jsonFactory": {
                     "$ref": "#/definitions/JsonFactory"
                 },
-                "jsonFactory": {
+                "factory": {
                     "$ref": "#/definitions/JsonFactory"
                 }
             }
@@ -26437,9 +26437,6 @@
         "ObjectMapper": {
             "type": "object",
             "properties": {
-                "factory": {
-                    "$ref": "#/definitions/JsonFactory"
-                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
@@ -26481,33 +26478,26 @@
                 },
                 "injectableValues": {
                     "$ref": "#/definitions/InjectableValues"
+                },
+                "factory": {
+                    "$ref": "#/definitions/JsonFactory"
                 }
             }
         },
         "OffloadPolicies": {
             "type": "object",
             "properties": {
-                "managedLedgerOffloadThresholdInBytes": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "managedLedgerOffloadDeletionLagInMillis": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "managedLedgerOffloadDriver": {
+                "s3ManagedLedgerOffloadBucket": {
                     "type": "string"
                 },
-                "offloadersDirectory": {
+                "s3ManagedLedgerOffloadRole": {
                     "type": "string"
                 },
-                "managedLedgerOffloadMaxThreads": {
-                    "type": "integer",
-                    "format": "int32"
+                "gcsManagedLedgerOffloadRegion": {
+                    "type": "string"
                 },
-                "managedLedgerOffloadPrefetchRounds": {
-                    "type": "integer",
-                    "format": "int32"
+                "gcsManagedLedgerOffloadBucket": {
+                    "type": "string"
                 },
                 "managedLedgerOffloadedReadPriority": {
                     "type": "string",
@@ -26516,12 +26506,6 @@
                         "TIERED_STORAGE_FIRST"
                     ]
                 },
-                "s3ManagedLedgerOffloadRegion": {
-                    "type": "string"
-                },
-                "s3ManagedLedgerOffloadBucket": {
-                    "type": "string"
-                },
                 "s3ManagedLedgerOffloadServiceEndpoint": {
                     "type": "string"
                 },
@@ -26539,30 +26523,38 @@
                 "s3ManagedLedgerOffloadCredentialSecret": {
                     "type": "string"
                 },
-                "s3ManagedLedgerOffloadRole": {
-                    "type": "string"
-                },
                 "s3ManagedLedgerOffloadRoleSessionName": {
                     "type": "string"
                 },
-                "gcsManagedLedgerOffloadRegion": {
-                    "type": "string"
+                "gcsManagedLedgerOffloadMaxBlockSizeInBytes": {
+                    "type": "integer",
+                    "format": "int32"
                 },
-                "gcsManagedLedgerOffloadBucket": {
+                "gcsManagedLedgerOffloadReadBufferSizeInBytes": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "fileSystemProfilePath": {
                     "type": "string"
                 },
-                "gcsManagedLedgerOffloadMaxBlockSizeInBytes": {
+                "managedLedgerOffloadPrefetchRounds": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "gcsManagedLedgerOffloadReadBufferSizeInBytes": {
+                "managedLedgerOffloadDriver": {
+                    "type": "string"
+                },
+                "offloadersDirectory": {
+                    "type": "string"
+                },
+                "managedLedgerOffloadMaxThreads": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "gcsManagedLedgerOffloadServiceAccountKeyFile": {
+                "s3ManagedLedgerOffloadRegion": {
                     "type": "string"
                 },
-                "fileSystemProfilePath": {
+                "gcsManagedLedgerOffloadServiceAccountKeyFile": {
                     "type": "string"
                 },
                 "fileSystemURI": {
@@ -26584,6 +26576,14 @@
                 "managedLedgerOffloadReadBufferSizeInBytes": {
                     "type": "integer",
                     "format": "int32"
+                },
+                "managedLedgerOffloadThresholdInBytes": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "managedLedgerOffloadDeletionLagInMillis": {
+                    "type": "integer",
+                    "format": "int64"
                 }
             }
         },
@@ -27329,14 +27329,14 @@
         "PropertyName": {
             "type": "object",
             "properties": {
+                "namespace": {
+                    "type": "string"
+                },
                 "empty": {
                     "type": "boolean"
                 },
                 "simpleName": {
                     "type": "string"
-                },
-                "namespace": {
-                    "type": "string"
                 }
             }
         },
@@ -27346,10 +27346,10 @@
         "PublicKey": {
             "type": "object",
             "properties": {
-                "algorithm": {
+                "format": {
                     "type": "string"
                 },
-                "format": {
+                "algorithm": {
                     "type": "string"
                 },
                 "encoded": {
@@ -27377,19 +27377,13 @@
         "PublisherStats": {
             "type": "object",
             "properties": {
-                "address": {
-                    "type": "string"
-                },
                 "metadata": {
                     "type": "object",
                     "additionalProperties": {
                         "type": "string"
                     }
                 },
-                "producerName": {
-                    "type": "string"
-                },
-                "msgRateIn": {
+                "averageMsgSize": {
                     "type": "number",
                     "format": "double"
                 },
@@ -27397,13 +27391,10 @@
                     "type": "number",
                     "format": "double"
                 },
-                "averageMsgSize": {
+                "msgRateIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "connectedSince": {
-                    "type": "string"
-                },
                 "accessMode": {
                     "type": "string",
                     "enum": [
@@ -27416,12 +27407,21 @@
                     "type": "number",
                     "format": "double"
                 },
-                "clientVersion": {
-                    "type": "string"
-                },
                 "producerId": {
                     "type": "integer",
                     "format": "int64"
+                },
+                "connectedSince": {
+                    "type": "string"
+                },
+                "clientVersion": {
+                    "type": "string"
+                },
+                "producerName": {
+                    "type": "string"
+                },
+                "address": {
+                    "type": "string"
                 }
             }
         },
@@ -27439,26 +27439,22 @@
                 "connected": {
                     "type": "boolean"
                 },
-                "msgRateIn": {
+                "msgThroughputIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputIn": {
+                "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateOut": {
+                "msgRateIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputOut": {
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "replicationDelayInSeconds": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "msgRateExpired": {
                     "type": "number",
                     "format": "double"
@@ -27467,6 +27463,10 @@
                     "type": "integer",
                     "format": "int64"
                 },
+                "replicationDelayInSeconds": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "inboundConnection": {
                     "type": "string"
                 },
@@ -27572,11 +27572,11 @@
         "ResourceUnit": {
             "type": "object",
             "properties": {
-                "availableResource": {
-                    "$ref": "#/definitions/ResourceDescription"
-                },
                 "resourceId": {
                     "type": "string"
+                },
+                "availableResource": {
+                    "$ref": "#/definitions/ResourceDescription"
                 }
             }
         },
@@ -27629,6 +27629,18 @@
         "SerializationConfig": {
             "type": "object",
             "properties": {
+                "defaultPropertyInclusion": {
+                    "$ref": "#/definitions/Value"
+                },
+                "filterProvider": {
+                    "$ref": "#/definitions/FilterProvider"
+                },
+                "defaultPrettyPrinter": {
+                    "$ref": "#/definitions/PrettyPrinter"
+                },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "serializationInclusion": {
                     "type": "string",
                     "enum": [
@@ -27644,21 +27656,6 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
-                "defaultPropertyInclusion": {
-                    "$ref": "#/definitions/Value"
-                },
-                "filterProvider": {
-                    "$ref": "#/definitions/FilterProvider"
-                },
-                "defaultPrettyPrinter": {
-                    "$ref": "#/definitions/PrettyPrinter"
-                },
-                "attributes": {
-                    "$ref": "#/definitions/ContextAttributes"
-                },
                 "rootName": {
                     "type": "string"
                 },
@@ -27671,15 +27668,21 @@
                 "defaultVisibilityChecker": {
                     "$ref": "#/definitions/VisibilityCheckerObject"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
+                "attributes": {
+                    "$ref": "#/definitions/ContextAttributes"
                 },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
+                "annotationProcessingEnabled": {
+                    "type": "boolean"
+                },
                 "handlerInstantiator": {
                     "$ref": "#/definitions/HandlerInstantiator"
                 },
@@ -27692,9 +27695,6 @@
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
-                "annotationProcessingEnabled": {
-                    "type": "boolean"
-                },
                 "classIntrospector": {
                     "$ref": "#/definitions/ClassIntrospector"
                 }
@@ -27706,32 +27706,32 @@
         "SerializerProvider": {
             "type": "object",
             "properties": {
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "config": {
                     "$ref": "#/definitions/SerializationConfig"
                 },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
+                "filterProvider": {
+                    "$ref": "#/definitions/FilterProvider"
                 },
-                "generator": {
-                    "$ref": "#/definitions/JsonGenerator"
+                "defaultNullKeySerializer": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 },
                 "defaultNullValueSerializer": {
                     "$ref": "#/definitions/JsonSerializerObject"
                 },
-                "filterProvider": {
-                    "$ref": "#/definitions/FilterProvider"
+                "generator": {
+                    "$ref": "#/definitions/JsonGenerator"
                 },
-                "defaultNullKeySerializer": {
-                    "$ref": "#/definitions/JsonSerializerObject"
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
                 }
             }
         },
@@ -27825,23 +27825,12 @@
         "SubscriptionStats": {
             "type": "object",
             "properties": {
-                "type": {
-                    "type": "string"
-                },
                 "replicated": {
                     "type": "boolean"
                 },
                 "durable": {
                     "type": "boolean"
                 },
-                "msgRateOut": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgThroughputOut": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "bytesOutCounter": {
                     "type": "integer",
                     "format": "int64"
@@ -27854,46 +27843,25 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "nonContiguousDeletedMessagesRanges": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "nonContiguousDeletedMessagesRangesSerializedSize": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "consumers": {
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/ConsumerStats"
-                    }
-                },
-                "allowOutOfOrderDelivery": {
-                    "type": "boolean"
-                },
-                "keySharedMode": {
-                    "type": "string"
-                },
-                "subscriptionProperties": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
-                    }
-                },
-                "consumersAfterMarkDeletePosition": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
-                    }
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
                 },
-                "msgRateRedeliver": {
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgBacklog": {
+                "msgDelayed": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "unackedMessages": {
                     "type": "integer",
                     "format": "int64"
                 },
+                "activeConsumerName": {
+                    "type": "string"
+                },
                 "totalMsgExpired": {
                     "type": "integer",
                     "format": "int64"
@@ -27918,31 +27886,63 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgBacklogNoDelayed": {
+                "allowOutOfOrderDelivery": {
+                    "type": "boolean"
+                },
+                "keySharedMode": {
+                    "type": "string"
+                },
+                "consumersAfterMarkDeletePosition": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                },
+                "subscriptionProperties": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                },
+                "nonContiguousDeletedMessagesRanges": {
                     "type": "integer",
-                    "format": "int64"
+                    "format": "int32"
                 },
-                "chunkedMessageRate": {
+                "nonContiguousDeletedMessagesRangesSerializedSize": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "blockedSubscriptionOnUnackedMsgs": {
-                    "type": "boolean"
+                "chunkedMessageRate": {
+                    "type": "integer",
+                    "format": "int32"
                 },
-                "msgDelayed": {
+                "msgBacklog": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "unackedMessages": {
+                "msgRateRedeliver": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgBacklogNoDelayed": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "activeConsumerName": {
-                    "type": "string"
+                "blockedSubscriptionOnUnackedMsgs": {
+                    "type": "boolean"
                 },
                 "msgRateExpired": {
                     "type": "number",
                     "format": "double"
+                },
+                "consumers": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/ConsumerStats"
+                    }
+                },
+                "type": {
+                    "type": "string"
                 }
             }
         },
@@ -28005,10 +28005,10 @@
         "TimeZone": {
             "type": "object",
             "properties": {
-                "displayName": {
+                "id": {
                     "type": "string"
                 },
-                "id": {
+                "displayName": {
                     "type": "string"
                 },
                 "dstsavings": {
@@ -28024,28 +28024,6 @@
         "TopicStats": {
             "type": "object",
             "properties": {
-                "subscriptions": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "$ref": "#/definitions/SubscriptionStats"
-                    }
-                },
-                "msgRateIn": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgThroughputIn": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgRateOut": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgThroughputOut": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "bytesInCounter": {
                     "type": "integer",
                     "format": "int64"
@@ -28097,10 +28075,36 @@
                         "$ref": "#/definitions/ReplicatorStats"
                     }
                 },
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "subscriptions": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/SubscriptionStats"
+                    }
+                },
                 "nonContiguousDeletedMessagesRanges": {
                     "type": "integer",
                     "format": "int32"
                 },
+                "nonContiguousDeletedMessagesRangesSerializedSize": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "deduplicationStatus": {
                     "type": "string"
                 },
@@ -28108,10 +28112,6 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "nonContiguousDeletedMessagesRangesSerializedSize": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "compaction": {
                     "$ref": "#/definitions/CompactionStats"
                 }
@@ -28533,14 +28533,14 @@
                 "sinks": {
                     "$ref": "#/definitions/SinksWorkerService"
                 },
+                "workerConfig": {
+                    "$ref": "#/definitions/WorkerConfig"
+                },
                 "functionsV2": {
                     "$ref": "#/definitions/FunctionsV2WorkerService"
                 },
                 "workers": {
                     "$ref": "#/definitions/WorkersWorkerService"
-                },
-                "workerConfig": {
-                    "$ref": "#/definitions/WorkerConfig"
                 }
             }
         },
@@ -28577,12 +28577,6 @@
                 "issuerX500Principal": {
                     "$ref": "#/definitions/X500Principal"
                 },
-                "issuerDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "subjectDN": {
-                    "$ref": "#/definitions/Principal"
-                },
                 "version": {
                     "type": "integer",
                     "format": "int32"
@@ -28597,6 +28591,12 @@
                         "format": "byte"
                     }
                 },
+                "issuerDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "subjectDN": {
+                    "$ref": "#/definitions/Principal"
+                },
                 "extendedKeyUsage": {
                     "type": "array",
                     "items": {
diff --git a/content/swagger/2.10.0-SNAPSHOT/v3/swaggerfunctions.json b/content/swagger/2.10.0-SNAPSHOT/v3/swaggerfunctions.json
index bd1d2b4..30e29c8 100644
--- a/content/swagger/2.10.0-SNAPSHOT/v3/swaggerfunctions.json
+++ b/content/swagger/2.10.0-SNAPSHOT/v3/swaggerfunctions.json
@@ -1188,9 +1188,6 @@
         "Base64Variant": {
             "type": "object",
             "properties": {
-                "name": {
-                    "type": "string"
-                },
                 "paddingChar": {
                     "type": "string"
                 },
@@ -1201,6 +1198,9 @@
                 "maxLineLength": {
                     "type": "integer",
                     "format": "int32"
+                },
+                "name": {
+                    "type": "string"
                 }
             }
         },
@@ -1393,36 +1393,33 @@
                 "numberFormat": {
                     "$ref": "#/definitions/NumberFormat"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "lenient": {
                     "type": "boolean"
+                },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
                 }
             }
         },
         "DeserializationConfig": {
             "type": "object",
             "properties": {
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
                 "defaultPropertyInclusion": {
                     "$ref": "#/definitions/Value"
                 },
+                "problemHandlers": {
+                    "$ref": "#/definitions/LinkedNodeDeserializationProblemHandler"
+                },
                 "nodeFactory": {
                     "$ref": "#/definitions/JsonNodeFactory"
                 },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "deserializationFeatures": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "problemHandlers": {
-                    "$ref": "#/definitions/LinkedNodeDeserializationProblemHandler"
-                },
-                "attributes": {
-                    "$ref": "#/definitions/ContextAttributes"
-                },
                 "rootName": {
                     "type": "string"
                 },
@@ -1435,15 +1432,21 @@
                 "defaultVisibilityChecker": {
                     "$ref": "#/definitions/VisibilityCheckerObject"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
+                "attributes": {
+                    "$ref": "#/definitions/ContextAttributes"
                 },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
+                "annotationProcessingEnabled": {
+                    "type": "boolean"
+                },
                 "handlerInstantiator": {
                     "$ref": "#/definitions/HandlerInstantiator"
                 },
@@ -1456,9 +1459,6 @@
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
-                "annotationProcessingEnabled": {
-                    "type": "boolean"
-                },
                 "classIntrospector": {
                     "$ref": "#/definitions/ClassIntrospector"
                 }
@@ -1467,14 +1467,11 @@
         "DeserializationContext": {
             "type": "object",
             "properties": {
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
-                "factory": {
-                    "$ref": "#/definitions/DeserializerFactory"
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
                 },
                 "config": {
                     "$ref": "#/definitions/DeserializationConfig"
@@ -1485,12 +1482,15 @@
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
+                "arrayBuilders": {
+                    "$ref": "#/definitions/ArrayBuilders"
                 },
                 "nodeFactory": {
                     "$ref": "#/definitions/JsonNodeFactory"
                 },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "contextualType": {
                     "$ref": "#/definitions/JavaType"
                 },
@@ -1501,8 +1501,8 @@
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
-                "arrayBuilders": {
-                    "$ref": "#/definitions/ArrayBuilders"
+                "factory": {
+                    "$ref": "#/definitions/DeserializerFactory"
                 }
             }
         },
@@ -1765,13 +1765,6 @@
         "FunctionInstanceStatsData": {
             "type": "object",
             "properties": {
-                "oneMin": {
-                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
-                },
-                "lastInvocation": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "userMetrics": {
                     "type": "object",
                     "additionalProperties": {
@@ -1779,6 +1772,13 @@
                         "format": "double"
                     }
                 },
+                "oneMin": {
+                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
+                },
+                "lastInvocation": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "receivedTotal": {
                     "type": "integer",
                     "format": "int64"
@@ -2072,27 +2072,6 @@
                 "contentType": {
                     "$ref": "#/definitions/JavaType"
                 },
-                "interface": {
-                    "type": "boolean"
-                },
-                "primitive": {
-                    "type": "boolean"
-                },
-                "interfaces": {
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/JavaType"
-                    }
-                },
-                "genericSignature": {
-                    "type": "string"
-                },
-                "final": {
-                    "type": "boolean"
-                },
-                "abstract": {
-                    "type": "boolean"
-                },
                 "bindings": {
                     "$ref": "#/definitions/TypeBindings"
                 },
@@ -2123,6 +2102,9 @@
                 "typeHandler": {
                     "type": "object"
                 },
+                "collectionLikeType": {
+                    "type": "boolean"
+                },
                 "referencedType": {
                     "$ref": "#/definitions/JavaType"
                 },
@@ -2138,10 +2120,28 @@
                 "erasedSignature": {
                     "type": "string"
                 },
-                "collectionLikeType": {
+                "mapLikeType": {
                     "type": "boolean"
                 },
-                "mapLikeType": {
+                "interface": {
+                    "type": "boolean"
+                },
+                "primitive": {
+                    "type": "boolean"
+                },
+                "interfaces": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/JavaType"
+                    }
+                },
+                "genericSignature": {
+                    "type": "string"
+                },
+                "final": {
+                    "type": "boolean"
+                },
+                "abstract": {
                     "type": "boolean"
                 },
                 "typeName": {
@@ -2155,9 +2155,6 @@
         "JsonFactory": {
             "type": "object",
             "properties": {
-                "rootValueSeparator": {
-                    "type": "string"
-                },
                 "codec": {
                     "$ref": "#/definitions/ObjectCodec"
                 },
@@ -2167,11 +2164,14 @@
                 "inputDecorator": {
                     "$ref": "#/definitions/InputDecorator"
                 },
-                "characterEscapes": {
-                    "$ref": "#/definitions/CharacterEscapes"
-                },
                 "outputDecorator": {
                     "$ref": "#/definitions/OutputDecorator"
+                },
+                "rootValueSeparator": {
+                    "type": "string"
+                },
+                "characterEscapes": {
+                    "$ref": "#/definitions/CharacterEscapes"
                 }
             }
         },
@@ -2190,12 +2190,6 @@
                 "prettyPrinter": {
                     "$ref": "#/definitions/PrettyPrinter"
                 },
-                "characterEscapes": {
-                    "$ref": "#/definitions/CharacterEscapes"
-                },
-                "currentValue": {
-                    "type": "object"
-                },
                 "featureMask": {
                     "type": "integer",
                     "format": "int32"
@@ -2204,10 +2198,16 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "currentValue": {
+                    "type": "object"
+                },
                 "highestEscapedChar": {
                     "type": "integer",
                     "format": "int32"
                 },
+                "characterEscapes": {
+                    "$ref": "#/definitions/CharacterEscapes"
+                },
                 "outputTarget": {
                     "type": "object"
                 },
@@ -2223,10 +2223,6 @@
         "JsonLocation": {
             "type": "object",
             "properties": {
-                "byteOffset": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "sourceRef": {
                     "type": "object"
                 },
@@ -2241,6 +2237,10 @@
                 "charOffset": {
                     "type": "integer",
                     "format": "int64"
+                },
+                "byteOffset": {
+                    "type": "integer",
+                    "format": "int64"
                 }
             }
         },
@@ -2263,13 +2263,6 @@
                         "type": "string"
                     }
                 },
-                "booleanValue": {
-                    "type": "boolean"
-                },
-                "byteValue": {
-                    "type": "string",
-                    "format": "byte"
-                },
                 "doubleValue": {
                     "type": "number",
                     "format": "double"
@@ -2286,6 +2279,13 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "booleanValue": {
+                    "type": "boolean"
+                },
+                "byteValue": {
+                    "type": "string",
+                    "format": "byte"
+                },
                 "closed": {
                     "type": "boolean"
                 },
@@ -2299,6 +2299,9 @@
                 "schema": {
                     "$ref": "#/definitions/FormatSchema"
                 },
+                "tokenLocation": {
+                    "$ref": "#/definitions/JsonLocation"
+                },
                 "codec": {
                     "$ref": "#/definitions/ObjectCodec"
                 },
@@ -2323,8 +2326,13 @@
                 "currentName": {
                     "type": "string"
                 },
-                "tokenLocation": {
-                    "$ref": "#/definitions/JsonLocation"
+                "featureMask": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "formatFeatures": {
+                    "type": "integer",
+                    "format": "int32"
                 },
                 "currentTokenId": {
                     "type": "integer",
@@ -2420,14 +2428,6 @@
                 },
                 "currentValue": {
                     "type": "object"
-                },
-                "featureMask": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "formatFeatures": {
-                    "type": "integer",
-                    "format": "int32"
                 }
             }
         },
@@ -2453,9 +2453,6 @@
         "JsonStreamContext": {
             "type": "object",
             "properties": {
-                "parent": {
-                    "$ref": "#/definitions/JsonStreamContext"
-                },
                 "typeDesc": {
                     "type": "string"
                 },
@@ -2463,15 +2460,18 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "entryCount": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "currentName": {
                     "type": "string"
                 },
                 "currentValue": {
                     "type": "object"
+                },
+                "entryCount": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "parent": {
+                    "$ref": "#/definitions/JsonStreamContext"
                 }
             }
         },
@@ -2484,9 +2484,6 @@
         "Locale": {
             "type": "object",
             "properties": {
-                "displayName": {
-                    "type": "string"
-                },
                 "script": {
                     "type": "string"
                 },
@@ -2535,6 +2532,9 @@
                 "displayVariant": {
                     "type": "string"
                 },
+                "displayName": {
+                    "type": "string"
+                },
                 "language": {
                     "type": "string"
                 }
@@ -2546,29 +2546,43 @@
         "Message": {
             "type": "object",
             "properties": {
-                "value": {
-                    "type": "object"
-                },
-                "key": {
-                    "type": "string"
+                "replicated": {
+                    "type": "boolean"
                 },
-                "properties": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
+                "data": {
+                    "type": "array",
+                    "items": {
+                        "type": "string",
+                        "format": "byte"
                     }
                 },
-                "index": {
-                    "type": "integer",
-                    "format": "int64"
+                "topicName": {
+                    "type": "string"
                 },
-                "data": {
+                "messageId": {
+                    "$ref": "#/definitions/MessageId"
+                },
+                "keyBytes": {
                     "type": "array",
                     "items": {
                         "type": "string",
                         "format": "byte"
                     }
                 },
+                "encryptionCtx": {
+                    "$ref": "#/definitions/EncryptionContext"
+                },
+                "redeliveryCount": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "readerSchema": {
+                    "$ref": "#/definitions/SchemaObject"
+                },
+                "brokerPublishTime": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "publishTime": {
                     "type": "integer",
                     "format": "int64"
@@ -2601,35 +2615,21 @@
                         "format": "byte"
                     }
                 },
-                "replicated": {
-                    "type": "boolean"
+                "value": {
+                    "type": "object"
                 },
-                "topicName": {
+                "key": {
                     "type": "string"
                 },
-                "brokerPublishTime": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "messageId": {
-                    "$ref": "#/definitions/MessageId"
-                },
-                "keyBytes": {
-                    "type": "array",
-                    "items": {
-                        "type": "string",
-                        "format": "byte"
+                "properties": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
                     }
                 },
-                "encryptionCtx": {
-                    "$ref": "#/definitions/EncryptionContext"
-                },
-                "redeliveryCount": {
+                "index": {
                     "type": "integer",
-                    "format": "int32"
-                },
-                "readerSchema": {
-                    "$ref": "#/definitions/SchemaObject"
+                    "format": "int64"
                 }
             }
         },
@@ -2738,10 +2738,10 @@
         "ObjectCodec": {
             "type": "object",
             "properties": {
-                "factory": {
+                "jsonFactory": {
                     "$ref": "#/definitions/JsonFactory"
                 },
-                "jsonFactory": {
+                "factory": {
                     "$ref": "#/definitions/JsonFactory"
                 }
             }
@@ -2749,9 +2749,6 @@
         "ObjectMapper": {
             "type": "object",
             "properties": {
-                "factory": {
-                    "$ref": "#/definitions/JsonFactory"
-                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
@@ -2793,6 +2790,9 @@
                 },
                 "injectableValues": {
                     "$ref": "#/definitions/InjectableValues"
+                },
+                "factory": {
+                    "$ref": "#/definitions/JsonFactory"
                 }
             }
         },
@@ -2876,14 +2876,14 @@
         "PropertyName": {
             "type": "object",
             "properties": {
+                "namespace": {
+                    "type": "string"
+                },
                 "empty": {
                     "type": "boolean"
                 },
                 "simpleName": {
                     "type": "string"
-                },
-                "namespace": {
-                    "type": "string"
                 }
             }
         },
@@ -2893,10 +2893,10 @@
         "PublicKey": {
             "type": "object",
             "properties": {
-                "algorithm": {
+                "format": {
                     "type": "string"
                 },
-                "format": {
+                "algorithm": {
                     "type": "string"
                 },
                 "encoded": {
@@ -2928,17 +2928,27 @@
         "Schema": {
             "type": "object",
             "properties": {
-                "schemaInfo": {
-                    "$ref": "#/definitions/SchemaInfo"
-                },
                 "nativeSchema": {
                     "type": "object"
+                },
+                "schemaInfo": {
+                    "$ref": "#/definitions/SchemaInfo"
                 }
             }
         },
         "SchemaInfo": {
             "type": "object",
             "properties": {
+                "schemaDefinition": {
+                    "type": "string"
+                },
+                "schema": {
+                    "type": "array",
+                    "items": {
+                        "type": "string",
+                        "format": "byte"
+                    }
+                },
                 "name": {
                     "type": "string"
                 },
@@ -2977,33 +2987,35 @@
                         "AUTO_CONSUME",
                         "AUTO_PUBLISH"
                     ]
-                },
-                "schemaDefinition": {
-                    "type": "string"
-                },
-                "schema": {
-                    "type": "array",
-                    "items": {
-                        "type": "string",
-                        "format": "byte"
-                    }
                 }
             }
         },
         "SchemaObject": {
             "type": "object",
             "properties": {
-                "schemaInfo": {
-                    "$ref": "#/definitions/SchemaInfo"
-                },
                 "nativeSchema": {
                     "type": "object"
+                },
+                "schemaInfo": {
+                    "$ref": "#/definitions/SchemaInfo"
                 }
             }
         },
         "SerializationConfig": {
             "type": "object",
             "properties": {
+                "defaultPropertyInclusion": {
+                    "$ref": "#/definitions/Value"
+                },
+                "filterProvider": {
+                    "$ref": "#/definitions/FilterProvider"
+                },
+                "defaultPrettyPrinter": {
+                    "$ref": "#/definitions/PrettyPrinter"
+                },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "serializationInclusion": {
                     "type": "string",
                     "enum": [
@@ -3019,21 +3031,6 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
-                "defaultPropertyInclusion": {
-                    "$ref": "#/definitions/Value"
-                },
-                "filterProvider": {
-                    "$ref": "#/definitions/FilterProvider"
-                },
-                "defaultPrettyPrinter": {
-                    "$ref": "#/definitions/PrettyPrinter"
-                },
-                "attributes": {
-                    "$ref": "#/definitions/ContextAttributes"
-                },
                 "rootName": {
                     "type": "string"
                 },
@@ -3046,15 +3043,21 @@
                 "defaultVisibilityChecker": {
                     "$ref": "#/definitions/VisibilityCheckerObject"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
+                "attributes": {
+                    "$ref": "#/definitions/ContextAttributes"
                 },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
+                "annotationProcessingEnabled": {
+                    "type": "boolean"
+                },
                 "handlerInstantiator": {
                     "$ref": "#/definitions/HandlerInstantiator"
                 },
@@ -3067,9 +3070,6 @@
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
-                "annotationProcessingEnabled": {
-                    "type": "boolean"
-                },
                 "classIntrospector": {
                     "$ref": "#/definitions/ClassIntrospector"
                 }
@@ -3081,32 +3081,32 @@
         "SerializerProvider": {
             "type": "object",
             "properties": {
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "config": {
                     "$ref": "#/definitions/SerializationConfig"
                 },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
+                "filterProvider": {
+                    "$ref": "#/definitions/FilterProvider"
                 },
-                "generator": {
-                    "$ref": "#/definitions/JsonGenerator"
+                "defaultNullKeySerializer": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 },
                 "defaultNullValueSerializer": {
                     "$ref": "#/definitions/JsonSerializerObject"
                 },
-                "filterProvider": {
-                    "$ref": "#/definitions/FilterProvider"
+                "generator": {
+                    "$ref": "#/definitions/JsonGenerator"
                 },
-                "defaultNullKeySerializer": {
-                    "$ref": "#/definitions/JsonSerializerObject"
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
                 }
             }
         },
@@ -3122,10 +3122,10 @@
         "TimeZone": {
             "type": "object",
             "properties": {
-                "displayName": {
+                "id": {
                     "type": "string"
                 },
-                "id": {
+                "displayName": {
                     "type": "string"
                 },
                 "dstsavings": {
@@ -3268,12 +3268,6 @@
                 "issuerX500Principal": {
                     "$ref": "#/definitions/X500Principal"
                 },
-                "issuerDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "subjectDN": {
-                    "$ref": "#/definitions/Principal"
-                },
                 "version": {
                     "type": "integer",
                     "format": "int32"
@@ -3288,6 +3282,12 @@
                         "format": "byte"
                     }
                 },
+                "issuerDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "subjectDN": {
+                    "$ref": "#/definitions/Principal"
+                },
                 "extendedKeyUsage": {
                     "type": "array",
                     "items": {
diff --git a/content/swagger/2.10.0-SNAPSHOT/v3/swaggerpackages.json b/content/swagger/2.10.0-SNAPSHOT/v3/swaggerpackages.json
index 6d59163..fc44622 100644
--- a/content/swagger/2.10.0-SNAPSHOT/v3/swaggerpackages.json
+++ b/content/swagger/2.10.0-SNAPSHOT/v3/swaggerpackages.json
@@ -520,9 +520,6 @@
         "Base64Variant": {
             "type": "object",
             "properties": {
-                "name": {
-                    "type": "string"
-                },
                 "paddingChar": {
                     "type": "string"
                 },
@@ -533,6 +530,9 @@
                 "maxLineLength": {
                     "type": "integer",
                     "format": "int32"
+                },
+                "name": {
+                    "type": "string"
                 }
             }
         },
@@ -654,36 +654,33 @@
                 "numberFormat": {
                     "$ref": "#/definitions/NumberFormat"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "lenient": {
                     "type": "boolean"
+                },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
                 }
             }
         },
         "DeserializationConfig": {
             "type": "object",
             "properties": {
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
                 "defaultPropertyInclusion": {
                     "$ref": "#/definitions/Value"
                 },
+                "problemHandlers": {
+                    "$ref": "#/definitions/LinkedNodeDeserializationProblemHandler"
+                },
                 "nodeFactory": {
                     "$ref": "#/definitions/JsonNodeFactory"
                 },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "deserializationFeatures": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "problemHandlers": {
-                    "$ref": "#/definitions/LinkedNodeDeserializationProblemHandler"
-                },
-                "attributes": {
-                    "$ref": "#/definitions/ContextAttributes"
-                },
                 "rootName": {
                     "type": "string"
                 },
@@ -696,15 +693,21 @@
                 "defaultVisibilityChecker": {
                     "$ref": "#/definitions/VisibilityCheckerObject"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
+                "attributes": {
+                    "$ref": "#/definitions/ContextAttributes"
                 },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
+                "annotationProcessingEnabled": {
+                    "type": "boolean"
+                },
                 "handlerInstantiator": {
                     "$ref": "#/definitions/HandlerInstantiator"
                 },
@@ -717,9 +720,6 @@
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
-                "annotationProcessingEnabled": {
-                    "type": "boolean"
-                },
                 "classIntrospector": {
                     "$ref": "#/definitions/ClassIntrospector"
                 }
@@ -728,14 +728,11 @@
         "DeserializationContext": {
             "type": "object",
             "properties": {
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
-                "factory": {
-                    "$ref": "#/definitions/DeserializerFactory"
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
                 },
                 "config": {
                     "$ref": "#/definitions/DeserializationConfig"
@@ -746,12 +743,15 @@
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
+                "arrayBuilders": {
+                    "$ref": "#/definitions/ArrayBuilders"
                 },
                 "nodeFactory": {
                     "$ref": "#/definitions/JsonNodeFactory"
                 },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "contextualType": {
                     "$ref": "#/definitions/JavaType"
                 },
@@ -762,8 +762,8 @@
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
-                "arrayBuilders": {
-                    "$ref": "#/definitions/ArrayBuilders"
+                "factory": {
+                    "$ref": "#/definitions/DeserializerFactory"
                 }
             }
         },
@@ -805,27 +805,6 @@
                 "contentType": {
                     "$ref": "#/definitions/JavaType"
                 },
-                "interface": {
-                    "type": "boolean"
-                },
-                "primitive": {
-                    "type": "boolean"
-                },
-                "interfaces": {
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/JavaType"
-                    }
-                },
-                "genericSignature": {
-                    "type": "string"
-                },
-                "final": {
-                    "type": "boolean"
-                },
-                "abstract": {
-                    "type": "boolean"
-                },
                 "bindings": {
                     "$ref": "#/definitions/TypeBindings"
                 },
@@ -856,6 +835,9 @@
                 "typeHandler": {
                     "type": "object"
                 },
+                "collectionLikeType": {
+                    "type": "boolean"
+                },
                 "referencedType": {
                     "$ref": "#/definitions/JavaType"
                 },
@@ -871,10 +853,28 @@
                 "erasedSignature": {
                     "type": "string"
                 },
-                "collectionLikeType": {
+                "mapLikeType": {
                     "type": "boolean"
                 },
-                "mapLikeType": {
+                "interface": {
+                    "type": "boolean"
+                },
+                "primitive": {
+                    "type": "boolean"
+                },
+                "interfaces": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/JavaType"
+                    }
+                },
+                "genericSignature": {
+                    "type": "string"
+                },
+                "final": {
+                    "type": "boolean"
+                },
+                "abstract": {
                     "type": "boolean"
                 },
                 "typeName": {
@@ -888,9 +888,6 @@
         "JsonFactory": {
             "type": "object",
             "properties": {
-                "rootValueSeparator": {
-                    "type": "string"
-                },
                 "codec": {
                     "$ref": "#/definitions/ObjectCodec"
                 },
@@ -900,11 +897,14 @@
                 "inputDecorator": {
                     "$ref": "#/definitions/InputDecorator"
                 },
-                "characterEscapes": {
-                    "$ref": "#/definitions/CharacterEscapes"
-                },
                 "outputDecorator": {
                     "$ref": "#/definitions/OutputDecorator"
+                },
+                "rootValueSeparator": {
+                    "type": "string"
+                },
+                "characterEscapes": {
+                    "$ref": "#/definitions/CharacterEscapes"
                 }
             }
         },
@@ -923,12 +923,6 @@
                 "prettyPrinter": {
                     "$ref": "#/definitions/PrettyPrinter"
                 },
-                "characterEscapes": {
-                    "$ref": "#/definitions/CharacterEscapes"
-                },
-                "currentValue": {
-                    "type": "object"
-                },
                 "featureMask": {
                     "type": "integer",
                     "format": "int32"
@@ -937,10 +931,16 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "currentValue": {
+                    "type": "object"
+                },
                 "highestEscapedChar": {
                     "type": "integer",
                     "format": "int32"
                 },
+                "characterEscapes": {
+                    "$ref": "#/definitions/CharacterEscapes"
+                },
                 "outputTarget": {
                     "type": "object"
                 },
@@ -956,10 +956,6 @@
         "JsonLocation": {
             "type": "object",
             "properties": {
-                "byteOffset": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "sourceRef": {
                     "type": "object"
                 },
@@ -974,6 +970,10 @@
                 "charOffset": {
                     "type": "integer",
                     "format": "int64"
+                },
+                "byteOffset": {
+                    "type": "integer",
+                    "format": "int64"
                 }
             }
         },
@@ -996,13 +996,6 @@
                         "type": "string"
                     }
                 },
-                "booleanValue": {
-                    "type": "boolean"
-                },
-                "byteValue": {
-                    "type": "string",
-                    "format": "byte"
-                },
                 "doubleValue": {
                     "type": "number",
                     "format": "double"
@@ -1019,6 +1012,13 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "booleanValue": {
+                    "type": "boolean"
+                },
+                "byteValue": {
+                    "type": "string",
+                    "format": "byte"
+                },
                 "closed": {
                     "type": "boolean"
                 },
@@ -1032,6 +1032,9 @@
                 "schema": {
                     "$ref": "#/definitions/FormatSchema"
                 },
+                "tokenLocation": {
+                    "$ref": "#/definitions/JsonLocation"
+                },
                 "codec": {
                     "$ref": "#/definitions/ObjectCodec"
                 },
@@ -1056,8 +1059,13 @@
                 "currentName": {
                     "type": "string"
                 },
-                "tokenLocation": {
-                    "$ref": "#/definitions/JsonLocation"
+                "featureMask": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "formatFeatures": {
+                    "type": "integer",
+                    "format": "int32"
                 },
                 "currentTokenId": {
                     "type": "integer",
@@ -1153,14 +1161,6 @@
                 },
                 "currentValue": {
                     "type": "object"
-                },
-                "featureMask": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "formatFeatures": {
-                    "type": "integer",
-                    "format": "int32"
                 }
             }
         },
@@ -1186,9 +1186,6 @@
         "JsonStreamContext": {
             "type": "object",
             "properties": {
-                "parent": {
-                    "$ref": "#/definitions/JsonStreamContext"
-                },
                 "typeDesc": {
                     "type": "string"
                 },
@@ -1196,15 +1193,18 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "entryCount": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "currentName": {
                     "type": "string"
                 },
                 "currentValue": {
                     "type": "object"
+                },
+                "entryCount": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "parent": {
+                    "$ref": "#/definitions/JsonStreamContext"
                 }
             }
         },
@@ -1217,9 +1217,6 @@
         "Locale": {
             "type": "object",
             "properties": {
-                "displayName": {
-                    "type": "string"
-                },
                 "script": {
                     "type": "string"
                 },
@@ -1268,6 +1265,9 @@
                 "displayVariant": {
                     "type": "string"
                 },
+                "displayName": {
+                    "type": "string"
+                },
                 "language": {
                     "type": "string"
                 }
@@ -1378,10 +1378,10 @@
         "ObjectCodec": {
             "type": "object",
             "properties": {
-                "factory": {
+                "jsonFactory": {
                     "$ref": "#/definitions/JsonFactory"
                 },
-                "jsonFactory": {
+                "factory": {
                     "$ref": "#/definitions/JsonFactory"
                 }
             }
@@ -1389,9 +1389,6 @@
         "ObjectMapper": {
             "type": "object",
             "properties": {
-                "factory": {
-                    "$ref": "#/definitions/JsonFactory"
-                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
@@ -1433,6 +1430,9 @@
                 },
                 "injectableValues": {
                     "$ref": "#/definitions/InjectableValues"
+                },
+                "factory": {
+                    "$ref": "#/definitions/JsonFactory"
                 }
             }
         },
@@ -1519,14 +1519,14 @@
         "PropertyName": {
             "type": "object",
             "properties": {
+                "namespace": {
+                    "type": "string"
+                },
                 "empty": {
                     "type": "boolean"
                 },
                 "simpleName": {
                     "type": "string"
-                },
-                "namespace": {
-                    "type": "string"
                 }
             }
         },
@@ -1536,10 +1536,10 @@
         "PublicKey": {
             "type": "object",
             "properties": {
-                "algorithm": {
+                "format": {
                     "type": "string"
                 },
-                "format": {
+                "algorithm": {
                     "type": "string"
                 },
                 "encoded": {
@@ -1554,6 +1554,18 @@
         "SerializationConfig": {
             "type": "object",
             "properties": {
+                "defaultPropertyInclusion": {
+                    "$ref": "#/definitions/Value"
+                },
+                "filterProvider": {
+                    "$ref": "#/definitions/FilterProvider"
+                },
+                "defaultPrettyPrinter": {
+                    "$ref": "#/definitions/PrettyPrinter"
+                },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "serializationInclusion": {
                     "type": "string",
                     "enum": [
@@ -1569,21 +1581,6 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
-                "defaultPropertyInclusion": {
-                    "$ref": "#/definitions/Value"
-                },
-                "filterProvider": {
-                    "$ref": "#/definitions/FilterProvider"
-                },
-                "defaultPrettyPrinter": {
-                    "$ref": "#/definitions/PrettyPrinter"
-                },
-                "attributes": {
-                    "$ref": "#/definitions/ContextAttributes"
-                },
                 "rootName": {
                     "type": "string"
                 },
@@ -1596,15 +1593,21 @@
                 "defaultVisibilityChecker": {
                     "$ref": "#/definitions/VisibilityCheckerObject"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
+                "attributes": {
+                    "$ref": "#/definitions/ContextAttributes"
                 },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
+                "annotationProcessingEnabled": {
+                    "type": "boolean"
+                },
                 "handlerInstantiator": {
                     "$ref": "#/definitions/HandlerInstantiator"
                 },
@@ -1617,9 +1620,6 @@
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
-                "annotationProcessingEnabled": {
-                    "type": "boolean"
-                },
                 "classIntrospector": {
                     "$ref": "#/definitions/ClassIntrospector"
                 }
@@ -1631,32 +1631,32 @@
         "SerializerProvider": {
             "type": "object",
             "properties": {
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "config": {
                     "$ref": "#/definitions/SerializationConfig"
                 },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
+                "filterProvider": {
+                    "$ref": "#/definitions/FilterProvider"
                 },
-                "generator": {
-                    "$ref": "#/definitions/JsonGenerator"
+                "defaultNullKeySerializer": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 },
                 "defaultNullValueSerializer": {
                     "$ref": "#/definitions/JsonSerializerObject"
                 },
-                "filterProvider": {
-                    "$ref": "#/definitions/FilterProvider"
+                "generator": {
+                    "$ref": "#/definitions/JsonGenerator"
                 },
-                "defaultNullKeySerializer": {
-                    "$ref": "#/definitions/JsonSerializerObject"
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
                 }
             }
         },
@@ -1675,10 +1675,10 @@
         "TimeZone": {
             "type": "object",
             "properties": {
-                "displayName": {
+                "id": {
                     "type": "string"
                 },
-                "id": {
+                "displayName": {
                     "type": "string"
                 },
                 "dstsavings": {
@@ -1773,12 +1773,6 @@
                 "issuerX500Principal": {
                     "$ref": "#/definitions/X500Principal"
                 },
-                "issuerDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "subjectDN": {
-                    "$ref": "#/definitions/Principal"
-                },
                 "version": {
                     "type": "integer",
                     "format": "int32"
@@ -1793,6 +1787,12 @@
                         "format": "byte"
                     }
                 },
+                "issuerDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "subjectDN": {
+                    "$ref": "#/definitions/Principal"
+                },
                 "extendedKeyUsage": {
                     "type": "array",
                     "items": {
diff --git a/content/swagger/2.10.0-SNAPSHOT/v3/swaggersink.json b/content/swagger/2.10.0-SNAPSHOT/v3/swaggersink.json
index 8ceef8e..d453a83 100644
--- a/content/swagger/2.10.0-SNAPSHOT/v3/swaggersink.json
+++ b/content/swagger/2.10.0-SNAPSHOT/v3/swaggersink.json
@@ -985,9 +985,6 @@
         "Base64Variant": {
             "type": "object",
             "properties": {
-                "name": {
-                    "type": "string"
-                },
                 "paddingChar": {
                     "type": "string"
                 },
@@ -998,6 +995,9 @@
                 "maxLineLength": {
                     "type": "integer",
                     "format": "int32"
+                },
+                "name": {
+                    "type": "string"
                 }
             }
         },
@@ -1230,36 +1230,33 @@
                 "numberFormat": {
                     "$ref": "#/definitions/NumberFormat"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "lenient": {
                     "type": "boolean"
+                },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
                 }
             }
         },
         "DeserializationConfig": {
             "type": "object",
             "properties": {
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
                 "defaultPropertyInclusion": {
                     "$ref": "#/definitions/Value"
                 },
+                "problemHandlers": {
+                    "$ref": "#/definitions/LinkedNodeDeserializationProblemHandler"
+                },
                 "nodeFactory": {
                     "$ref": "#/definitions/JsonNodeFactory"
                 },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "deserializationFeatures": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "problemHandlers": {
-                    "$ref": "#/definitions/LinkedNodeDeserializationProblemHandler"
-                },
-                "attributes": {
-                    "$ref": "#/definitions/ContextAttributes"
-                },
                 "rootName": {
                     "type": "string"
                 },
@@ -1272,15 +1269,21 @@
                 "defaultVisibilityChecker": {
                     "$ref": "#/definitions/VisibilityCheckerObject"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
+                "attributes": {
+                    "$ref": "#/definitions/ContextAttributes"
                 },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
+                "annotationProcessingEnabled": {
+                    "type": "boolean"
+                },
                 "handlerInstantiator": {
                     "$ref": "#/definitions/HandlerInstantiator"
                 },
@@ -1293,9 +1296,6 @@
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
-                "annotationProcessingEnabled": {
-                    "type": "boolean"
-                },
                 "classIntrospector": {
                     "$ref": "#/definitions/ClassIntrospector"
                 }
@@ -1304,14 +1304,11 @@
         "DeserializationContext": {
             "type": "object",
             "properties": {
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
-                "factory": {
-                    "$ref": "#/definitions/DeserializerFactory"
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
                 },
                 "config": {
                     "$ref": "#/definitions/DeserializationConfig"
@@ -1322,12 +1319,15 @@
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
+                "arrayBuilders": {
+                    "$ref": "#/definitions/ArrayBuilders"
                 },
                 "nodeFactory": {
                     "$ref": "#/definitions/JsonNodeFactory"
                 },
... 10138 lines suppressed ...