-
Notifications
You must be signed in to change notification settings - Fork 25.7k
Add ccr follow info api #37408
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add ccr follow info api #37408
Changes from 1 commit
a731f2a
be2a7b0
4d4f4cb
1b73159
8667efb
da5c396
d5875a0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,171 @@ | ||
| [role="xpack"] | ||
| [testenv="platinum"] | ||
| [[ccr-get-follow-info]] | ||
| === Get follower info API | ||
| ++++ | ||
| <titleabbrev>Get follower info</titleabbrev> | ||
| ++++ | ||
|
|
||
| beta[] | ||
|
|
||
| Get follower info. | ||
|
|
||
| ==== Description | ||
|
|
||
| This API returns information about all follower indices. | ||
|
|
||
| For each follower index that gets returned, the configured parameters | ||
| (e.g. follower index name, leader index name, replication options) and | ||
| the status (whether follower index is active or paused) is included. | ||
|
|
||
| ==== Request | ||
|
|
||
| ////////////////////////// | ||
|
|
||
| [source,js] | ||
| -------------------------------------------------- | ||
| PUT /follower_index/_ccr/follow | ||
| { | ||
| "remote_cluster" : "remote_cluster", | ||
| "leader_index" : "leader_index" | ||
| } | ||
| -------------------------------------------------- | ||
| // CONSOLE | ||
| // TESTSETUP | ||
| // TEST[setup:remote_cluster_and_leader_index] | ||
|
|
||
| [source,js] | ||
| -------------------------------------------------- | ||
| POST /follower_index/_ccr/pause_follow | ||
| -------------------------------------------------- | ||
| // CONSOLE | ||
| // TEARDOWN | ||
|
|
||
| ////////////////////////// | ||
|
|
||
| [source,js] | ||
| -------------------------------------------------- | ||
| GET /<index>/_ccr/info | ||
| -------------------------------------------------- | ||
| // CONSOLE | ||
| // TEST[s/<index>/follower_index/] | ||
|
|
||
| ==== Path Parameters | ||
| `index` :: | ||
| (string) a comma-delimited list of follower index patterns | ||
|
|
||
| ==== Results | ||
|
|
||
| This API returns the following information: | ||
|
|
||
| `follower_indices`:: | ||
| (array) an array of follower index statistics | ||
|
|
||
| The `indices` array consists of objects containing two fields: | ||
|
|
||
| `indices[].follower_index`:: | ||
| (string) the name of the follower index | ||
|
|
||
| `indices[].remote_cluster`:: | ||
| (string) the <modules-remote-clusters,remote cluster>> containing the leader | ||
| index | ||
|
|
||
| `indices[].leader_cluster`:: | ||
|
||
| (string) the name of the index in the leader cluster being followed | ||
|
|
||
| `indices[].status`:: | ||
| (string) whether index following is `active` or `paused` | ||
|
|
||
| `indices[].parameters`:: | ||
| (object) an object encapsulating ccr replication related parameters | ||
|
|
||
| The `parameters` contains the following fields: | ||
|
|
||
| `indices[].parameters.max_read_request_operation_count`:: | ||
| (integer) the configured maximum number of operations to pull per read from the remote | ||
| cluster | ||
|
|
||
| `indices[].parameters.max_outstanding_read_requests`:: | ||
| (long) the configured maximum number of outstanding reads requests from the remote | ||
|
||
| cluster | ||
|
|
||
| `indices[].parameters.max_read_request_size`:: | ||
| (<<byte-units,byte value>>) the configured maximum size in bytes of per read of a batch | ||
| of operations pulled from the remote cluster | ||
|
|
||
| `indices[].parameters.max_write_request_operation_count`:: | ||
| (integer) the configured maximum number of operations per bulk write request executed on | ||
| the follower | ||
|
|
||
| `indices[].parameters.max_write_request_size`:: | ||
| (<<byte-units,byte value>>) the configured maximum total bytes of operations per bulk write request | ||
| executed on the follower | ||
|
|
||
| `indices[].parameters.max_outstanding_write_requests`:: | ||
| (integer) the configured maximum number of outstanding write requests on the follower | ||
|
|
||
| `indices[].parameters.max_write_buffer_count`:: | ||
| (integer) th configurede maximum number of operations that can be queued for writing; | ||
|
||
| when this limit is reached, reads from the remote cluster will be deferred | ||
| until the number of queued operations goes below the limit | ||
|
|
||
| `indices[].parameters.max_write_buffer_size`:: | ||
| (<<byte-units,byte value>>) the configured maximum total bytes of operations that can be queued for | ||
| writing; when this limit is reached, reads from the remote cluster will be | ||
| deferred until the total bytes of queued operations goes below the limit | ||
|
|
||
| `indices[].parameters.max_retry_delay`:: | ||
| (<<time-units,time value>>) the configured maximum time to wait before retrying an | ||
| operation that failed exceptionally; an exponential backoff strategy is | ||
| employed when retrying | ||
|
|
||
| `indices[].parameters.read_poll_timeout`:: | ||
| (<<time-units,time value>>) the configured maximum time to wait for new operations on the | ||
| remote cluster when the follower index is synchronized with the leader index; | ||
| when the timeout has elapsed, the poll for operations will return to the | ||
| follower so that it can update some statistics, and then the follower will | ||
| immediately attempt to read from the leader again | ||
|
|
||
| ==== Authorization | ||
|
|
||
| If the {es} {security-features} are enabled, you must have `monitor` cluster | ||
| privileges. For more information, see {stack-ov}/security-privileges.html[Security privileges]. | ||
|
|
||
| ==== Example | ||
|
|
||
| This example retrieves follower info: | ||
|
|
||
| [source,js] | ||
| -------------------------------------------------- | ||
| GET /follower_index/_ccr/info | ||
| -------------------------------------------------- | ||
| // CONSOLE | ||
|
|
||
| The API returns the following results: | ||
|
|
||
| [source,js] | ||
| -------------------------------------------------- | ||
| { | ||
| "follower_indices" : [ | ||
| { | ||
| "follower_index" : "follower_index", | ||
| "remote_cluster" : "remote_cluster", | ||
| "leader_index" : "leader_index", | ||
| "status" : "active", | ||
| "parameters" : { | ||
| "max_read_request_operation_count" : 5120, | ||
| "max_read_request_size" : "32mb", | ||
| "max_outstanding_read_requests" : 12, | ||
| "max_write_request_operation_count" : 5120, | ||
| "max_write_request_size" : "9223372036854775807b", | ||
| "max_outstanding_write_requests" : 9, | ||
| "max_write_buffer_count" : 2147483647, | ||
| "max_write_buffer_size" : "512mb", | ||
| "max_retry_delay" : "500ms", | ||
| "read_poll_timeout" : "1m" | ||
| } | ||
| } | ||
| ] | ||
| } | ||
| -------------------------------------------------- | ||
| // TESTRESPONSE | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,75 @@ | ||
| --- | ||
| "Test info": | ||
| - do: | ||
| cluster.state: {} | ||
|
|
||
| - set: {master_node: master} | ||
|
|
||
| - do: | ||
| nodes.info: {} | ||
|
|
||
| - set: {nodes.$master.transport_address: local_ip} | ||
|
|
||
| - do: | ||
| cluster.put_settings: | ||
| body: | ||
| transient: | ||
| cluster.remote.local.seeds: $local_ip | ||
| flat_settings: true | ||
|
|
||
| - match: {transient: {cluster.remote.local.seeds: $local_ip}} | ||
|
|
||
| - do: | ||
| indices.create: | ||
| index: foo | ||
| body: | ||
| settings: | ||
| index: | ||
| number_of_shards: 1 | ||
| number_of_replicas: 0 | ||
| soft_deletes: | ||
| enabled: true | ||
|
|
||
| - do: | ||
| ccr.follow: | ||
| index: bar | ||
| body: | ||
| remote_cluster: local | ||
| leader_index: foo | ||
| - is_true: follow_index_created | ||
| - is_true: follow_index_shards_acked | ||
| - is_true: index_following_started | ||
|
|
||
| - do: | ||
| ccr.follow_info: | ||
| index: bar | ||
| - length: {follower_indices: 1} | ||
| - match: {follower_indices.0.follower_index: "bar"} | ||
| - match: {follower_indices.0.remote_cluster: "local"} | ||
| - match: {follower_indices.0.leader_index: "foo"} | ||
| - match: {follower_indices.0.status: "active"} | ||
| - match: {follower_indices.0.parameters.max_read_request_operation_count: 5120} | ||
| - match: {follower_indices.0.parameters.max_read_request_size: "32mb"} | ||
| - match: {follower_indices.0.parameters.max_outstanding_read_requests: 12} | ||
| - match: {follower_indices.0.parameters.max_write_request_operation_count: 5120} | ||
| - match: {follower_indices.0.parameters.max_write_request_size: "9223372036854775807b"} | ||
| - match: {follower_indices.0.parameters.max_outstanding_write_requests: 9} | ||
| - match: {follower_indices.0.parameters.max_write_buffer_count: 2147483647,} | ||
| - match: {follower_indices.0.parameters.max_write_buffer_size: "512mb"} | ||
| - match: {follower_indices.0.parameters.max_retry_delay: "500ms"} | ||
| - match: {follower_indices.0.parameters.read_poll_timeout: "1m"} | ||
|
|
||
| - do: | ||
| ccr.pause_follow: | ||
| index: bar | ||
| - is_true: acknowledged | ||
|
|
||
| - do: | ||
| ccr.follow_info: | ||
| index: bar | ||
| - length: {follower_indices: 1} | ||
| - match: {follower_indices.0.follower_index: "bar"} | ||
| - match: {follower_indices.0.remote_cluster: "local"} | ||
| - match: {follower_indices.0.leader_index: "foo"} | ||
| - match: {follower_indices.0.status: "paused"} | ||
| - is_false: follower_indices.0.parameters |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: here we are returning more than two fields.