Author: kwall
Date: Thu Jun 19 21:31:23 2014
New Revision: 1604036
URL: http://svn.apache.org/r1604036
Log:
QPID-5819: Make JsonFileConfigStore#close idempotent, like other DCS
implementations
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/AbstractDurableConfigurationStoreTestCase.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=1604036&r1=1604035&r2=1604036&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
Thu Jun 19 21:31:23 2014
@@ -564,17 +564,11 @@ public class JsonFileConfigStore impleme
{
releaseFileLock();
}
- catch (IOException e)
- {
- throw new StoreException("Failed to release lock", e);
- }
finally
{
- _fileLock = null;
_idsByType.clear();
_objectsById.clear();
}
-
}
@Override
@@ -588,13 +582,26 @@ public class JsonFileConfigStore impleme
}
}
- private void releaseFileLock() throws IOException
+ private void releaseFileLock()
{
- _fileLock.release();
- _fileLock.channel().close();
+ if (_fileLock != null)
+ {
+ try
+ {
+ _fileLock.release();
+ _fileLock.channel().close();
+ }
+ catch (IOException e)
+ {
+ throw new StoreException("Failed to release lock " +
_fileLock, e);
+ }
+ finally
+ {
+ _fileLock = null;
+ }
+ }
}
-
private static Map<String,Class<? extends ConfiguredObject>>
generateClassNameMap(final Model model,
final Class<? extends ConfiguredObject> clazz)
{
Modified:
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java?rev=1604036&r1=1604035&r2=1604036&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java
Thu Jun 19 21:31:23 2014
@@ -64,8 +64,6 @@ import org.apache.qpid.util.FileUtils;
public abstract class AbstractDurableConfigurationStoreTestCase extends
QpidTestCase
{
- private static final String EXCHANGE_NAME = "exchangeName";
-
private static final String EXCHANGE =
org.apache.qpid.server.model.Exchange.class.getSimpleName();
private static final String BINDING =
org.apache.qpid.server.model.Binding.class.getSimpleName();
private static final String QUEUE = Queue.class.getSimpleName();
@@ -139,6 +137,13 @@ public abstract class AbstractDurableCon
}
}
+ public void testCloseIsIdempotent() throws Exception
+ {
+ _configStore.closeConfigurationStore();
+ // Second close should be accepted without exception
+ _configStore.closeConfigurationStore();
+ }
+
public void testCreateExchange() throws Exception
{
ExchangeImpl exchange = createTestExchange();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]