This is an automated email from the ASF dual-hosted git repository. yubiao pushed a commit to branch revert-22791-pip/356 in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit bba734a353eee5a29d1430ffb36ed9b955191f47 Author: fengyubiao <9947...@qq.com> AuthorDate: Thu May 30 15:13:20 2024 +0800 Revert "[improve] [pip] PIP-356: Support Geo-Replication starts at earliest p…" This reverts commit 43b20c3cfda0ca2c70b970161c572bcc19f1745f. --- pip/pip-356.md | 71 ---------------------------------------------------------- 1 file changed, 71 deletions(-) diff --git a/pip/pip-356.md b/pip/pip-356.md deleted file mode 100644 index c922e212ad7..00000000000 --- a/pip/pip-356.md +++ /dev/null @@ -1,71 +0,0 @@ -# PIP-356: Support Geo-Replication starts at earliest position - -# Background knowledge - -Replication reads messages from the source cluster, and copies them to the remote cluster. -- Registers a cursor named `pulsar.repl.{remote-cluster}` on the source cluster. Replicator reads messages relies on this cursor. -- Registers a producer on the remote cluster. Replicator writes messages relies on this producer. - -# Motivation - -If you have some older messages to migrate, the steps recommended are below, which was described at [pulsar doc](https://pulsar.apache.org/docs/3.2.x/administration-geo/#migrate-data-between-clusters-using-geo-replication). -1. Create the cursor that the replicator will use manually: `pulsar-admin topics create-subscription -s pulsar.repl.{remote-cluster} -m earliest <topic>`. -2. Enable namespace-level/topic-level Geo-Replication. - -The steps recommended are difficultly to use, for example: -- Create cursor `pulsar.repl.{remote-cluster}` manually. -- The namespace/topic was unloaded due to a re-balance. - - The broker will remove the `pulsar.repl.{remote-cluster}` automatically because the Geo-Replication feature is disabled at this moment. -- Enable namespace-level/topic-level Geo-Replication, but the cursor that was created manually has been deleted, the broker will create a new one with latest position, which is not expected. - - -# Goals -Add an optional config(broker level, namespace level, and topic level) to support Geo-Replication starting at the earliest position. - -### Configuration - -**broker.conf** -```properties -# The position that replication task start at, it can be set to "earliest" or "latest (default)". -replicationStartAt=latest -``` - -**ServiceConfiguration** -```java -@FieldContext( - category = CATEGORY_REPLICATION, - dynamic = true, - doc = "The position that replication task start at, it can be set to earliest or latest (default)." -) -String replicationStartAt = "latest"; -``` - -### Public API - -**V2/Namespaces.java** -```java -@POST -@Path("/{tenant}/{namespace}/replicationStartAt") -public void setNamespaceLevelReplicationStartAt( - @PathParam("tenant") String tenant, - @PathParam("namespace") String namespace, - @QueryParam("replicationStartAt") String replicationStartAt) { - ... - ... -} -``` - -**V2/PersistentTopics.java** -```java -@POST -@Path("/{tenant}/{namespace}/{topic}/replicationStartAt") -public void setNamespaceLevelReplicationStartAt( - @PathParam("tenant") String tenant, - @PathParam("namespace") String namespace, - @PathParam("topic") @Encoded String encodedTopic, - @QueryParam("isGlobal") @DefaultValue("false") boolean isGlobal, - @QueryParam("replicationStartAt") String replicationStartAt) { - ... - ... -} -```