Skip to content

Commit

Permalink
WFLY-5951 pending-puts cache configuration + TRACE logging for adding…
Browse files Browse the repository at this point in the history
… local/jpa cache/ configuration
  • Loading branch information
scottmarlow committed Jan 7, 2016
1 parent d72108d commit cbd2784
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 8 deletions.
Expand Up @@ -31,6 +31,7 @@
import org.infinispan.configuration.cache.VersioningScheme;
import org.infinispan.transaction.LockingMode;
import org.infinispan.util.concurrent.IsolationLevel;
import org.jboss.as.clustering.infinispan.InfinispanLogger;
import org.jboss.msc.service.ServiceBuilder;
import org.jboss.msc.service.ServiceTarget;
import org.jboss.msc.value.InjectedValue;
Expand All @@ -51,6 +52,9 @@ public class LocalCacheBuilder extends CacheConfigurationBuilder {
super(containerName, cacheName);
this.containerName = containerName;
this.cacheName = cacheName;
if (InfinispanLogger.ROOT_LOGGER.isTraceEnabled()) {
InfinispanLogger.ROOT_LOGGER.tracef("LocalCacheBuilder will be configured for container '%s', cache '%s'", containerName, cacheName);
}
}

@Override
Expand All @@ -72,8 +76,11 @@ public ConfigurationBuilder createConfigurationBuilder() {
PersistenceConfiguration persistence = this.persistence.getValue();

// Auto-enable simple cache optimization if cache is non-transactional and non-persistent
builder.simpleCache(!transaction.transactionMode().isTransactional() && !persistence.usingStores());

final boolean simpleCache = !transaction.transactionMode().isTransactional() && !persistence.usingStores();
builder.simpleCache(simpleCache);
if (InfinispanLogger.ROOT_LOGGER.isTraceEnabled()) {
InfinispanLogger.ROOT_LOGGER.tracef("LocalCacheBuilder is creating configuration builder for container '%s', cache '%s', simpleCache '%b'", containerName, cacheName, simpleCache);
}
if ((transaction.lockingMode() == LockingMode.OPTIMISTIC) && (locking.isolationLevel() == IsolationLevel.REPEATABLE_READ)) {
builder.locking().writeSkewCheck(true);
builder.versioning().enable().scheme(VersioningScheme.SIMPLE);
Expand Down
Expand Up @@ -43,6 +43,9 @@ public class HibernateSecondLevelCache {
public static final String NATURAL_ID = "natural-id";
public static final String QUERY = "query";
public static final String TIMESTAMPS = "timestamps";
public static final String PENDING_PUTS = InfinispanRegionFactory.PENDING_PUTS_CACHE_NAME;
public static final String PENDING_PUTS_CACHE_RESOURCE_PROP ="hibernate.cache.infinispan.pending-puts.cfg";


public static void addSecondLevelCacheDependencies(Properties mutableProperties, String scopedPersistenceUnitName) {

Expand Down Expand Up @@ -75,6 +78,9 @@ public static void addSecondLevelCacheDependencies(Properties mutableProperties,
cacheSettings.put(IMMUTABLE_ENTITY, mutableProperties.getProperty(InfinispanRegionFactory.IMMUTABLE_ENTITY_CACHE_RESOURCE_PROP, InfinispanRegionFactory.DEF_ENTITY_RESOURCE));
cacheSettings.put(COLLECTION, mutableProperties.getProperty(InfinispanRegionFactory.COLLECTION_CACHE_RESOURCE_PROP, InfinispanRegionFactory.DEF_ENTITY_RESOURCE));
cacheSettings.put(NATURAL_ID, mutableProperties.getProperty(InfinispanRegionFactory.NATURAL_ID_CACHE_RESOURCE_PROP, InfinispanRegionFactory.DEF_ENTITY_RESOURCE));
if (mutableProperties.getProperty(PENDING_PUTS_CACHE_RESOURCE_PROP) != null) {
cacheSettings.put(PENDING_PUTS, mutableProperties.getProperty(PENDING_PUTS_CACHE_RESOURCE_PROP));
}
if (Boolean.parseBoolean(mutableProperties.getProperty(AvailableSettings.USE_QUERY_CACHE))) {
cacheSettings.put(QUERY, mutableProperties.getProperty(InfinispanRegionFactory.QUERY_CACHE_RESOURCE_PROP, InfinispanRegionFactory.DEF_QUERY_RESOURCE));
cacheSettings.put(TIMESTAMPS, mutableProperties.getProperty(InfinispanRegionFactory.TIMESTAMPS_CACHE_RESOURCE_PROP, InfinispanRegionFactory.DEF_QUERY_RESOURCE));
Expand Down
Expand Up @@ -22,6 +22,10 @@

package org.jboss.as.jpa.processor.secondLevelCache;



import static org.jboss.as.jpa.messages.JpaLogger.ROOT_LOGGER;

import java.util.HashMap;
import java.util.Properties;

Expand Down Expand Up @@ -73,11 +77,17 @@ public void afterEntityManagerFactoryCreate(Classification classification, Persi

@Override
public Wrapper startCache(Classification classification, Properties properties) throws Exception {
if(ROOT_LOGGER.isTraceEnabled()) {
ROOT_LOGGER.tracef("start second level cache with properties '%s'", properties.toString());
}
return delegates.get(classification.getLocalName()).startCache(classification, properties);
}

@Override
public void addCacheDependencies(Classification classification, Properties properties) {
if(ROOT_LOGGER.isTraceEnabled()) {
ROOT_LOGGER.tracef("add second level cache dependencies with properties '%s'", properties.toString());
}
delegates.get(classification.getLocalName()).addCacheDependencies(classification, properties);
}

Expand Down
Expand Up @@ -22,6 +22,8 @@

package org.jboss.as.jpa.processor.secondLevelCache;

import static org.jboss.as.jpa.messages.JpaLogger.ROOT_LOGGER;

import java.security.AccessController;
import java.util.Properties;
import java.util.UUID;
Expand Down Expand Up @@ -60,6 +62,7 @@ public class InfinispanCacheDeploymentListener implements EventListener {
public static final String NATURAL_ID = "natural-id";
public static final String QUERY = "query";
public static final String TIMESTAMPS = "timestamps";
public static final String PENDING_PUTS = "pending-puts";

public static final String DEFAULT_CACHE_CONTAINER = "hibernate";

Expand Down Expand Up @@ -109,22 +112,39 @@ public void addCacheDependencies(Classification classification, Properties prope
String collection = properties.getProperty(COLLECTION);
String query = properties.getProperty(QUERY);
String timestamps = properties.getProperty(TIMESTAMPS);
CacheDeploymentListener.getInternalDeploymentServiceBuilder().addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, entity));
CacheDeploymentListener.getInternalDeploymentServiceBuilder().addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, immutableEntity));
CacheDeploymentListener.getInternalDeploymentServiceBuilder().addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, collection));
CacheDeploymentListener.getInternalDeploymentServiceBuilder().addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, naturalId));
String pendingPuts = properties.getProperty(PENDING_PUTS);
addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, entity));
addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, immutableEntity));
addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, collection));
addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, naturalId));
if (pendingPuts != null) {
addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, pendingPuts));
}
if (query != null) {
CacheDeploymentListener.getInternalDeploymentServiceBuilder().addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, timestamps));
CacheDeploymentListener.getInternalDeploymentServiceBuilder().addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, query));
addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, timestamps));
addDependency(CacheServiceName.CONFIGURATION.getServiceName(container, query));
}
}

private void addDependency(ServiceName dependency) {
if(ROOT_LOGGER.isTraceEnabled()) {
ROOT_LOGGER.tracef("add second level cache dependency on service '%s'", dependency.getCanonicalName());
}
CacheDeploymentListener.getInternalDeploymentServiceBuilder().addDependency(dependency);
}

@Override
public void stopCache(Classification classification, Wrapper wrapper, boolean ignoreStop) {
if (!ignoreStop) {
// Remove the service created in createCacheManager(...)
CacheWrapper cacheWrapper = (CacheWrapper) wrapper;
if(ROOT_LOGGER.isTraceEnabled()) {
ROOT_LOGGER.tracef("stop second level cache by removing dependency on service '%s'", cacheWrapper.serviceName.getCanonicalName());
}
ServiceContainerHelper.remove(currentServiceContainer().getRequiredService(cacheWrapper.serviceName));
} else if(ROOT_LOGGER.isTraceEnabled()){
CacheWrapper cacheWrapper = (CacheWrapper) wrapper;
ROOT_LOGGER.tracef("skipping stop of second level cache, will keep dependency on service '%s'", cacheWrapper.serviceName.getCanonicalName());
}
}

Expand Down

0 comments on commit cbd2784

Please sign in to comment.