OpenSearch/x-pack
Lee Hinman f732003370
[7.x] Fix negative limiting with fewer PARTIAL snapshots than minimum required (#58563) (#58569)
In SLM retention, when a minimum number of snapshots is required for retention, we prefer to remove
the oldest snapshots first. To perform this, we limit one of the streams, in a rare case this can
cause:

```
[mynode] error during snapshot retention task
java.lang.IllegalArgumentException: -5
	at java.util.stream.ReferencePipeline.limit(ReferencePipeline.java:469) ~[?:?]
	at org.elasticsearch.xpack.core.slm.SnapshotRetentionConfiguration.lambda$getSnapshotDeletionPredicate$6(SnapshotRetentionConfiguration.java:195) ~[?:?]
	at org.elasticsearch.xpack.slm.SnapshotRetentionTask.snapshotEligibleForDeletion(SnapshotRetentionTask.java:245) ~[?:?]
	at org.elasticsearch.xpack.slm.SnapshotRetentionTask$1.lambda$onResponse$0(SnapshotRetentionTask.java:163) ~[?:?]
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176) ~[?:?]
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1624) ~[?:?]
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
```

When certain criteria are met. This commit fixes the negative limiting with `Math.max(0, ...)` and
adds a unit test for the behavior.

Resolves #58515
2020-06-25 14:16:34 -06:00
..
dev-tools
docs [DOCS] Rename kibana user to kibana_system (#58423) 2020-06-23 14:25:09 -07:00
license-tools Fix deprecated property usage in archive tasks (#58269) (#58308) 2020-06-23 09:11:46 +02:00
plugin [7.x] Fix negative limiting with fewer PARTIAL snapshots than minimum required (#58563) (#58569) 2020-06-25 14:16:34 -06:00
qa Introduce node.roles setting (#58512) 2020-06-25 14:14:51 -04:00
snapshot-tool Remove deprecated usage of testCompile configuration (#57921) (#58083) 2020-06-14 22:30:44 +02:00
test Remove deprecated usage of testCompile configuration (#57921) (#58083) 2020-06-14 22:30:44 +02:00
transport-client Remove deprecated usage of testCompile configuration (#57921) (#58083) 2020-06-14 22:30:44 +02:00
NOTICE.txt
README.md
build.gradle Include vendored code notices in distribution notice files (#57017) (#57569) 2020-06-04 10:34:24 -07:00

README.md

Elastic License Functionality

This directory tree contains files subject to the Elastic License. The files subject to the Elastic License are grouped in this directory to clearly separate them from files licensed under the Apache License 2.0.