[[release-notes-8.7.1]]
== {es} version 8.7.1

Also see <<breaking-changes-8.7,Breaking changes in 8.7>>.

[[known-issues-8.7.1]]
[float]
=== Known issues

* `ArrayIndexOutOfBoundsException` may be thrown while creating a transport message
+
Certain sequences of writes and seeks to the buffer used to create a transport
message may encounter an alignment bug which results in an
`ArrayIndexOutOfBoundsException`, preventing the transport message from being
sent.
+
This issue is fixed in 8.8.0.

include::8.6.0.asciidoc[tag=reconciliation-imbalance-known-issue]

// tag::no-preventive-gc-issue[]
* High Memory Pressure due to a GC JVM setting change
+
This version of Elasticsearch is bundled with JDK 20. In JDK 20
https://bugs.openjdk.org/browse/JDK-8293861[Preventive GC is disabled by default].
This may lead to increased memory pressure and an increased number of CircuitBreakerExceptions when retrieving large
documents under some load patterns. (issue: {es-issue}99592[#99592])
+
If this change affects your use of Elasticsearch, consider re-enabling the previous behaviour
by adding the JVM arguments `-XX:+UnlockDiagnosticVMOptions -XX:+G1UsePreventiveGC` (reference:
https://www.oracle.com/java/technologies/javase/20-relnote-issues.html#JDK-8293861[JDK 20 release notes]). It is
important to note that this workaround is temporary and works only with JDK 20, which is bundled with Elasticsearch up
to version 8.10.2 inclusive. Successive versions are bundling JDK 21+, where this setting
https://bugs.openjdk.org/browse/JDK-8297639[has been removed]. Specifying those JVM arguments will prevent the
JVM (and therefore Elasticsearch Nodes) from starting.
// end::no-preventive-gc-issue[]

[[bug-8.7.1]]
[float]
=== Bug fixes

Allocation::
* Compute balancer threshold based on max shard size {es-pull}95090[#95090]
* Use applied state after `DiskThresholdMonitor` reroute {es-pull}94916[#94916]
* Weaken node-replacement decider during reconciliation {es-pull}95070[#95070]

ILM+SLM::
* Downsample ILM action should skip non-time-series indices {es-pull}94835[#94835] (issue: {es-issue}93123[#93123])

Ingest Node::
* Fix async enrich execution prematurely releases enrich policy lock {es-pull}94702[#94702] (issue: {es-issue}94690[#94690])

Network::
* Fix off-by-one bug in `RecyclerBytesStreamOutput` {es-pull}95036[#95036]

Recovery::
* Async creation of `IndexShard` instances {es-pull}94545[#94545]

Search::
* Return 200 when closing empty PIT or scroll {es-pull}94708[#94708]

Stats::
* Fix _cluster/stats `.nodes.fs` deduplication {es-pull}94798[#94798] (issue: {es-issue}24472[#24472])
* Fix `FsInfo` device deduplication {es-pull}94744[#94744]

[[enhancement-8.7.1]]
[float]
=== Enhancements

Authorization::
* Reuse `FieldPermissionsCache` in Role parsing {es-pull}94931[#94931]

[[upgrade-8.7.1]]
[float]
=== Upgrades

Packaging::
* Upgrade bundled JDK to Java 20 {es-pull}94600[#94600]


