Product release

Elasticsearch 2.1.1, 2.0.2, and 1.7.4 released

Today we are pleased to announce bug fix releases of Elasticsearch 2.1.1 based on Lucene 5.3.1, Elasticsearch 2.0.2, and Elasticsearch 1.7.4, all of which are available now on Found.

Elasticsearch 2.1.1 contains a number of important bug fixes. Where possible, these have been backported to Elasticsearch 2.0.2. All users of Elasticsearch 2 are advised to upgrade to Elasticsearch 2.1.1 if possible, or at least to Elasticsearch 2.0.2.

Latest stable release:

Bug fixes in 2.0:

Bug fixes in 1.7.4:

Elasticsearch 1.7.4 contains a few improvements to delayed shard allocation that will make recovery after node restarts more efficient.

The most important changes in 2.1.1 and 2.0.2 are as follows:

Translog corruption when disk full

The transaction log could be corrupted when writing to disk fails for some reason such as a full disk. When Elasticsearch detects the corruption it will fail the shard and recover to a new node. However, if replication is disabled — a configuration that we advise against — then this bug could lead to data loss. ( #15420, backported to 2.0.2)

We have also removed a spurious log message indicating that a temporary transaction log file could not be deleted (#14872, backported to 2.0.2) and another reporting failures to write to a transaction log which has already been closed (#15012, backported to 2.0.2).

Preventing conflicting mappings

Fields with the same name in different types in the same index must have the same mapping — conflicting mappings are not allowed. Unfortunately, when using dynamic mappings, only the first attempt to add a conflicting field would be rejected. Subsequent attempts could succeed. This was a serious bug as the conflicting mappings prevent shards from the index from being relocated to a different node or from being recovered after a restart. (#14896, NOT backported to 2.0.2). This change also fixes an issue that prevented users of field datatypes provided by plugins from upgrading, e.g. _size, murmur3, attachment.

NullPointerException during indexing

A number of users of 2.1.0 reported NullPointerExceptions while indexing, which turned out to be caused by a failure to clear an empty shard request cache during refresh. This has been fixed in #15202 and in LUCENE-6918.

Children aggregation missing documents

The children aggregation only evaluated segments that contained matching parent documents, which meant that it might miss child documents that existed in other segments and so report incorrect results. (#15457, backported to 2.0.2)

Tribe node configuration

A bug was introduced in 2.1.0 that caused Tribe nodes to require their own configuration directory for each cluster, instead of accepting their settings from the main configuration. (#15300)

Index and alias name conflicts

A bug in 1.x allowed an index template to create an alias with the same name as an index (fixed in #15184). This is an illegal state that prevents users from upgrading to 2.x. Any index that has an alias with the same name must be deleted before upgrading. However, the exception thrown in 2.x was incomprehensible and has been replaced with a more meaningful message. ( #14842, backported to 2.0.2)

Performance regression after deleting an index

In 2.1.0, creating an index, indexing some docs, deleting the index, then creating an index with the same name led to a performance regression on further indexing requests. (#15251)

Watcher email alerts

A classloader bug which sometimes prevented Watcher from sending emails has been fixed in both 2.1.1 and 2.0.2.

Conclusion

Please download Elasticsearch 2.1.1, try it out, and let us know what you think on Twitter (@elastic) or in our forum. You can report any problems on the GitHub issues page.