From fa35bb8f97dca18fec712a602638f16a1e010811 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 5 Sep 2022 17:06:40 +0100 Subject: [PATCH] fix SettingsImpl to remove hardcoded checkpointRetry (#14487) (#14494) SettingsImpl.checkpointRetry is hardcoded to false in builder. Prior to this change, users are unable to set queue.checkpoint.retry to true to enable Windows retry on PQ AccessDeniedException in checkpoint. Fixed: #14486 (cherry picked from commit 3a7862110994547778cf01277db83d383ada7d28) Co-authored-by: kaisecheng <69120390+kaisecheng@users.noreply.github.com> --- .../org/logstash/ackedqueue/SettingsImpl.java | 12 +++---- .../logstash/ackedqueue/SettingsImplTest.java | 32 +++++++++++++++++++ 2 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 logstash-core/src/test/java/org/logstash/ackedqueue/SettingsImplTest.java diff --git a/logstash-core/src/main/java/org/logstash/ackedqueue/SettingsImpl.java b/logstash-core/src/main/java/org/logstash/ackedqueue/SettingsImpl.java index 417bc81a8..dd2300188 100644 --- a/logstash-core/src/main/java/org/logstash/ackedqueue/SettingsImpl.java +++ b/logstash-core/src/main/java/org/logstash/ackedqueue/SettingsImpl.java @@ -169,7 +169,7 @@ public class SettingsImpl implements Settings { public Builder elementClass(final Class elementClass) { return new BuilderImpl( this.dirForFiles, elementClass, this.capacity, this.queueMaxBytes, this.maxUnread, - this.checkpointMaxAcks, this.checkpointMaxWrites, false + this.checkpointMaxAcks, this.checkpointMaxWrites, this.checkpointRetry ); } @@ -177,7 +177,7 @@ public class SettingsImpl implements Settings { public Builder capacity(final int capacity) { return new BuilderImpl( this.dirForFiles, this.elementClass, capacity, this.queueMaxBytes, this.maxUnread, - this.checkpointMaxAcks, this.checkpointMaxWrites, false + this.checkpointMaxAcks, this.checkpointMaxWrites, this.checkpointRetry ); } @@ -185,7 +185,7 @@ public class SettingsImpl implements Settings { public Builder queueMaxBytes(final long size) { return new BuilderImpl( this.dirForFiles, this.elementClass, this.capacity, size, this.maxUnread, - this.checkpointMaxAcks, this.checkpointMaxWrites, false + this.checkpointMaxAcks, this.checkpointMaxWrites, this.checkpointRetry ); } @@ -194,7 +194,7 @@ public class SettingsImpl implements Settings { return new BuilderImpl( this.dirForFiles, this.elementClass, this.capacity, this.queueMaxBytes, maxUnread, this.checkpointMaxAcks, - this.checkpointMaxWrites, false + this.checkpointMaxWrites, this.checkpointRetry ); } @@ -203,7 +203,7 @@ public class SettingsImpl implements Settings { return new BuilderImpl( this.dirForFiles, this.elementClass, this.capacity, this.queueMaxBytes, this.maxUnread, checkpointMaxAcks, - this.checkpointMaxWrites, false + this.checkpointMaxWrites, this.checkpointRetry ); } @@ -211,7 +211,7 @@ public class SettingsImpl implements Settings { public Builder checkpointMaxWrites(final int checkpointMaxWrites) { return new BuilderImpl( this.dirForFiles, this.elementClass, this.capacity, this.queueMaxBytes, - this.maxUnread, this.checkpointMaxAcks, checkpointMaxWrites, false + this.maxUnread, this.checkpointMaxAcks, checkpointMaxWrites, this.checkpointRetry ); } diff --git a/logstash-core/src/test/java/org/logstash/ackedqueue/SettingsImplTest.java b/logstash-core/src/test/java/org/logstash/ackedqueue/SettingsImplTest.java new file mode 100644 index 000000000..708231a30 --- /dev/null +++ b/logstash-core/src/test/java/org/logstash/ackedqueue/SettingsImplTest.java @@ -0,0 +1,32 @@ +package org.logstash.ackedqueue; + +import junit.framework.TestCase; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class SettingsImplTest { + + @Test + public void verifyConfiguredValues() { + Settings settings = SettingsImpl.fileSettingsBuilder("PATH/TO/Q") + .capacity(10) + .maxUnread(1024) + .queueMaxBytes(2147483647) + .checkpointMaxAcks(1) + .checkpointMaxWrites(1) + .checkpointRetry(true) + .elementClass(StringElement.class) + .build(); + + assertEquals(settings.getDirPath(), "PATH/TO/Q"); + assertEquals(settings.getCapacity(), 10); + assertEquals(settings.getMaxUnread(), 1024); + assertEquals(settings.getQueueMaxBytes(), 2147483647); + assertEquals(settings.getCheckpointMaxAcks(), 1); + assertEquals(settings.getCheckpointMaxWrites(), 1); + assertTrue(settings.getCheckpointRetry()); + assertEquals(settings.getElementClass(), StringElement.class); + } +} \ No newline at end of file