-
Notifications
You must be signed in to change notification settings - Fork 313
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
Allow index pattern for source-index in shrink-index operation #1118
Changes from 2 commits
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 |
---|---|---|
|
@@ -308,6 +308,8 @@ def mandatory(params, key, op): | |
f"Add it to your parameter source and try again.") | ||
|
||
|
||
# TODO: remove and use https://docs.python.org/3/library/stdtypes.html#str.removeprefix | ||
# once Python 3.9 becomes the minimum version | ||
def remove_prefix(string, prefix): | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Too bad we don't have Python 3.9 as minimum version requirement as this has been recently added to the standard library. I wonder whether we should put a TODO into the code? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes I noticed that too while coding writing this. Added a TODO in a3cab0e. |
||
if string.startswith(prefix): | ||
return string[len(prefix):] | ||
|
@@ -1339,15 +1341,17 @@ async def __call__(self, es, params): | |
target_body = deepcopy(mandatory(params, "target-body", self)) | ||
shrink_node = params.get("shrink-node") | ||
# Choose a random data node if none is specified | ||
node_names = [shrink_node] if shrink_node else [] | ||
if not shrink_node: | ||
if shrink_node: | ||
node_names = [shrink_node] | ||
else: | ||
node_names = [] | ||
# choose a random data node | ||
node_info = await es.nodes.info() | ||
for node in node_info["nodes"].values(): | ||
if "data" in node["roles"]: | ||
node_names.append(node["name"]) | ||
if not node_names: | ||
raise exceptions.RallyAssertionError("Could not choose a suitable shrink-node automatically. Please specify it explicitly.") | ||
raise exceptions.RallyAssertionError("Could not choose a suitable shrink-node automatically. Specify it explicitly.") | ||
|
||
for source_index in source_indices: | ||
shrink_node = random.choice(node_names) | ||
|
@@ -1365,7 +1369,7 @@ async def __call__(self, es, params): | |
preserve_existing=True) | ||
|
||
self.logger.info("Waiting for relocation to finish for index [%s] ...", source_index) | ||
await self._wait_for(es, source_index, "shard relocation for index [{}]".format(source_index)) | ||
await self._wait_for(es, source_index, f"shard relocation for index [{source_index}]") | ||
self.logger.info("Shrinking [%s] to [%s].", source_index, target_index) | ||
if "settings" not in target_body: | ||
target_body["settings"] = {} | ||
|
@@ -1377,10 +1381,10 @@ async def __call__(self, es, params): | |
await es.indices.shrink(index=source_index, target=final_target_index, body=target_body) | ||
|
||
self.logger.info("Waiting for shrink to finish for index [%s] ...", source_index) | ||
await self._wait_for(es, final_target_index, "shrink for index [{}]".format(final_target_index)) | ||
await self._wait_for(es, final_target_index, f"shrink for index [{final_target_index}]") | ||
self.logger.info("Shrinking [%s] to [%s] has finished.", source_index, final_target_index) | ||
# ops_count is not really important for this operation... | ||
return 1, "ops" | ||
return len(source_indices), "ops" | ||
|
||
def __repr__(self, *args, **kwargs): | ||
return "shrink-index" | ||
|
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.
Much clearer, thanks!