You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by lq...@apache.org on 2015/10/16 12:09:09 UTC
svn commit: r1708943 - in /qpid/java/trunk/broker-core/src:
main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
test/java/org/apache/qpid/server/virtualhost/AbstractVirtualHostTest.java
Author: lquack
Date: Fri Oct 16 10:09:09 2015
New Revision: 1708943
URL: http://svn.apache.org/viewvc?rev=1708943&view=rev
Log:
QPID-6283: [Java Broker] Close possibility for DivByZero in FileSystemSizeChecker
Addressed review comments from Keith Wall.
This closes the possibility of a DivByZero in the unlucky case where the store gets deleted just before the call to getTotalSpace()
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AbstractVirtualHostTest.java
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1708943&r1=1708942&r2=1708943&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Fri Oct 16 10:09:09 2015
@@ -2086,13 +2086,14 @@ public abstract class AbstractVirtualHos
@Override
public void execute()
{
- if (!_fileSystem.exists())
+ long totalSpace = _fileSystem.getTotalSpace();
+ long freeSpace = _fileSystem.getFreeSpace();
+
+ if (totalSpace == 0)
{
- _logger.warn("Cannot check file system for disk space because store path '{}' does not exist", _fileSystem.getPath());
+ _logger.warn("Cannot check file system for disk space because store path '{}' is not valid", _fileSystem.getPath());
return;
}
- long totalSpace = _fileSystem.getTotalSpace();
- long freeSpace = _fileSystem.getFreeSpace();
long usagePercent = (100l * (totalSpace - freeSpace)) / totalSpace;
Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AbstractVirtualHostTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AbstractVirtualHostTest.java?rev=1708943&r1=1708942&r2=1708943&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AbstractVirtualHostTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AbstractVirtualHostTest.java Fri Oct 16 10:09:09 2015
@@ -281,9 +281,9 @@ public class AbstractVirtualHostTest ext
File nonExistingFile = TestFileUtils.createTempFile(this);
FileUtils.delete(nonExistingFile, false);
when(store.getStoreLocationAsFile()).thenReturn(nonExistingFile);
- setTestSystemProperty("virtualhost.housekeepingCheckPeriod", "1");
+ setTestSystemProperty("virtualhost.housekeepingCheckPeriod", "100");
- AbstractVirtualHost host = new AbstractVirtualHost(attributes, _node)
+ final AbstractVirtualHost host = new AbstractVirtualHost(attributes, _node)
{
@Override
protected MessageStore createMessageStore()
@@ -292,18 +292,21 @@ public class AbstractVirtualHostTest ext
}
};
- final CountDownLatch warningReceivedLatch = new CountDownLatch(1);
String loggerName = AbstractVirtualHost.class.getName();
- Level logLevel = Level.WARN;
- watchForLogMessage(warningReceivedLatch, loggerName, logLevel);
- host.open();
- assertTrue("Did not receive warning", warningReceivedLatch.await(2, TimeUnit.SECONDS));
+ assertActionProducesLogMessage(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ host.open();
+ }
+ }, loggerName, Level.WARN, "Cannot check file system for disk space");
}
- private void watchForLogMessage(final CountDownLatch warningReceivedLatch,
- final String loggerName,
- final Level logLevel)
+ private void assertActionProducesLogMessage(final Runnable action, final String loggerName,
+ final Level logLevel, final String message) throws Exception
{
+ final CountDownLatch logMessageReceivedLatch = new CountDownLatch(1);
ch.qos.logback.classic.Logger rootLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
ListAppender<ILoggingEvent> appender = new ListAppender<>();
appender.addFilter(new Filter<ILoggingEvent>()
@@ -311,14 +314,18 @@ public class AbstractVirtualHostTest ext
@Override
public FilterReply decide(final ILoggingEvent event)
{
- if (event.getLoggerName().equals(loggerName) && event.getLevel().equals(logLevel))
+ if (event.getLoggerName().equals(loggerName) && event.getLevel().equals(logLevel) && event.getFormattedMessage().contains(message))
{
- warningReceivedLatch.countDown();
+ logMessageReceivedLatch.countDown();
}
return FilterReply.NEUTRAL;
}
});
+ appender.setContext(rootLogger.getLoggerContext());
appender.start();
rootLogger.addAppender(appender);
+
+ action.run();
+ assertTrue("Did not receive expected log message", logMessageReceivedLatch.await(2, TimeUnit.SECONDS));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org