You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ma...@apache.org on 2014/09/17 12:35:33 UTC
svn commit: r1625505 - in /qpid/trunk/qpid/java/broker-core/src:
main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
Author: macbean
Date: Wed Sep 17 10:35:33 2014
New Revision: 1625505
URL: http://svn.apache.org/r1625505
Log:
QPID-6095: [Java Broker] Deletion of an ERRORED JSON VHN with an invalid store path causes an exception
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java?rev=1625505&r1=1625504&r2=1625505&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java Wed Sep 17 10:35:33 2014
@@ -91,6 +91,7 @@ public class JsonFileConfigStore impleme
private String _name;
private FileLock _fileLock;
private String _configFileName;
+ private String _backupFileName;
private String _lockFileName;
private static final Module _module;
@@ -170,12 +171,14 @@ public class JsonFileConfigStore impleme
{
_directoryName = fileFromSettings.getParent();
_configFileName = fileFromSettings.getName();
+ _backupFileName = fileFromSettings.getName() + ".bak";
_lockFileName = fileFromSettings.getName() + ".lck";
}
else
{
_directoryName = configurationStoreSettings.getStorePath();
_configFileName = _name + ".json";
+ _backupFileName = _name + ".bak";
_lockFileName = _name + ".lck";
}
@@ -185,14 +188,21 @@ public class JsonFileConfigStore impleme
if(!fileExists(_configFileName))
{
- File newFile = new File(_directoryName, _configFileName);
- try
+ if(!fileExists(_backupFileName))
{
- _objectMapper.writeValue(newFile, Collections.emptyMap());
+ File newFile = new File(_directoryName, _configFileName);
+ try
+ {
+ _objectMapper.writeValue(newFile, Collections.emptyMap());
+ }
+ catch (IOException e)
+ {
+ throw new StoreException("Could not write configuration file " + newFile, e);
+ }
}
- catch (IOException e)
+ else
{
- throw new StoreException("Could not write configuration file " + newFile, e);
+ renameFile(_backupFileName, _configFileName);
}
}
}
@@ -390,8 +400,11 @@ public class JsonFileConfigStore impleme
File tmpFile = File.createTempFile("cfg","tmp", new File(_directoryName));
tmpFile.deleteOnExit();
_objectMapper.writeValue(tmpFile, data);
+ renameFile(_configFileName, _backupFileName);
renameFile(tmpFile.getName(),_configFileName);
tmpFile.delete();
+ File backupFile = new File(_directoryName, _backupFileName);
+ backupFile.delete();
}
catch (IOException e)
{
@@ -619,5 +632,4 @@ public class JsonFileConfigStore impleme
}
return map;
}
-
}
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java?rev=1625505&r1=1625504&r2=1625505&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java Wed Sep 17 10:35:33 2014
@@ -352,18 +352,25 @@ public class JsonFileConfigStoreTest ext
public void testStoreFileLifecycle()
{
File expectedJsonFile = new File(_storeLocation, _parent.getName() + ".json");
+ File expectedJsonFileBak = new File(_storeLocation, _parent.getName() + ".bak");
+ File expectedJsonFileLck = new File(_storeLocation, _parent.getName() + ".lck");
assertFalse("JSON store should not exist", expectedJsonFile.exists());
+ assertFalse("JSON backup should not exist", expectedJsonFileBak.exists());
+ assertFalse("JSON lock should not exist", expectedJsonFileLck.exists());
_store.openConfigurationStore(_parent, false);
assertTrue("JSON store should exist after open", expectedJsonFile.exists());
+ assertFalse("JSON backup should not exist after open", expectedJsonFileBak.exists());
+ assertTrue("JSON lock should exist", expectedJsonFileLck.exists());
_store.closeConfigurationStore();
assertTrue("JSON store should exist after close", expectedJsonFile.exists());
_store.onDelete(_parent);
assertFalse("JSON store should not exist after delete", expectedJsonFile.exists());
-
+ assertFalse("JSON backup should not exist after delete", expectedJsonFileBak.exists());
+ assertFalse("JSON lock should not exist after delete", expectedJsonFileLck.exists());
}
public void testCreatedNestedObjects() throws Exception
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org