[[release-notes]]
== Release Notes

[float]
[[version-compatibility]]
=== Version Compatibility

Marvel {marvelversion} is compatible with:

* Elasticsearch {esversion}
* License {licenseversion}
* Shield {shieldversion}
* Kibana {kibanaversion}

[float]
[[upgrading]]
=== Upgrading Marvel
When upgrading Marvel, you must upgrade *every node in the cluster*. If you're using a monitoring 
cluster, upgrade the nodes in the monitoring cluster before upgrading your production cluster. You 
do not need to fully shut down your production or monitoring clusters to perform the upgrade, you 
can perform a rolling upgrade. 

To perform a rolling upgrade of Marvel:

. Disable shard reallocation. While this is optional, it enables a faster startup after cluster 
shutdown.  If you don't disable shard reallocation, the nodes immediately start trying to 
replicate shards to each other on startup and spend a lot of time on wasted I/O. With shard 
reallocation disabled, the nodes join the cluster with their indices intact and do not attempt to 
rebalance. After startup is complete, you can turn reallocation back on.
+
[source,sh]
--------------------------------------------------
curl -XPUT localhost:9200/_cluster/settings -d '{
  "transient" : {
    "cluster.routing.allocation.enable" : "none"
  }
}'
--------------------------------------------------

. Upgrade each node, one at a time:

.. Stop Elasticsearch.
.. Remove the old version of the Marvel plugin:
+
[source,sh]
--------------------------------------------------
bin/plugin -r marvel
--------------------------------------------------

.. Install the latest version of the Marvel plugin:
+
[source,sh]
--------------------------------------------------
bin/plugin -i elasticsearch/marvel/latest
--------------------------------------------------

.. Start Elasticsearch and confirm that the node rejoins the cluster and that there are no errors 
in the logs.

. When you've upgraded all of the nodes in the cluster, reenable shard allocation:
+
[source,sh]
--------------------------------------------------
curl -XPUT localhost:9200/_cluster/settings -d '{
  "transient" : {
      "cluster.routing.allocation.enable" : "all"
  }
}'
--------------------------------------------------

[float]
[[change_list]]
=== Change List

[float]
==== 2.0.0-beta2

Marvel versions are now aligned with Elasticsearch version.

- Agent:
  * Added: add license expiration support to stop collecting data 7 days
  after license expiration
  * Added: add integration tests
  * Added: add support to index cluster license information
  * Added: add support to collect node statistics
  * Added: add support to collect index recoveries
  * Added: add support to collect index level statistics
  * Added: add support to collect cluster statistics
  * Added: add support to collect cluster state
  * Improved: update project to work with Elasticsearch 2.x

- Monitoring UI:
  * TODO

- Sense:
  * Sense has been removed from Marvel starting version 2.x and is now shipped as
  a Kibana application

[float]
==== 1.3.1

- Agent:
  * Added: add timeouts to better deal with unresponsive ES nodes / hiccups.
  * Added: Allow SSL hostname verification to be disabled.
  * Fixed: Node failed to start if HTTP is disabled.
  * Fixed: Potential NPE if HTTP server didn't start fast enough.
  * Fixed: `marvel.agent.indices` wasn't dynamically updatable when using a single value or a 
  comma separated list.
  * Fixed: unused shield SSL settings caused errors during start up.

- Monitoring UI:
  * Fixed: Upgraded Kibana3 to latest version, fixing a wrap around issue in Safari.

- Sense:
	* Added: Cluster health's level url parameter.
  * Added: _recovery API.
 	* Fixed: trailing space after URL broke request parsing.
  * Added: _search_shards API.

[float]
==== 1.3.0

- Agent:
  * Added:    support for shipping over https.
  * Removed:  support for optional shard level stats due to an incompatible change in ES 1.4.
  * Fixed:    an issue causing a tribe node (ES 1.4.0) not to initialize when Marvel is installed.
  * Improved: resiliency and error checking around the marvel index template (both checking for it and adding it).
  * Improved: logging upon error, supressing repreated logs.
  * Added:    Automcally detect the local node's port when using not default Marvel settings (previously was always 9200)
  * Improved: Change _bulk export command to set the index name in the url param. This is usefull when `rest.action.multi.allow_explicit_index` is set to false.

- Monitoring UI
  * Added: charts for new circuit breakers introduce with ES 1.4.0
  * Added: a chart to plot circuit break limit.
  * Added: a charts for query cache.
  * Added: charts for index throttling.
  * Added: charts to expose memory usage of the index writer and version map.
  * Fixed: Network Transport Bytes Received chart actually shows bytes sent
  * Fixed: Node Stats dashboard missed some thread pools.

