You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2016/12/18 12:57:44 UTC
svn commit: r1774886 -
/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/
Author: orudyy
Date: Sun Dec 18 12:57:44 2016
New Revision: 1774886
URL: http://svn.apache.org/viewvc?rev=1774886&view=rev
Log:
QPID-7548: Remove responsibility from StoreUpgraderPhase to call next upgrader in a chain
Added:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/AbstractConfigurationStoreUpgraderAndRecoverer.java
Removed:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/NullUpgrader.java
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreUpgrader.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/GenericStoreUpgrader.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/NonNullUpgrader.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java
Added: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/AbstractConfigurationStoreUpgraderAndRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/AbstractConfigurationStoreUpgraderAndRecoverer.java?rev=1774886&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/AbstractConfigurationStoreUpgraderAndRecoverer.java (added)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/AbstractConfigurationStoreUpgraderAndRecoverer.java Sun Dec 18 12:57:44 2016
@@ -0,0 +1,70 @@
+package org.apache.qpid.server.store;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.util.Action;
+
+public class AbstractConfigurationStoreUpgraderAndRecoverer
+{
+ private final Map<String, StoreUpgraderPhase> _upgraders = new HashMap<>();
+
+ List<ConfiguredObjectRecord> upgrade(final DurableConfigurationStore store,
+ final List<ConfiguredObjectRecord> records,
+ final String rootCategory,
+ final String modelVersionAttributeName)
+ {
+ GenericStoreUpgrader upgrader = new GenericStoreUpgrader(rootCategory,
+ modelVersionAttributeName, store, _upgraders);
+ upgrader.upgrade(records);
+ return upgrader.getRecords();
+ }
+
+ void register(StoreUpgraderPhase upgrader)
+ {
+ _upgraders.put(upgrader.getFromVersion(), upgrader);
+ }
+
+ void applyRecursively(final ConfiguredObject<?> object, final RecursiveAction<ConfiguredObject<?>> action)
+ {
+ applyRecursively(object, action, new HashSet<ConfiguredObject<?>>());
+ }
+
+ void applyRecursively(final ConfiguredObject<?> object,
+ final RecursiveAction<ConfiguredObject<?>> action,
+ final HashSet<ConfiguredObject<?>> visited)
+ {
+ if(!visited.contains(object))
+ {
+ visited.add(object);
+ action.performAction(object);
+ if (action.applyToChildren(object))
+ {
+ for (Class<? extends ConfiguredObject> childClass : object.getModel().getChildTypes(object.getCategoryClass()))
+ {
+ Collection<? extends ConfiguredObject> children = object.getChildren(childClass);
+ if (children != null)
+ {
+ for (ConfiguredObject<?> child : children)
+ {
+ applyRecursively(child, action, visited);
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+
+ interface RecursiveAction<C> extends Action<C>
+ {
+ boolean applyToChildren(C object);
+ }
+
+
+}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java?rev=1774886&r1=1774885&r2=1774886&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java Sun Dec 18 12:57:44 2016
@@ -43,15 +43,13 @@ import org.apache.qpid.server.model.Cont
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.SystemConfig;
import org.apache.qpid.server.model.VirtualHostAlias;
-import org.apache.qpid.server.util.Action;
-public class BrokerStoreUpgraderAndRecoverer implements ContainerStoreUpgraderAndRecoverer<Broker>
+public class BrokerStoreUpgraderAndRecoverer extends AbstractConfigurationStoreUpgraderAndRecoverer implements ContainerStoreUpgraderAndRecoverer<Broker>
{
private static final Logger LOGGER = LoggerFactory.getLogger(BrokerStoreUpgraderAndRecoverer.class);
public static final String VIRTUALHOSTS = "virtualhosts";
private final SystemConfig<?> _systemConfig;
- private final Map<String, StoreUpgraderPhase> _upgraders = new HashMap<String, StoreUpgraderPhase>();
// Note: don't use externally defined constants in upgraders in case they change, the values here MUST stay the same
// no matter what changes are made to the code in the future
@@ -69,11 +67,6 @@ public class BrokerStoreUpgraderAndRecov
register(new Upgrader_6_0_to_6_1());
}
- private void register(StoreUpgraderPhase upgrader)
- {
- _upgraders.put(upgrader.getFromVersion(), upgrader);
- }
-
private static final class Upgrader_1_0_to_1_1 extends StoreUpgraderPhase
{
private Upgrader_1_0_to_1_1()
@@ -87,7 +80,7 @@ public class BrokerStoreUpgraderAndRecov
if (record.getType().equals("Broker"))
{
record = upgradeRootRecord(record);
- record = createVirtualHostsRecordsFromBrokerRecordForModel_1_x(record, this);
+ createVirtualHostsRecordsFromBrokerRecordForModel_1_x(record, this);
}
else if (record.getType().equals("VirtualHost") && record.getAttributes().containsKey("storeType"))
{
@@ -97,13 +90,11 @@ public class BrokerStoreUpgraderAndRecov
getUpdateMap().put(record.getId(), record);
}
- getNextUpgrader().configuredObject(record);
}
@Override
public void complete()
{
- getNextUpgrader().complete();
}
}
@@ -121,17 +112,13 @@ public class BrokerStoreUpgraderAndRecov
if (record.getType().equals("Broker"))
{
record = upgradeRootRecord(record);
- record = createVirtualHostsRecordsFromBrokerRecordForModel_1_x(record, this);
+ createVirtualHostsRecordsFromBrokerRecordForModel_1_x(record, this);
}
-
- getNextUpgrader().configuredObject(record);
-
}
@Override
public void complete()
{
- getNextUpgrader().complete();
}
}
@@ -165,17 +152,13 @@ public class BrokerStoreUpgraderAndRecov
else if (record.getType().equals("Broker"))
{
record = upgradeRootRecord(record);
- record = createVirtualHostsRecordsFromBrokerRecordForModel_1_x(record, this);
+ createVirtualHostsRecordsFromBrokerRecordForModel_1_x(record, this);
}
-
- getNextUpgrader().configuredObject(record);
-
}
@Override
public void complete()
{
- getNextUpgrader().complete();
}
}
@@ -215,17 +198,14 @@ public class BrokerStoreUpgraderAndRecov
else if (record.getType().equals("Broker"))
{
record = upgradeRootRecord(record);
- record = createVirtualHostsRecordsFromBrokerRecordForModel_1_x(record, this);
+ createVirtualHostsRecordsFromBrokerRecordForModel_1_x(record, this);
}
- getNextUpgrader().configuredObject(record);
-
}
@Override
public void complete()
{
- getNextUpgrader().complete();
}
}
@@ -255,18 +235,16 @@ public class BrokerStoreUpgraderAndRecov
}
else if (record.getType().equals("Broker"))
{
- record = upgradeRootRecord(record);
+ upgradeRootRecord(record);
}
else if("KeyStore".equals(record.getType()))
{
- record = upgradeKeyStoreRecordIfTypeTheSame(record, "FileKeyStore");
+ upgradeKeyStoreRecordIfTypeTheSame(record, "FileKeyStore");
}
else if("TrustStore".equals(record.getType()))
{
- record = upgradeKeyStoreRecordIfTypeTheSame(record, "FileTrustStore");
+ upgradeKeyStoreRecordIfTypeTheSame(record, "FileTrustStore");
}
-
- getNextUpgrader().configuredObject(record);
}
private ConfiguredObjectRecord upgradeKeyStoreRecordIfTypeTheSame(ConfiguredObjectRecord record, String expectedType)
@@ -311,13 +289,11 @@ public class BrokerStoreUpgraderAndRecov
attributes,
Collections.singletonMap("Port", parent.getId()));
getUpdateMap().put(record.getId(), record);
- getNextUpgrader().configuredObject(record);
}
@Override
public void complete()
{
- getNextUpgrader().complete();
}
}
@@ -377,7 +353,6 @@ public class BrokerStoreUpgraderAndRecov
getUpdateMap().put(record.getId(), record);
}
}
- getNextUpgrader().configuredObject(record);
}
private void addLogger(final ConfiguredObjectRecord record, String name, String type)
@@ -394,7 +369,6 @@ public class BrokerStoreUpgraderAndRecov
addNameValueFilter("Qpid", logger, LogLevel.INFO, "org.apache.qpid.*");
addNameValueFilter("Operational", logger, LogLevel.INFO, "qpid.message.*");
getUpdateMap().put(logger.getId(), logger);
- getNextUpgrader().configuredObject(logger);
}
private void addNameValueFilter(String inclusionRuleName,
@@ -415,8 +389,6 @@ public class BrokerStoreUpgraderAndRecov
Collections.singletonMap("BrokerLogger",
loggerRecord.getId()));
getUpdateMap().put(filterRecord.getId(), filterRecord);
- getNextUpgrader().configuredObject(filterRecord);
-
}
@Override
@@ -458,7 +430,6 @@ public class BrokerStoreUpgraderAndRecov
}
}
- getNextUpgrader().complete();
}
}
@@ -480,8 +451,6 @@ public class BrokerStoreUpgraderAndRecov
{
record = upgradeRootRecord(record);
_rootRecordId = record.getId();
-
- getNextUpgrader().configuredObject(record);
}
else if (record.getType().equals("TrustStore"))
{
@@ -505,10 +474,6 @@ public class BrokerStoreUpgraderAndRecov
{
getDeleteMap().put(record.getId(), record);
}
- else
- {
- getNextUpgrader().configuredObject(record);
- }
}
else if (record.getType().equals("AuthenticationProvider") && attributes.containsKey("preferencesproviders"))
{
@@ -517,17 +482,12 @@ public class BrokerStoreUpgraderAndRecov
updatedAttributes.remove("preferencesproviders");
record = new ConfiguredObjectRecordImpl(record.getId(), record.getType(), updatedAttributes, record.getParents());
getUpdateMap().put(record.getId(), record);
- getNextUpgrader().configuredObject(record);
}
else if (record.getType().equals("PreferencesProvider"))
{
// removing of f Preferences Provider record for non-JSON configuration store
getDeleteMap().put(record.getId(), record);
}
- else
- {
- getNextUpgrader().configuredObject(record);
- }
}
}
@@ -563,7 +523,6 @@ public class BrokerStoreUpgraderAndRecov
record = new ConfiguredObjectRecordImpl(record.getId(), record.getType(), updatedAttributes, record.getParents());
getUpdateMap().put(record.getId(), record);
}
- getNextUpgrader().configuredObject(record);
}
@Override
@@ -579,10 +538,8 @@ public class BrokerStoreUpgraderAndRecov
ConfiguredObjectRecord allowAllAclRecord =
new ConfiguredObjectRecordImpl(allowAllACLId, "AccessControlProvider", attrs, Collections.singletonMap("Broker", _rootRecordId));
getUpdateMap().put(allowAllAclRecord.getId(), allowAllAclRecord);
- getNextUpgrader().configuredObject(allowAllAclRecord);
}
- getNextUpgrader().complete();
}
}
@@ -934,46 +891,10 @@ public class BrokerStoreUpgraderAndRecov
return _systemConfig.getContainer(Broker.class);
}
- List<ConfiguredObjectRecord> upgrade(final DurableConfigurationStore store,
- final List<ConfiguredObjectRecord> records)
- {
- GenericStoreUpgrader upgrader = new GenericStoreUpgrader(Broker.class.getSimpleName(), Broker.MODEL_VERSION, store, _upgraders);
- upgrader.upgrade(records);
- return upgrader.getRecords();
- }
-
- private void applyRecursively(final ConfiguredObject<?> object, final RecursiveAction<ConfiguredObject<?>> action)
- {
- applyRecursively(object, action, new HashSet<ConfiguredObject<?>>());
- }
-
- private void applyRecursively(final ConfiguredObject<?> object,
- final RecursiveAction<ConfiguredObject<?>> action,
- final HashSet<ConfiguredObject<?>> visited)
- {
- if(!visited.contains(object))
- {
- visited.add(object);
- action.performAction(object);
- if (action.applyToChildren(object))
- {
- for (Class<? extends ConfiguredObject> childClass : object.getModel().getChildTypes(object.getCategoryClass()))
- {
- Collection<? extends ConfiguredObject> children = object.getChildren(childClass);
- if (children != null)
- {
- for (ConfiguredObject<?> child : children)
- {
- applyRecursively(child, action, visited);
- }
- }
- }
- }
- }
- }
- private interface RecursiveAction<C> extends Action<C>
+ public List<ConfiguredObjectRecord> upgrade(final DurableConfigurationStore dcs,
+ final List<ConfiguredObjectRecord> records)
{
- boolean applyToChildren(C object);
+ return upgrade(dcs, records, Broker.class.getSimpleName(), Broker.MODEL_VERSION);
}
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreUpgrader.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreUpgrader.java?rev=1774886&r1=1774885&r2=1774886&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreUpgrader.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreUpgrader.java Sun Dec 18 12:57:44 2016
@@ -29,8 +29,6 @@ public interface DurableConfigurationSto
void complete();
- void setNextUpgrader(DurableConfigurationStoreUpgrader upgrader);
-
Map<UUID, ConfiguredObjectRecord> getUpdatedRecords();
Map<UUID, ConfiguredObjectRecord> getDeletedRecords();
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/GenericStoreUpgrader.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/GenericStoreUpgrader.java?rev=1774886&r1=1774885&r2=1774886&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/GenericStoreUpgrader.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/GenericStoreUpgrader.java Sun Dec 18 12:57:44 2016
@@ -22,8 +22,10 @@ package org.apache.qpid.server.store;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.UUID;
import org.slf4j.Logger;
@@ -31,7 +33,6 @@ import org.slf4j.LoggerFactory;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.model.BrokerModel;
-import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler;
public class GenericStoreUpgrader
{
@@ -78,17 +79,27 @@ public class GenericStoreUpgrader
LOGGER.info(_rootCategory + " store has model version " + version + ". Number of record(s) " + _records.size());
}
- DurableConfigurationStoreUpgrader upgrader = buildUpgraderChain(version);
-
- for(ConfiguredObjectRecord record : _records.values())
+ Map<UUID, ConfiguredObjectRecord> updatedRecords = new HashMap<>();
+ Map<UUID, ConfiguredObjectRecord> records = new HashMap<>(_records);
+ for(DurableConfigurationStoreUpgrader upgrader: buildUpgraderList(version))
{
- upgrader.configuredObject(record);
- }
+ for(ConfiguredObjectRecord record : records.values())
+ {
+ upgrader.configuredObject(record);
+ }
+
+ upgrader.complete();
- upgrader.complete();
+ Set<UUID> deleted = upgrader.getDeletedRecords().keySet();
+ updatedRecords.putAll(upgrader.getUpdatedRecords());
+ updatedRecords.keySet().removeAll(deleted);
- Map<UUID, ConfiguredObjectRecord> deletedRecords = upgrader.getDeletedRecords();
- Map<UUID, ConfiguredObjectRecord> updatedRecords = upgrader.getUpdatedRecords();
+ records.keySet().removeAll(deleted);
+ records.putAll(updatedRecords);
+ }
+
+ Map<UUID, ConfiguredObjectRecord> deletedRecords = new HashMap<>(_records);
+ deletedRecords.keySet().removeAll(records.keySet());
if (LOGGER.isDebugEnabled())
{
@@ -104,9 +115,9 @@ public class GenericStoreUpgrader
_records.putAll(updatedRecords);
}
- private DurableConfigurationStoreUpgrader buildUpgraderChain(String version)
+ private List<DurableConfigurationStoreUpgrader> buildUpgraderList(String version)
{
- DurableConfigurationStoreUpgrader head = null;
+ List<DurableConfigurationStoreUpgrader> result = new LinkedList<>();
while(!BrokerModel.MODEL_VERSION.equals(version))
{
if (LOGGER.isDebugEnabled())
@@ -119,28 +130,10 @@ public class GenericStoreUpgrader
{
throw new IllegalConfigurationException("No phase upgrader for version " + version);
}
-
- if(head == null)
- {
- head = upgrader;
- }
- else
- {
- head.setNextUpgrader(upgrader);
- }
version = upgrader.getToVersion();
+ result.add(upgrader);
}
-
- if(head == null)
- {
- head = new NullUpgrader();
- }
- else
- {
- head.setNextUpgrader(new NullUpgrader());
- }
-
- return head;
+ return result;
}
private String getCurrentVersion()
@@ -155,14 +148,4 @@ public class GenericStoreUpgrader
return BrokerModel.MODEL_VERSION;
}
- private class RecordCollectionHandler implements ConfiguredObjectRecordHandler
- {
-
- @Override
- public void handle(final ConfiguredObjectRecord record)
- {
- _records.put(record.getId(), record);
- }
-
- }
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/NonNullUpgrader.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/NonNullUpgrader.java?rev=1774886&r1=1774885&r2=1774886&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/NonNullUpgrader.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/NonNullUpgrader.java Sun Dec 18 12:57:44 2016
@@ -24,34 +24,17 @@ import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
-public abstract class NonNullUpgrader implements DurableConfigurationStoreUpgrader
+abstract class NonNullUpgrader implements DurableConfigurationStoreUpgrader
{
- private DurableConfigurationStoreUpgrader _nextUpgrader;
- private final Map<UUID, ConfiguredObjectRecord> _updates = new HashMap<UUID, ConfiguredObjectRecord>();
- private final Map<UUID, ConfiguredObjectRecord> _deletes = new HashMap<UUID, ConfiguredObjectRecord>();
+ private final Map<UUID, ConfiguredObjectRecord> _updates = new HashMap<>();
+ private final Map<UUID, ConfiguredObjectRecord> _deletes = new HashMap<>();
- public final void setNextUpgrader(final DurableConfigurationStoreUpgrader upgrader)
- {
- if(_nextUpgrader == null)
- {
- _nextUpgrader = upgrader;
- }
- else
- {
- _nextUpgrader.setNextUpgrader(upgrader);
- }
- }
-
- protected DurableConfigurationStoreUpgrader getNextUpgrader()
- {
- return _nextUpgrader;
- }
-
- protected Map<UUID, ConfiguredObjectRecord> getUpdateMap()
+ Map<UUID, ConfiguredObjectRecord> getUpdateMap()
{
return _updates;
}
- protected Map<UUID, ConfiguredObjectRecord> getDeleteMap()
+
+ Map<UUID, ConfiguredObjectRecord> getDeleteMap()
{
return _deletes;
}
@@ -59,8 +42,7 @@ public abstract class NonNullUpgrader im
@Override
public final Map<UUID, ConfiguredObjectRecord> getUpdatedRecords()
{
- final Map<UUID, ConfiguredObjectRecord> updates = new HashMap<UUID, ConfiguredObjectRecord>(_updates);
- updates.putAll(_nextUpgrader.getUpdatedRecords());
+ final Map<UUID, ConfiguredObjectRecord> updates = new HashMap<>(_updates);
updates.keySet().removeAll(getDeletedRecords().keySet());
return updates;
}
@@ -68,8 +50,6 @@ public abstract class NonNullUpgrader im
@Override
public final Map<UUID, ConfiguredObjectRecord> getDeletedRecords()
{
- final Map<UUID, ConfiguredObjectRecord> deletes = new HashMap<UUID, ConfiguredObjectRecord>(_deletes);
- deletes.putAll(_nextUpgrader.getDeletedRecords());
- return deletes;
+ return new HashMap<>(_deletes);
}
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java?rev=1774886&r1=1774885&r2=1774886&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java Sun Dec 18 12:57:44 2016
@@ -21,10 +21,8 @@
package org.apache.qpid.server.store;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
@@ -46,13 +44,11 @@ import org.apache.qpid.server.model.Virt
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.queue.QueueArgumentsConverter;
import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler;
-import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.virtualhost.QueueManagingVirtualHost;
-public class VirtualHostStoreUpgraderAndRecoverer
+public class VirtualHostStoreUpgraderAndRecoverer extends AbstractConfigurationStoreUpgraderAndRecoverer
{
private final VirtualHostNode<?> _virtualHostNode;
- private Map<String, StoreUpgraderPhase> _upgraders = new HashMap<String, StoreUpgraderPhase>();
@SuppressWarnings("serial")
private static final Map<String, String> DEFAULT_EXCHANGES = Collections.unmodifiableMap(new HashMap<String, String>()
@@ -86,11 +82,6 @@ public class VirtualHostStoreUpgraderAnd
_defaultExchangeIds = Collections.unmodifiableMap(defaultExchangeIds);
}
- private void register(StoreUpgraderPhase upgrader)
- {
- _upgraders.put(upgrader.getFromVersion(), upgrader);
- }
-
/*
* Removes filters from queue bindings to exchanges other than topic exchanges. In older versions of the broker
* such bindings would have been ignored, starting from the point at which the config version changed, these
@@ -164,7 +155,7 @@ public class VirtualHostStoreUpgraderAnd
UUID id = record.getId();
if ("org.apache.qpid.server.model.VirtualHost".equals(type))
{
- record = upgradeRootRecord(record);
+ upgradeRootRecord(record);
}
else if(type.equals(Binding.class.getName()) && hasSelectorArguments(attributes) && !isTopicExchange(record))
{
@@ -176,10 +167,7 @@ public class VirtualHostStoreUpgraderAnd
entry.setValue(record);
}
- getNextUpgrader().configuredObject(record);
}
-
- getNextUpgrader().complete();
}
}
@@ -204,7 +192,7 @@ public class VirtualHostStoreUpgraderAnd
if ("VirtualHost".equals(type))
{
- newRecord = upgradeRootRecord(newRecord);
+ upgradeRootRecord(newRecord);
}
}
@@ -223,12 +211,7 @@ public class VirtualHostStoreUpgraderAnd
getDeleteMap().put(entry.getKey(), entry.getValue());
iterator.remove();
}
- else
- {
- getNextUpgrader().configuredObject(record);
- }
}
- getNextUpgrader().complete();
}
private boolean unknownExchange(final UUID exchangeId)
@@ -273,7 +256,7 @@ public class VirtualHostStoreUpgraderAnd
{
if("VirtualHost".equals(record.getType()))
{
- record = upgradeRootRecord(record);
+ upgradeRootRecord(record);
}
else if("Queue".equals(record.getType()))
{
@@ -289,13 +272,11 @@ public class VirtualHostStoreUpgraderAnd
getUpdateMap().put(record.getId(), record);
}
- getNextUpgrader().configuredObject(record);
}
@Override
public void complete()
{
- getNextUpgrader().complete();
}
}
@@ -320,7 +301,7 @@ public class VirtualHostStoreUpgraderAnd
{
if("VirtualHost".equals(record.getType()))
{
- record = upgradeRootRecord(record);
+ upgradeRootRecord(record);
}
else if(Queue.class.getSimpleName().equals(record.getType()))
{
@@ -346,14 +327,11 @@ public class VirtualHostStoreUpgraderAnd
record = new ConfiguredObjectRecordImpl(record.getId(),record.getType(),newAttributes, record.getParents());
getUpdateMap().put(record.getId(), record);
}
-
- getNextUpgrader().configuredObject(record);
}
@Override
public void complete()
{
- getNextUpgrader().complete();
}
}
@@ -396,9 +374,8 @@ public class VirtualHostStoreUpgraderAnd
}
else if("Queue".equals(record.getType()))
{
- record = updateQueueRecordIfNecessary(record);
+ updateQueueRecordIfNecessary(record);
}
- getNextUpgrader().configuredObject(record);
}
@Override
@@ -432,11 +409,8 @@ public class VirtualHostStoreUpgraderAnd
ConfiguredObjectRecord record = new ConfiguredObjectRecordImpl(id, Exchange.class.getSimpleName(), attributes, Collections.singletonMap(_virtualHostRecord.getType(), _virtualHostRecord.getId()));
getUpdateMap().put(id, record);
- getNextUpgrader().configuredObject(record);
-
}
- getNextUpgrader().complete();
}
private ConfiguredObjectRecord updateQueueRecordIfNecessary(ConfiguredObjectRecord record)
@@ -508,15 +482,13 @@ public class VirtualHostStoreUpgraderAnd
if("VirtualHost".equals(record.getType()))
{
- record = upgradeRootRecord(record);
+ upgradeRootRecord(record);
}
- getNextUpgrader().configuredObject(record);
}
@Override
public void complete()
{
- getNextUpgrader().complete();
}
}
@@ -533,15 +505,13 @@ public class VirtualHostStoreUpgraderAnd
if("VirtualHost".equals(record.getType()))
{
- record = upgradeRootRecord(record);
+ upgradeRootRecord(record);
}
- getNextUpgrader().configuredObject(record);
}
@Override
public void complete()
{
- getNextUpgrader().complete();
}
}
@@ -559,15 +529,13 @@ public class VirtualHostStoreUpgraderAnd
if("VirtualHost".equals(record.getType()))
{
- record = upgradeRootRecord(record);
+ upgradeRootRecord(record);
}
- getNextUpgrader().configuredObject(record);
}
@Override
public void complete()
{
- getNextUpgrader().complete();
}
}
@@ -575,7 +543,6 @@ public class VirtualHostStoreUpgraderAnd
public boolean upgradeAndRecover(final DurableConfigurationStore durableConfigurationStore,
final ConfiguredObjectRecord... initialRecords)
{
- String virtualHostCategory = VirtualHost.class.getSimpleName();
final List<ConfiguredObjectRecord> records = new ArrayList<>();
boolean isNew = durableConfigurationStore.openConfigurationStore(new ConfiguredObjectRecordHandler()
{
@@ -586,10 +553,10 @@ public class VirtualHostStoreUpgraderAnd
}
}, initialRecords);
- GenericStoreUpgrader upgraderHandler = new GenericStoreUpgrader(virtualHostCategory, VirtualHost.MODEL_VERSION, durableConfigurationStore, _upgraders);
- upgraderHandler.upgrade(records);
-
- List<ConfiguredObjectRecord> upgradedRecords = upgraderHandler.getRecords();
+ List<ConfiguredObjectRecord> upgradedRecords = upgrade(durableConfigurationStore,
+ records,
+ VirtualHost.class.getSimpleName(),
+ VirtualHost.MODEL_VERSION);
recover(durableConfigurationStore, upgradedRecords, isNew);
return isNew;
}
@@ -617,9 +584,15 @@ public class VirtualHostStoreUpgraderAnd
configChangeListener = new StoreConfigurationChangeListener(durableConfigurationStore);
if(_virtualHostNode.getVirtualHost() != null)
{
- applyRecursively(_virtualHostNode.getVirtualHost(), new Action<ConfiguredObject<?>>()
+ applyRecursively(_virtualHostNode.getVirtualHost(), new RecursiveAction<ConfiguredObject<?>>()
{
@Override
+ public boolean applyToChildren(final ConfiguredObject<?> object)
+ {
+ return object.isDurable();
+ }
+
+ @Override
public void performAction(final ConfiguredObject<?> object)
{
object.addChangeListener(configChangeListener);
@@ -633,9 +606,15 @@ public class VirtualHostStoreUpgraderAnd
{
if(child instanceof VirtualHost)
{
- applyRecursively(child, new Action<ConfiguredObject<?>>()
+ applyRecursively(child, new RecursiveAction<ConfiguredObject<?>>()
{
@Override
+ public boolean applyToChildren(final ConfiguredObject<?> object)
+ {
+ return object.isDurable();
+ }
+
+ @Override
public void performAction(final ConfiguredObject<?> object)
{
if(object.isDurable())
@@ -667,32 +646,5 @@ public class VirtualHostStoreUpgraderAnd
}
}
}
-
- private void applyRecursively(final ConfiguredObject<?> object, final Action<ConfiguredObject<?>> action)
- {
- applyRecursively(object, action, new HashSet<ConfiguredObject<?>>());
- }
-
- private void applyRecursively(final ConfiguredObject<?> object,
- final Action<ConfiguredObject<?>> action,
- final HashSet<ConfiguredObject<?>> visited)
- {
- if(!visited.contains(object))
- {
- visited.add(object);
- action.performAction(object);
- for(Class<? extends ConfiguredObject> childClass : object.getModel().getChildTypes(object.getCategoryClass()))
- {
- Collection<? extends ConfiguredObject> children = object.getChildren(childClass);
- if(children != null)
- {
- for(ConfiguredObject<?> child : children)
- {
- applyRecursively(child, action, visited);
- }
- }
- }
- }
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org