Skip to content

Commit

Permalink
ISPN-7279 Global-State is not serialized
Browse files Browse the repository at this point in the history
  • Loading branch information
pruivo authored and tristantarrant committed Dec 5, 2016
1 parent 800088b commit daf9da9
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public Map<String, Role> roles() {
return roles.get();
}

AttributeSet attributes() {
public AttributeSet attributes() {
return attributes;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public String temporaryLocation() {
return temporaryLocation.get();
}

AttributeSet attributes() {
public AttributeSet attributes() {
return attributes;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ public class TransportConfiguration {
.immutable().build();
public static final AttributeDefinition<Long> DISTRIBUTED_SYNC_TIMEOUT = AttributeDefinition.builder(
"distributedSyncTimeout", TimeUnit.MINUTES.toMillis(4)).build();
static final AttributeDefinition<Integer> INITIAL_CLUSTER_SIZE = AttributeDefinition.builder("initialClusterSize", -1)
public static final AttributeDefinition<Integer> INITIAL_CLUSTER_SIZE = AttributeDefinition.builder("initialClusterSize", -1)
.immutable().build();
static final AttributeDefinition<Long> INITIAL_CLUSTER_TIMEOUT = AttributeDefinition.builder(
public static final AttributeDefinition<Long> INITIAL_CLUSTER_TIMEOUT = AttributeDefinition.builder(
"initialClusterTimeout", TimeUnit.MINUTES.toMillis(1)).build();
static final AttributeDefinition<Transport> TRANSPORT = AttributeDefinition
.builder("transport", null, Transport.class).copier(IdentityAttributeCopier.INSTANCE).immutable().build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
import org.infinispan.configuration.cache.XSiteStateTransferConfiguration;
import org.infinispan.configuration.global.GlobalConfiguration;
import org.infinispan.configuration.global.GlobalJmxStatisticsConfiguration;
import org.infinispan.configuration.global.GlobalStateConfiguration;
import org.infinispan.configuration.global.SerializationConfiguration;
import org.infinispan.configuration.global.ShutdownHookBehavior;
import org.infinispan.configuration.global.ThreadPoolConfiguration;
Expand Down Expand Up @@ -184,6 +185,7 @@ private void writeCacheContainer(XMLExtendedStreamWriter writer, ConfigurationHo
writeTransport(writer, globalConfiguration);
writeSerialization(writer, globalConfiguration);
writeJMX(writer, globalConfiguration);
writeGlobalState(writer, globalConfiguration);
for (Entry<String, Configuration> configuration : holder.getConfigurations().entrySet()) {
Configuration config = configuration.getValue();
switch (config.clustering().cacheMode()) {
Expand All @@ -208,6 +210,25 @@ private void writeCacheContainer(XMLExtendedStreamWriter writer, ConfigurationHo
}
}

private void writeGlobalState(XMLExtendedStreamWriter writer, GlobalConfiguration globalConfiguration)
throws XMLStreamException {
GlobalStateConfiguration configuration = globalConfiguration.globalState();
if (configuration.enabled()) {
writer.writeStartElement(Element.GLOBAL_STATE);
if (configuration.attributes().attribute(GlobalStateConfiguration.PERSISTENT_LOCATION).isModified()) {
writer.writeStartElement(Element.PERSISTENT_LOCATION);
writer.writeAttribute(Attribute.PATH, configuration.persistentLocation());
writer.writeEndElement();
}
if (configuration.attributes().attribute(GlobalStateConfiguration.TEMPORARY_LOCATION).isModified()) {
writer.writeStartElement(Element.TEMPORARY_LOCATION);
writer.writeAttribute(Attribute.PATH, configuration.temporaryLocation());
writer.writeEndElement();
}
writer.writeEndElement();
}
}

private void writeReplicatedCache(XMLExtendedStreamWriter writer, String name, Configuration configuration) throws XMLStreamException {
writer.writeStartElement(Element.REPLICATED_CACHE);
writeCommonClusteredCacheAttributes(writer, configuration);
Expand Down Expand Up @@ -275,6 +296,9 @@ private void writeTransport(XMLExtendedStreamWriter writer, GlobalConfiguration
if (transport.transportThreadPool().threadPoolFactory() != null) {
writer.writeAttribute(Attribute.EXECUTOR, "transport-pool");
}
attributes.write(writer, TransportConfiguration.DISTRIBUTED_SYNC_TIMEOUT, Attribute.LOCK_TIMEOUT);
attributes.write(writer, TransportConfiguration.INITIAL_CLUSTER_SIZE, Attribute.INITIAL_CLUSTER_SIZE);
attributes.write(writer, TransportConfiguration.INITIAL_CLUSTER_TIMEOUT, Attribute.INITIAL_CLUSTER_TIMEOUT);
writer.writeEndElement();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.configuration.cache.StoreConfiguration;
import org.infinispan.configuration.global.GlobalConfiguration;
import org.infinispan.configuration.parsing.ConfigurationBuilderHolder;
import org.infinispan.configuration.parsing.ParserRegistry;
import org.infinispan.test.AbstractInfinispanTest;
Expand All @@ -40,6 +41,17 @@ public void configurationSerializationTest(String config) throws Exception {
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
try {
ConfigurationBuilderHolder holderAfter = registry.parse(bais);
GlobalConfiguration globalConfigurationBefore = holderBefore.getGlobalConfigurationBuilder().build();
GlobalConfiguration globalConfigurationAfter = holderAfter.getGlobalConfigurationBuilder().build();

assertEquals(globalConfigurationBefore.sites().localSite(), globalConfigurationAfter.sites().localSite());
assertEquals(globalConfigurationBefore.security().securityCacheTimeout(), globalConfigurationAfter.security().securityCacheTimeout());
compareAttributeSets("Global", globalConfigurationBefore.globalState().attributes(), globalConfigurationAfter.globalState().attributes());
compareAttributeSets("Global", globalConfigurationBefore.globalJmxStatistics().attributes(), globalConfigurationAfter.globalJmxStatistics().attributes(), "mBeanServerLookup");
compareAttributeSets("Global", globalConfigurationBefore.security().authorization().attributes(), globalConfigurationAfter.security().authorization().attributes());
compareAttributeSets("Global", globalConfigurationBefore.serialization().attributes(), globalConfigurationAfter.serialization().attributes(), "marshaller", "classResolver");
compareAttributeSets("Global", globalConfigurationBefore.transport().attributes(), globalConfigurationAfter.transport().attributes(), "transport");
compareExtraGlobalConfiguration(globalConfigurationBefore, globalConfigurationAfter);

for (String name : holderBefore.getNamedConfigurationBuilders().keySet()) {
Configuration configurationBefore = holderBefore.getNamedConfigurationBuilders().get(name).build();
Expand Down Expand Up @@ -70,6 +82,10 @@ protected void compareExtraConfiguration(String name, Configuration configuratio
// Do nothing. Subclasses can override to implement their own specific comparison
}

protected void compareExtraGlobalConfiguration(GlobalConfiguration configurationBefore, GlobalConfiguration configurationAfter) {
// Do nothing. Subclasses can override to implement their own specific comparison
}

private void compareStores(String name, List<StoreConfiguration> beforeStores, List<StoreConfiguration> afterStores) {
assertEquals("Configuration "+ name + " stores count mismatch", beforeStores.size(), afterStores.size());
for(int i = 0; i < beforeStores.size(); i++) {
Expand Down

0 comments on commit daf9da9

Please sign in to comment.