From 8cdff1cf706867758b8b7c4dbb4b2f0c5339c87f Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Thu, 9 Apr 2015 13:11:59 +0100 Subject: [PATCH] Fix bug in trace repository When reverse==false we have to be careful to remove the right element when capacity is reached. --- .../actuate/trace/InMemoryTraceRepository.java | 2 +- .../trace/InMemoryTraceRepositoryTests.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/trace/InMemoryTraceRepository.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/trace/InMemoryTraceRepository.java index f2f797e06ca..4758b369b4d 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/trace/InMemoryTraceRepository.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/trace/InMemoryTraceRepository.java @@ -63,7 +63,7 @@ public class InMemoryTraceRepository implements TraceRepository { Trace trace = new Trace(new Date(), map); synchronized (this.traces) { while (this.traces.size() >= this.capacity) { - this.traces.remove(this.capacity - 1); + this.traces.remove(this.reverse ? this.capacity - 1 : 0); } if (this.reverse) { this.traces.add(0, trace); diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/trace/InMemoryTraceRepositoryTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/trace/InMemoryTraceRepositoryTests.java index cb67cc09190..c615a1ecef8 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/trace/InMemoryTraceRepositoryTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/trace/InMemoryTraceRepositoryTests.java @@ -41,6 +41,20 @@ public class InMemoryTraceRepositoryTests { List traces = this.repository.findAll(); assertEquals(2, traces.size()); assertEquals("bar", traces.get(0).getInfo().get("bar")); + assertEquals("foo", traces.get(1).getInfo().get("bar")); + } + + @Test + public void reverseFalse() { + this.repository.setReverse(false); + this.repository.setCapacity(2); + this.repository.add(Collections. singletonMap("foo", "bar")); + this.repository.add(Collections. singletonMap("bar", "foo")); + this.repository.add(Collections. singletonMap("bar", "bar")); + List traces = this.repository.findAll(); + assertEquals(2, traces.size()); + assertEquals("bar", traces.get(1).getInfo().get("bar")); + assertEquals("foo", traces.get(0).getInfo().get("bar")); } }