mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-10 23:15:04 +00:00
Before, snapshot/restore would synchronize all operations on the cluster state except for deleting snapshots. This meant that only one snapshot/restore operation would be allowed in the cluster at any given time, except for deletions - there could be two or more snapshot deletions running at the same time, or a deletion could be running, unbeknowest to the rest of the cluster, and thus a snapshot or restore would be allowed at the same time as the snapshot deletion was still in progress. This could cause any number of synchronization issues, including the situation where a snapshot that was deleted could reappear in the index-N file, even though its data was no longer present in the repository. This commit introduces a new custom type to the cluster state to represent deletions in progress. Now, another deletion cannot start if a deletion is currently in progress. Similarily, a snapshot or restore cannot be started if a deletion is currently in progress. In each case, if attempting to run another snapshot/restore operation while a deletion is in progress, a ConcurrentSnapshotExecutionException will be thrown. This is the same exception thrown if trying to snapshot while another snapshot is in progress, or restore while a snapshot is in progress. Closes #19957
Elasticsearch REST API JSON specification
This repository contains a collection of JSON files which describe the Elasticsearch HTTP API.
Their purpose is to formalize and standardize the API, to facilitate development of libraries and integrations.
Example for the "Create Index" API:
{
"indices.create": {
"documentation": "http://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html",
"methods": ["PUT", "POST"],
"url": {
"path": "/{index}",
"paths": ["/{index}"],
"parts": {
"index": {
"type" : "string",
"required" : true,
"description" : "The name of the index"
}
},
"params": {
"timeout": {
"type" : "time",
"description" : "Explicit operation timeout"
}
}
},
"body": {
"description" : "The configuration for the index (`settings` and `mappings`)"
}
}
}
The specification contains:
- The name of the API (
indices.create
), which usually corresponds to the client calls - Link to the documentation at http://elastic.co
- List of HTTP methods for the endpoint
- URL specification: path, parts, parameters
- Whether body is allowed for the endpoint or not and its description
The methods
and url.paths
elements list all possible HTTP methods and URLs for the endpoint;
it is the responsibility of the developer to use this information for a sensible API on the target platform.
License
This software is licensed under the Apache License, version 2 ("ALv2").