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

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 12864e8  Compaction documentation follow-up (#1871)
12864e8 is described below

commit 12864e8a3dd95977aef406a6499dc30bfc5432c0
Author: Luc Perkins <[email protected]>
AuthorDate: Wed Jun 20 16:39:59 2018 -0700

    Compaction documentation follow-up (#1871)
    
    * clarification around compacted vs non-compacted consumers
    
    * clarify that no-key msgs are ignored
    
    * theoretical clarifications
    
    * clarify language around listening/changes
---
 site/docs/latest/cookbooks/compaction.md                    | 13 ++++++++++---
 site/docs/latest/getting-started/ConceptsAndArchitecture.md | 10 ++++------
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/site/docs/latest/cookbooks/compaction.md 
b/site/docs/latest/cookbooks/compaction.md
index 3b11400..035dfd4 100644
--- a/site/docs/latest/cookbooks/compaction.md
+++ b/site/docs/latest/cookbooks/compaction.md
@@ -11,13 +11,18 @@ To use compaction:
 * Compaction can be configured to run [automatically](#automatic), or you can 
manually [trigger](#trigger) compaction using the Pulsar administrative API.
 * Your {% popover consumers %} must be [configured](#config) to read from 
compacted topics ([Java consumers](#java), for example, have a `readCompacted` 
setting that must be set to `true`). If this configuration is not set, 
consumers will still be able to read from the non-compacted topic.
 
+{% include admonition.html type="warning" content="Compaction only works on 
messages that have keys (as in the stock ticker example the stock symbol serves 
as the key for each message). Keys can thus be thought of as the axis along 
which compaction is applied. Messages that don't have keys are simply ignored 
by compaction." %}
+
 ## When should I use compacted topics? {#when}
 
-The classic example of a topic that could benefit from compaction would be a 
stock ticker topic through which {% popover consumers %} can access up-to-date 
values for specific stocks. On a stock ticker topic you only care about the 
most recent value of each stock; "historical values" don't matter, so there's 
no need to read through outdated data when processing a topic's messages.
+The classic example of a topic that could benefit from compaction would be a 
stock ticker topic through which {% popover consumers %} can access up-to-date 
values for specific stocks. Imagine a scneario in which messages carrying stock 
value data use the stock symbol as the key (`GOOG`, `AAPL`, `TWTR`, etc.). 
Compacting this topic would give consumers on the topic two options:
+
+* They can read from the "original," non-compacted topic in case they need 
access to "historical" values, i.e. the entirety of the topic's messages.
+* They can read from the compacted topic if they only want to see the most 
up-to-date messages.
 
-{% include admonition.html type="info" content="For topics where older values 
are important, for example when you need to process a long series of messages 
in order, many of which have the same key, compaction is unnecessary and could 
possibly even be harmful." %}
+Thus, if you're using a Pulsar topic called `stock-values`, some consumers 
could have access to all messages in the topic (perhaps because they're 
performing some kind of number crunching of all values in the last hour) while 
the consumers used to power the real-time stock ticker only see the compacted 
topic (and thus aren't forced to process outdated messages). Which variant of 
the topic any given consumer pulls messages from is determined by the 
consumer's [configuration](#config).
 
-{% include admonition.html type="warning" content="Compaction only works on 
topics where each message has a key (as in the stock ticker example, where the 
stock symbol serves as the key). Keys can be thought of as the axis along which 
compaction is applied." %}
+{% include admonition.html type="success" content="One of the benefits of 
compaction in Pulsar is that you aren't forced to choose between compacted and 
non-compacted topics, as the compaction process leaves the original topic as-is 
and essentially adds an alternate topic. In other words, you can run compaction 
on a topic and consumers that need access to the non-compacted version of the 
topic will not be adversely affected." %}
 
 ## Configuring compaction to run automatically {#automatic}
 
@@ -48,6 +53,8 @@ $ bin/pulsar compact-topic \
   --topic persistent://my-tenant-namespace/my-topic
 ```
 
+{% include admonition.html type="info" content="Running compaction in its own 
process is recommended when you want to avoid interfering with the broker's 
performance. Broker performance should only be affected, however, when running 
compaction on topics with a large keyspace (i.e when there are many keys on the 
topic). The first phase of the compaction process keeps a copy of each key in 
the topic, which can create memory pressure as the number of keys grows. Using 
the `pulsar-admin topi [...]
+
 The `pulsar compact-topic` command communicates with 
[ZooKeeper](https://zookeeper.apache.org) directly. In order to establish 
communication with ZooKeeper, though, the `pulsar` CLI tool will need to have a 
valid [broker configuration](../../Configuration#broker). You can either supply 
a proper configuration in `conf/broker.conf` or specify a non-default location 
for the configuration:
 
 ```bash
diff --git a/site/docs/latest/getting-started/ConceptsAndArchitecture.md 
b/site/docs/latest/getting-started/ConceptsAndArchitecture.md
index 96c0be2..e07c5f9 100644
--- a/site/docs/latest/getting-started/ConceptsAndArchitecture.md
+++ b/site/docs/latest/getting-started/ConceptsAndArchitecture.md
@@ -551,7 +551,7 @@ For some use cases consumers don't need a complete "image" 
of the topic log. The
 
 Pulsar's topic compaction feature:
 
-* Allos for much more efficient "rewind" through topic logs
+* Allows for faster "rewind" through topic logs
 * Applies only to [persistent topics](#persistent-storage)
 * Triggered automatically when the backlog reaches a certain size or can be 
triggered manually via the command line. See the [Topic compaction 
cookbook](../../cookbooks/compaction)
 * Is conceptually and operationally distinct from [retention and 
expiry](#message-retention-and-expiry). Topic compaction *does*, however, 
respect retention. If retention has removed a message from the message backlog 
of a topic, the message will also not be readable from the compacted topic 
ledger.
@@ -561,13 +561,11 @@ Pulsar's topic compaction feature:
 
 ### How topic compaction works
 
-When topic compaction is triggered [via the CLI](../../cookbooks/compaction), 
Pulsar will iterate over the entire topic from beginning to end. For each key 
that it encounters the {% popover broker %} responsible will keep a record of 
the latest occurrence of that key. When this iterative process is finished, the 
broker will create a [BookKeeper ledger](#ledgers) to store the compacted topic.
+When topic compaction is triggered [via the CLI](../../cookbooks/compaction), 
Pulsar will iterate over the entire topic from beginning to end. For each key 
that it encounters the compaction routine will keep a record of the latest 
occurrence of that key.
 
-After that, the broker will make a second iteration through each message on 
the topic. For each message, if the key matches the latest occurrence of that 
key, then the key's data payload, message ID, and metadata will be written to 
the new BookKeeper ledger (the one that was created when compaction was 
manually initiated). If the key doesn't match the latest then the message will 
be skipped and left alone. If any given message has an empty payload, it will 
be skipped and considered delet [...]
+After that, the broker will create a new [BookKeeper ledger](#ledgers) and 
make a second iteration through each message on the topic. For each message, if 
the key matches the latest occurrence of that key, then the key's data payload, 
message ID, and metadata will be written to the newly created ledger. If the 
key doesn't match the latest then the message will be skipped and left alone. 
If any given message has an empty payload, it will be skipped and considered 
deleted (akin to the conc [...]
 
-{% include admonition.html type="info" title="Compaction leaves the original 
topic intact" %}
-
-In addition to performing compaction, Pulsar {% popover brokers %} listen for 
changes on each topic's metadata. If the ledger for the topic changes:
+After the initial compaction operation, the Pulsar {% popover broker %} that 
owns the topic is notified whenever any future changes are made to the 
compaction horizon and compacted backlog. When such changes occur:
 
 * Clients (consumers and readers) that have read compacted enabled will 
attempt to read messages from a topic and either:
   * Read from the topic like normal (if the message ID is greater than or 
equal to the compaction horizon) or

Reply via email to