diff --git a/activemq-core/src/main/java/org/apache/activemq/util/DefaultIOExceptionHandler.java b/activemq-core/src/main/java/org/apache/activemq/util/DefaultIOExceptionHandler.java index e4d8d02e3e..8a37b648c2 100644 --- a/activemq-core/src/main/java/org/apache/activemq/util/DefaultIOExceptionHandler.java +++ b/activemq-core/src/main/java/org/apache/activemq/util/DefaultIOExceptionHandler.java @@ -28,12 +28,25 @@ public class DefaultIOExceptionHandler implements IOExceptionHandler { .getLog(DefaultIOExceptionHandler.class); private BrokerService broker; private boolean ignoreAllErrors = false; + private boolean ignoreNoSpaceErrors = true; + private String noSpaceMessage = "space"; public void handle(IOException exception) { if (ignoreAllErrors) { LOG.info("Ignoring IO exception, " + exception, exception); return; } + + if (ignoreNoSpaceErrors) { + Throwable cause = exception; + while (cause != null && cause instanceof IOException) { + if (cause.getMessage().contains(noSpaceMessage)) { + LOG.info("Ignoring no space left exception, " + exception, exception); + return; + } + cause = cause.getCause(); + } + } LOG.info("Stopping the broker due to IO exception, " + exception, exception); new Thread() { @@ -59,4 +72,20 @@ public class DefaultIOExceptionHandler implements IOExceptionHandler { this.ignoreAllErrors = ignoreAllErrors; } + public boolean isIgnoreNoSpaceErrors() { + return ignoreNoSpaceErrors; + } + + public void setIgnoreNoSpaceErrors(boolean ignoreNoSpaceErrors) { + this.ignoreNoSpaceErrors = ignoreNoSpaceErrors; + } + + public String getNoSpaceMessage() { + return noSpaceMessage; + } + + public void setNoSpaceMessage(String noSpaceMessage) { + this.noSpaceMessage = noSpaceMessage; + } + }