diff --git a/Changelog.md b/Changelog.md
index 6809f2c..e03061c 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,3 +1,6 @@
+v.3.0.9
+ * fix bug of dead loop when get http 4xx error from Elasticsearch
+
v.3.0.8
* added enum values for update & delete
diff --git a/pom.xml b/pom.xml
index 10e2666..41fbec6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.agido
logback-elasticsearch-appender
- 3.0.8
+ 3.0.9
jar
Logback Elasticsearch Appender
diff --git a/src/main/java/com/agido/logback/elasticsearch/writer/ElasticsearchWriter.java b/src/main/java/com/agido/logback/elasticsearch/writer/ElasticsearchWriter.java
index 6914aac..6bcc661 100644
--- a/src/main/java/com/agido/logback/elasticsearch/writer/ElasticsearchWriter.java
+++ b/src/main/java/com/agido/logback/elasticsearch/writer/ElasticsearchWriter.java
@@ -83,6 +83,12 @@ public void sendData() throws IOException {
int rc = urlConnection.getResponseCode();
if (rc != 200) {
String data = slurpErrors(urlConnection);
+ if(rc >= 400 && rc < 500){
+ // no chance to recover form these errors and has to drop the log messages in order to avoid dead loop.
+ errorReporter.logInfo("Send queue cleared - drop log messages due to http 4xx error.");
+ sendBuffer.setLength(0);
+ bufferExceeded = false;
+ }
throw new IOException("Got response code [" + rc + "] from server with data " + data);
}
} finally {