- Sense:
  * Added: a settings to allow disabling mappings and/or indices autocomplete. This is usefull for extremly large deployments where parsing by the browser is unrealistic.
  * Added: Custer Reroute API.
  * Added: Get Field Mappings API,
  * Fixed: Url auto complete failed with completing fully qualified urls (i.e. with protocol and host).
  * Added: Query Cache parmaters to the Search API.
  * Added: Analyze API.
  * Added: Validate Query API.
  * Fixed: include_in_parent and include_in_root is missing for nested type mapping.
  * Added: Put Percolator API.
  * Fixed: Range filter template to use gt, gte, lt and lte.
  * Added: cluster.routing.allocation.* settings
  * Added: weight param to the Function Score query.
  * Added: Flush API.
  * Added: show_term_doc_count_error parameter to the Terms Aggregation.
  * Added: Update API
  * Added: _geo_distance as a sort option.
  * Added: Updated the Significant Terms aggregation to 1.4.0 features.
  * Added: metadata fields to the Mapping API.
  * Added: Get Index API.
  * Added: Scripted Metric Aggregation.
  * Added: simple_query_string query.
  * Added: Updated the More Like This query to 1.4.0 features.
  * Added: min_childeren, max_children options to the has_child query and dilter.
  * Added: Updated execution hint options in terms and significant terms aggs.
  * Added: transform section of Mappings API.
  * Added: indexed scripts and templates.
  * Added: Geo Bounds aggregation.
  * Added: Top Hits aggregation.
  * Added: collect_mode option the Terms aggregation.
  * Added: Percentiles Rank aggregation.
  * Added: Disk Threshold Allocator settings.
  * Fixed: Exists filter auto complete.
  * Fixed: Snapshot and Restore API failed to autocomplete repository settings.

[float]
==== 1.2.1
  - Fix a cluster state data shipping for cluster states larger than 16K (in `SMILE` format and without meta data).

[float]
==== 1.2.0
  - New Shard Allocation Dashboard.
  - Simplified navigation and dashboard customization.
  - Sense:
    * Update the KB to the ES 1.2.0 API, adding the following:
      * `_cat/plugins`
      * `_cat/segments`
      * `_search/template`
      * `_count`
      * `_snapshot`
      * Alias support for index creation.
      * Significant terms aggregation.
      * Percentiles aggregation.
      * Cardinality aggregation.
      * Time_zone keyword to date_histogram facet/aggregation.
    * Removed deprecated `custom_score` & `custom_boost_factor` from the 1.0 API.
    * Fixed a bug causing the query panel to loose focus after running a command.

  - Charts and Dashboards changes:
    * Added an information icon next to the status information of Cluster Summary panel. Hovering on it will show a
      short explanation of current status.
    * The indices stats table in the Overview dashboard now shows an information icon next to red and yellow indices.
      Hovering on it will show a short shard level summary.
    * Marvel's index template will now be automatically updated upon upgrade.
    * Added field data & filter cache eviction charts to Node Stats dashboard and Index Stats dashboard.
    * Added field data circuit breaker charts to Node Stats dashboard.
    * Added a registration & purchasing form.
    * Hidden indexes are now shown by default.
    * Default cluster pulse default time span to 7 days.
    * Fixed: Split brain detection algorithm didn't fire in some configurations.


  - `marvel.agent.exporter.es.host` configuration option now defaults to port 9200.

[float]
==== 1.1.1
  - Fixed: agent did not interpret timeout settings correctly, causing potential connectivity errors when shipping data.

[float]
==== 1.1.0
  - Improved Sense's autocomplete suggestions:
    * Added Snapshot & Restore
    * Added Aggregations
    * Added support for url query string parameters
    * Updated for breaking changes in Elasticsearch 1.0
  - Updated welcome splash screen.
  - Sense now uses the last used server when opened (previously used the hostname used to access it).
  - The agent's keep-alive thread is now stopped upon errors to reduce log noise. It will be restarted
    upon successful connection.
  - Improved error reporting for failures of items in the agent's bulk requests.
  - Index Statistics Dashboard: Indexing Rate Primaries chart was based on the wrong field.
  - Introduced `marvel.agent.shard_stats.enabled` to control exporting of shard level statistics. Defaults to `false`.
  - Changed agent's default sampling rate to 10s (was 5s)
  - Added a visual indication for the master node at the Nodes section of the Overview Dashboard
  - Node and Indices tables visually indicate stale data
  - Added error reporting to nodes and indices tables
  - Made the following agent settings changeable via the Cluster Update Settings API:
    * marvel.agent.interval  (also supports setting to -1 to disable exporting)
    * marvel.agent.exporter.es.hosts
    * marvel.agent.exporter.es.timeout
    * marvel.agent.shard_stats.enabled
    
[float]
==== 1.0.2
  - Kibana uses `window.location.protocol` (http or https) to make ES calls.
  - Added support for basic authentication when sending data from agent. See <<configuration>>.
  - Reduced DEBUG logging verbosity.

[float]
==== 1.0.1
  - fixed an issue with usage statistics report.
  - improve logging message when running on old Elasticsearch versions.
