Author: kwall
Date: Tue Nov 18 09:42:44 2014
New Revision: 1640292
URL: http://svn.apache.org/r1640292
Log:
QPID-6222: [Java Broker] Shutdown the replica virtualhostnode if it runs out of
disk space
This resolves a defect left by r1638052
Modified:
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
Modified:
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java?rev=1640292&r1=1640291&r2=1640292&view=diff
==============================================================================
---
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
(original)
+++
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
Tue Nov 18 09:42:44 2014
@@ -57,10 +57,12 @@ import org.apache.log4j.Logger;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.configuration.updater.Task;
+import org.apache.qpid.server.logging.messages.BrokerMessages;
import org.apache.qpid.server.logging.messages.ConfigStoreMessages;
import org.apache.qpid.server.logging.messages.HighAvailabilityMessages;
import org.apache.qpid.server.logging.subjects.BDBHAVirtualHostNodeLogSubject;
import org.apache.qpid.server.logging.subjects.GroupLogSubject;
+import org.apache.qpid.server.model.AbstractConfiguredObject;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.BrokerModel;
import org.apache.qpid.server.model.ConfiguredObject;
@@ -70,6 +72,7 @@ import org.apache.qpid.server.model.Mana
import org.apache.qpid.server.model.RemoteReplicationNode;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.StateTransition;
+import org.apache.qpid.server.model.SystemConfig;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.store.ConfiguredObjectRecord;
@@ -103,6 +106,7 @@ public class BDBHAVirtualHostNodeImpl ex
private final AtomicReference<ReplicatedEnvironmentFacade>
_environmentFacade = new AtomicReference<>();
private final AtomicReference<NodeRole> _lastRole = new
AtomicReference<>(NodeRole.DETACHED);
+ private final SystemConfig _systemConfig;
private BDBHAVirtualHostNodeLogSubject _virtualHostNodeLogSubject;
private GroupLogSubject _groupLogSubject;
private String _virtualHostNodePrincipalName;
@@ -141,6 +145,7 @@ public class BDBHAVirtualHostNodeImpl ex
public BDBHAVirtualHostNodeImpl(Map<String, Object> attributes, Broker<?>
broker)
{
super(broker, attributes);
+ _systemConfig = broker.getParent(SystemConfig.class);
}
@Override
@@ -1132,10 +1137,19 @@ public class BDBHAVirtualHostNodeImpl ex
{
if (e instanceof LogWriteException)
{
- // something wrong with the disk (for example, no space left
on device)
- // broker and store cannot operate
- // TODO: VHN can be transitioned into ERRORED state
- throw new ServerScopedRuntimeException("Cannot save data into
the store", e);
+ // TODO: Used when the node is a replica and it runs out of
disk. Currently we cause the whole Broker
+ // to stop as that is what happens when a master runs out of
disk. In the long term, we should
+ // close the node / transition to actual state ERROR.
+
+ try
+ {
+ close();
+ }
+ finally
+ {
+
_systemConfig.getEventLogger().message(BrokerMessages.FATAL_ERROR(e.getMessage()));
+ _systemConfig.getBrokerShutdownProvider().shutdown(1);
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]