You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2013/12/18 10:27:05 UTC
git commit: improvements for MARMOTTA-388
Updated Branches:
refs/heads/develop 92205ec47 -> c5cf84e71
improvements for MARMOTTA-388
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/c5cf84e7
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/c5cf84e7
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/c5cf84e7
Branch: refs/heads/develop
Commit: c5cf84e711e952292fbb4110309f647aa4e8771a
Parents: 92205ec
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Wed Dec 18 10:26:59 2013 +0100
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Wed Dec 18 10:26:59 2013 +0100
----------------------------------------------------------------------
.../marmotta/kiwi/caching/KiWiCacheManager.java | 87 +++++++++++---------
.../marmotta/kiwi/config/KiWiConfiguration.java | 56 +++++++++++++
.../kiwi/persistence/KiWiPersistence.java | 24 ++++--
.../apache/marmotta/kiwi/sail/KiWiStore.java | 5 ++
.../backend/kiwi/KiWiStoreProvider.java | 34 ++++++--
.../main/resources/config-defaults.properties | 6 ++
.../resources/config-descriptions.properties | 10 +++
.../core/logging/CacheLoggingModule.java | 2 +-
.../core/services/cache/CachingServiceImpl.java | 23 +++---
.../src/main/resources/jgroups-marmotta.xml | 2 +-
10 files changed, 187 insertions(+), 62 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/marmotta/blob/c5cf84e7/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/caching/KiWiCacheManager.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/caching/KiWiCacheManager.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/caching/KiWiCacheManager.java
index b68d7a9..400fa75 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/caching/KiWiCacheManager.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/caching/KiWiCacheManager.java
@@ -26,9 +26,9 @@ import org.infinispan.configuration.global.GlobalConfiguration;
import org.infinispan.configuration.global.GlobalConfigurationBuilder;
import org.infinispan.distribution.ch.SyncConsistentHashFactory;
import org.infinispan.eviction.EvictionStrategy;
+import org.infinispan.lifecycle.ComponentStatus;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.manager.EmbeddedCacheManager;
-import org.infinispan.remoting.transport.Address;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,21 +62,30 @@ public class KiWiCacheManager {
// default configuration: distributed cache, 100000 entries, 300 seconds expiration, 60 seconds idle
private Configuration defaultConfiguration;
- private boolean clustered;
+ private boolean clustered, embedded;
+ private KiWiConfiguration kiWiConfiguration;
+
+ /**
+ * Create a new cache manager with its own automatically created Infinispan instance.
+ *
+ * @param config
+ */
public KiWiCacheManager(KiWiConfiguration config) {
this.clustered = config.isClustered();
+ this.kiWiConfiguration = config;
if(clustered) {
globalConfiguration = new GlobalConfigurationBuilder()
.transport()
.defaultTransport()
- .clusterName(config.getName())
+ .clusterName(config.getClusterName())
.machineId("instance-" + config.getDatacenterId())
.addProperty("configurationFile", "jgroups-kiwi.xml")
.globalJmxStatistics()
.jmxDomain("org.apache.marmotta.kiwi")
+ .allowDuplicateDomains(true)
.build();
@@ -101,6 +110,7 @@ public class KiWiCacheManager {
globalConfiguration = new GlobalConfigurationBuilder()
.globalJmxStatistics()
.jmxDomain("org.apache.marmotta.kiwi")
+ .allowDuplicateDomains(true)
.build();
defaultConfiguration = new ConfigurationBuilder()
@@ -118,12 +128,29 @@ public class KiWiCacheManager {
cacheManager = new DefaultCacheManager(globalConfiguration, defaultConfiguration, true);
- if(log.isInfoEnabled()) {
- log.info("Members in Apache Marmotta KiWi cache cluster:");
- for(Address a : cacheManager.getMembers()) {
- log.info(" - {}",a);
- }
- }
+
+ log.info("initialised cache manager ({})", globalConfiguration.isClustered() ? "cluster name: "+globalConfiguration.transport().clusterName() : "single host");
+
+ this.embedded = true;
+ }
+
+ /**
+ * Create a cache manager from an existing Infinispan cache manager.
+ *
+ * @param cacheManager
+ * @param kiWiConfiguration
+ */
+ public KiWiCacheManager(EmbeddedCacheManager cacheManager, KiWiConfiguration kiWiConfiguration) {
+ this.cacheManager = cacheManager;
+ this.globalConfiguration = cacheManager.getCacheManagerConfiguration();
+ this.defaultConfiguration = cacheManager.getDefaultCacheConfiguration();
+ this.kiWiConfiguration = kiWiConfiguration;
+
+ this.clustered = kiWiConfiguration.isClustered();
+
+ log.info("initialised cache manager ({})", globalConfiguration.isClustered() ? "cluster name: "+globalConfiguration.transport().clusterName() : "single host");
+
+ this.embedded = false;
}
/**
@@ -154,7 +181,7 @@ public class KiWiCacheManager {
if(!cacheManager.cacheExists(TRIPLE_CACHE)) {
Configuration tripleConfiguration = new ConfigurationBuilder().read(defaultConfiguration)
.eviction()
- .maxEntries(100000)
+ .maxEntries(kiWiConfiguration.getTripleCacheSize())
.expiration()
.lifespan(60, TimeUnit.SECONDS)
.maxIdle(30, TimeUnit.SECONDS)
@@ -166,28 +193,6 @@ public class KiWiCacheManager {
/**
- * Return the triple id -> triple cache from the cache manager. This cache is used for speeding up the
- * construction of query results.
- *
- * @return
- */
- public Cache getQueryCache() {
- if(!cacheManager.cacheExists(TRIPLE_CACHE)) {
- Configuration tripleConfiguration = new ConfigurationBuilder().read(defaultConfiguration)
- .eviction()
- .maxEntries(100000)
- .expiration()
- .lifespan(5, TimeUnit.MINUTES)
- .maxIdle(60, TimeUnit.SECONDS)
- .build();
- cacheManager.defineConfiguration(TRIPLE_CACHE, tripleConfiguration);
- }
- return cacheManager.getCache(TRIPLE_CACHE);
- }
-
-
-
- /**
* Return the uri -> KiWiUriResource cache from the cache manager. This cache is used when constructing new
* KiWiUriResources to avoid a database lookup.
*
@@ -197,7 +202,7 @@ public class KiWiCacheManager {
if(!cacheManager.cacheExists(URI_CACHE)) {
Configuration uriConfiguration = new ConfigurationBuilder().read(defaultConfiguration)
.eviction()
- .maxEntries(50000)
+ .maxEntries(kiWiConfiguration.getUriCacheSize())
.build();
cacheManager.defineConfiguration(URI_CACHE, uriConfiguration);
}
@@ -215,7 +220,7 @@ public class KiWiCacheManager {
if(!cacheManager.cacheExists(BNODE_CACHE)) {
Configuration bnodeConfiguration = new ConfigurationBuilder().read(defaultConfiguration)
.eviction()
- .maxEntries(5000)
+ .maxEntries(kiWiConfiguration.getBNodeCacheSize())
.build();
cacheManager.defineConfiguration(BNODE_CACHE, bnodeConfiguration);
}
@@ -233,7 +238,7 @@ public class KiWiCacheManager {
if(!cacheManager.cacheExists(LITERAL_CACHE)) {
Configuration literalConfiguration = new ConfigurationBuilder().read(defaultConfiguration)
.eviction()
- .maxEntries(10000)
+ .maxEntries(kiWiConfiguration.getLiteralCacheSize())
.build();
cacheManager.defineConfiguration(LITERAL_CACHE, literalConfiguration);
}
@@ -249,7 +254,7 @@ public class KiWiCacheManager {
if(!cacheManager.cacheExists(NAMESPACE_URI_CACHE)) {
Configuration nsuriConfiguration = new ConfigurationBuilder().read(defaultConfiguration)
.eviction()
- .maxEntries(1000)
+ .maxEntries(kiWiConfiguration.getNamespaceCacheSize())
.expiration()
.lifespan(1, TimeUnit.HOURS)
.build();
@@ -266,7 +271,7 @@ public class KiWiCacheManager {
if(!cacheManager.cacheExists(NAMESPACE_PREFIX_CACHE)) {
Configuration nsprefixConfiguration = new ConfigurationBuilder().read(defaultConfiguration)
.eviction()
- .maxEntries(1000)
+ .maxEntries(kiWiConfiguration.getNamespaceCacheSize())
.expiration()
.lifespan(1, TimeUnit.HOURS)
.build();
@@ -359,6 +364,12 @@ public class KiWiCacheManager {
* Shutdown this cache manager instance. Will shutdown the underlying EHCache cache manager.
*/
public void shutdown() {
- cacheManager.stop();
+ if(embedded && cacheManager.getStatus() == ComponentStatus.RUNNING) {
+ log.warn("shutting down cache manager ...");
+ if(cacheManager.getTransport() != null) {
+ cacheManager.getTransport().stop();
+ }
+ cacheManager.stop();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/c5cf84e7/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/config/KiWiConfiguration.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/config/KiWiConfiguration.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/config/KiWiConfiguration.java
index 0a06aa0..b94fc9b 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/config/KiWiConfiguration.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/config/KiWiConfiguration.java
@@ -97,6 +97,10 @@ public class KiWiConfiguration {
private int literalCacheSize = 100000;
+ private int tripleCacheSize = 100000;
+
+ private int namespaceCacheSize = 500;
+
private int datacenterId = 0;
@@ -108,6 +112,9 @@ public class KiWiConfiguration {
private boolean clustered = false;
+ private String clusterName = "Marmotta";
+
+
public KiWiConfiguration(String name, String jdbcUrl, String dbUser, String dbPassword, KiWiDialect dialect) {
this(name, jdbcUrl, dbUser, dbPassword, dialect, null, null);
}
@@ -312,6 +319,36 @@ public class KiWiConfiguration {
this.uriCacheSize = uriCacheSize;
}
+
+ /**
+ * The maximum size of the triple cache used for looking up triples by id
+ * @return
+ */
+ public int getTripleCacheSize() {
+ return tripleCacheSize;
+ }
+
+ /**
+ * The maximum size of the triple cache used for looking up triples by id
+ */
+ public void setTripleCacheSize(int tripleCacheSize) {
+ this.tripleCacheSize = tripleCacheSize;
+ }
+
+ /**
+ * The maximum size of the namespace cache used for looking up namespaces by prefix and uri
+ */
+ public int getNamespaceCacheSize() {
+ return namespaceCacheSize;
+ }
+
+ /**
+ * The maximum size of the namespace cache used for looking up namespaces by prefix and uri
+ */
+ public void setNamespaceCacheSize(int namespaceCacheSize) {
+ this.namespaceCacheSize = namespaceCacheSize;
+ }
+
/**
* The datacenter ID of this server for generating unique database IDs. If not given, a random value will
* be generated.
@@ -362,4 +399,23 @@ public class KiWiConfiguration {
public void setClustered(boolean clustered) {
this.clustered = clustered;
}
+
+
+ /**
+ * Return the name of the cluster. This name is e.g. used by the Infinispan cache to identify other cache members
+ * in the same cluster,
+ *
+ * @return
+ */
+ public String getClusterName() {
+ return clusterName;
+ }
+
+ /**
+ * Change the name of the cluster. This name is e.g. used by the Infinispan cache to identify other cache members
+ * in the same cluster,
+ */
+ public void setClusterName(String clusterName) {
+ this.clusterName = clusterName;
+ }
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/c5cf84e7/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiPersistence.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiPersistence.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiPersistence.java
index aa70ad0..6ca027b 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiPersistence.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiPersistence.java
@@ -25,6 +25,7 @@ import org.apache.marmotta.kiwi.persistence.util.ScriptRunner;
import org.apache.marmotta.kiwi.sail.KiWiValueFactory;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;
+import org.infinispan.manager.EmbeddedCacheManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -78,10 +79,11 @@ public class KiWiPersistence {
*/
private boolean maintenance;
- private boolean droppedDatabase = false;
-
private boolean initialized = false;
+ // in case the cache manager comes from outside, it is passed over here
+ private EmbeddedCacheManager infinispan;
+
@Deprecated
public KiWiPersistence(String name, String jdbcUrl, String db_user, String db_password, KiWiDialect dialect) {
this(new KiWiConfiguration(name,jdbcUrl,db_user,db_password,dialect));
@@ -92,11 +94,18 @@ public class KiWiPersistence {
this.maintenance = false;
}
+ public KiWiPersistence(KiWiConfiguration configuration, EmbeddedCacheManager infinispan) {
+ this.configuration = configuration;
+ this.maintenance = false;
+ this.infinispan = infinispan;
+ }
+
+
public void initialise() {
// init JDBC connection pool
initConnectionPool();
- // init EHCache caches
+ // init Infinispan caches
initCachePool();
// init garbage collector thread
@@ -128,7 +137,11 @@ public class KiWiPersistence {
private void initCachePool() {
- cacheManager = new KiWiCacheManager(configuration);
+ if(infinispan != null) {
+ cacheManager = new KiWiCacheManager(infinispan,configuration);
+ } else {
+ cacheManager = new KiWiCacheManager(configuration);
+ }
}
@@ -320,8 +333,6 @@ public class KiWiPersistence {
} catch(SQLException ex) {
log.error("SQL exception while acquiring database connection");
}
-
- droppedDatabase = true;
}
/**
@@ -437,6 +448,7 @@ public class KiWiPersistence {
public void shutdown() {
+ log.info("shutting down KiWi persistence ...");
initialized = false;
idGenerator.shutdown(this);
http://git-wip-us.apache.org/repos/asf/marmotta/blob/c5cf84e7/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
index 899b941..ea5fb79 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
@@ -20,6 +20,7 @@ package org.apache.marmotta.kiwi.sail;
import org.apache.marmotta.kiwi.config.KiWiConfiguration;
import org.apache.marmotta.kiwi.persistence.KiWiDialect;
import org.apache.marmotta.kiwi.persistence.KiWiPersistence;
+import org.infinispan.manager.EmbeddedCacheManager;
import org.openrdf.model.ValueFactory;
import org.openrdf.sail.SailException;
import org.openrdf.sail.helpers.NotifyingSailBase;
@@ -97,6 +98,10 @@ public class KiWiStore extends NotifyingSailBase {
this(new KiWiPersistence(configuration), configuration.getDefaultContext(), configuration.getInferredContext());
}
+ public KiWiStore(KiWiConfiguration configuration, EmbeddedCacheManager infinispan) {
+ this(new KiWiPersistence(configuration, infinispan), configuration.getDefaultContext(), configuration.getInferredContext());
+ }
+
/**
* Do store-specific operations to initialize the store. The default
* implementation of this method does nothing.
http://git-wip-us.apache.org/repos/asf/marmotta/blob/c5cf84e7/platform/backends/marmotta-backend-kiwi/src/main/java/org/apache/marmotta/platform/backend/kiwi/KiWiStoreProvider.java
----------------------------------------------------------------------
diff --git a/platform/backends/marmotta-backend-kiwi/src/main/java/org/apache/marmotta/platform/backend/kiwi/KiWiStoreProvider.java b/platform/backends/marmotta-backend-kiwi/src/main/java/org/apache/marmotta/platform/backend/kiwi/KiWiStoreProvider.java
index 8609c9d..8a8f7a3 100644
--- a/platform/backends/marmotta-backend-kiwi/src/main/java/org/apache/marmotta/platform/backend/kiwi/KiWiStoreProvider.java
+++ b/platform/backends/marmotta-backend-kiwi/src/main/java/org/apache/marmotta/platform/backend/kiwi/KiWiStoreProvider.java
@@ -30,6 +30,7 @@ import org.apache.marmotta.platform.core.api.config.ConfigurationService;
import org.apache.marmotta.platform.core.api.triplestore.SesameService;
import org.apache.marmotta.platform.core.api.triplestore.StoreProvider;
import org.apache.marmotta.platform.core.events.ConfigurationChangedEvent;
+import org.infinispan.manager.EmbeddedCacheManager;
import org.openrdf.repository.sail.SailRepository;
import org.openrdf.sail.NotifyingSail;
import org.openrdf.sail.Sail;
@@ -64,6 +65,12 @@ public class KiWiStoreProvider implements StoreProvider {
public static final String FULLTEXT_ENABLED = "database.fulltext.enabled";
public static final String FULLTEXT_LANGUAGES = "database.fulltext.languages";
public static final String DEBUG_SLOWQUERIES = "database.debug.slowqueries";
+ public static final String CLUSTERING_ENABLED = "clustering.enabled";
+ public static final String CACHING_LITERAL_SIZE = "caching.literal.size";
+ public static final String CACHING_BNODE_SIZE = "caching.bnode.size";
+ public static final String CACHING_URI_SIZE = "caching.uri.size";
+ public static final String CACHING_TRIPLE_SIZE = "caching.triple.size";
+ public static final String CLUSTERING_NAME = "clustering.name";
@Inject
private Logger log;
@@ -75,6 +82,9 @@ public class KiWiStoreProvider implements StoreProvider {
private SesameService sesameService;
+ @Inject
+ private EmbeddedCacheManager cacheManager;
+
/**
* Create the store provided by this SailProvider
*
@@ -104,7 +114,7 @@ public class KiWiStoreProvider implements StoreProvider {
String dbUser = configurationService.getStringConfiguration("database.user");
String dbPass = configurationService.getStringConfiguration("database.password");
- KiWiConfiguration configuration = new KiWiConfiguration(configurationService.getStringConfiguration("clustering.name", "Marmotta") + " KiWi", jdbcUrl, dbUser, dbPass, dialect, configurationService.getDefaultContext(), configurationService.getInferredContext());
+ KiWiConfiguration configuration = new KiWiConfiguration(configurationService.getStringConfiguration(CLUSTERING_NAME, "Marmotta") + " KiWi", jdbcUrl, dbUser, dbPass, dialect, configurationService.getDefaultContext(), configurationService.getInferredContext());
configuration.setQueryLoggingEnabled(configurationService.getBooleanConfiguration(DEBUG_SLOWQUERIES, false));
configuration.setTripleBatchCommit(configurationService.getBooleanConfiguration("database.triples.batchcommit", true));
configuration.setTripleBatchSize(configurationService.getIntConfiguration("database.triples.batchsize", 10000));
@@ -112,12 +122,21 @@ public class KiWiStoreProvider implements StoreProvider {
configuration.setDatacenterId(configurationService.getIntConfiguration(DATACENTER_ID,0));
configuration.setFulltextEnabled(configurationService.getBooleanConfiguration(FULLTEXT_ENABLED, true));
configuration.setFulltextLanguages(configurationService.getListConfiguration(FULLTEXT_LANGUAGES, ImmutableList.of("en")));
- configuration.setClustered(configurationService.getBooleanConfiguration("clustering.enabled", false));
+
+ configuration.setClustered(configurationService.getBooleanConfiguration(CLUSTERING_ENABLED, false));
+ configuration.setClusterName(configurationService.getStringConfiguration(CLUSTERING_NAME, "Marmotta"));
+
+ configuration.setLiteralCacheSize(configurationService.getIntConfiguration(CACHING_LITERAL_SIZE, 100000));
+ configuration.setBNodeCacheSize(configurationService.getIntConfiguration(CACHING_BNODE_SIZE, 10000));
+ configuration.setUriCacheSize(configurationService.getIntConfiguration(CACHING_URI_SIZE, 500000));
+ configuration.setTripleCacheSize(configurationService.getIntConfiguration(CACHING_TRIPLE_SIZE, 100000));
+
+
if("native".equalsIgnoreCase(configurationService.getStringConfiguration(SPARQL_STRATEGY))) {
- return new KiWiSparqlSail(new KiWiStore(configuration));
+ return new KiWiSparqlSail(new KiWiStore(configuration, cacheManager));
} else {
- return new KiWiStore(configuration);
+ return new KiWiStore(configuration, cacheManager);
}
}
@@ -159,7 +178,12 @@ public class KiWiStoreProvider implements StoreProvider {
e.containsChangedKey(DATACENTER_ID) ||
e.containsChangedKey(FULLTEXT_ENABLED) ||
e.containsChangedKey(FULLTEXT_LANGUAGES) ||
- e.containsChangedKey(DEBUG_SLOWQUERIES)
+ e.containsChangedKey(DEBUG_SLOWQUERIES) ||
+ e.containsChangedKey(CLUSTERING_ENABLED) ||
+ e.containsChangedKey(CACHING_LITERAL_SIZE) ||
+ e.containsChangedKey(CACHING_TRIPLE_SIZE) ||
+ e.containsChangedKey(CACHING_URI_SIZE) ||
+ e.containsChangedKey(CACHING_BNODE_SIZE)
) {
log.info("KiWi backend configuration changed, re-initialising triple store");
http://git-wip-us.apache.org/repos/asf/marmotta/blob/c5cf84e7/platform/backends/marmotta-backend-kiwi/src/main/resources/config-defaults.properties
----------------------------------------------------------------------
diff --git a/platform/backends/marmotta-backend-kiwi/src/main/resources/config-defaults.properties b/platform/backends/marmotta-backend-kiwi/src/main/resources/config-defaults.properties
index 6ee6eb6..bc5c02c 100644
--- a/platform/backends/marmotta-backend-kiwi/src/main/resources/config-defaults.properties
+++ b/platform/backends/marmotta-backend-kiwi/src/main/resources/config-defaults.properties
@@ -69,5 +69,11 @@ database.mysql.driver = com.mysql.jdbc.Driver
database.mysql.url = jdbc:mysql://localhost:3306/lmf?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+caching.literal.size = 100000
+caching.uri.size = 500000
+caching.bnode.size = 10000
+caching.triple.size = 100000
+
+
http://git-wip-us.apache.org/repos/asf/marmotta/blob/c5cf84e7/platform/backends/marmotta-backend-kiwi/src/main/resources/config-descriptions.properties
----------------------------------------------------------------------
diff --git a/platform/backends/marmotta-backend-kiwi/src/main/resources/config-descriptions.properties b/platform/backends/marmotta-backend-kiwi/src/main/resources/config-descriptions.properties
index 49c53a2..556f661 100644
--- a/platform/backends/marmotta-backend-kiwi/src/main/resources/config-descriptions.properties
+++ b/platform/backends/marmotta-backend-kiwi/src/main/resources/config-descriptions.properties
@@ -53,3 +53,13 @@ database.fulltext.enabled.type = java.lang.Boolean
database.fulltext.languages.description = list of languages supported by fulltext search; a fulltext index will be created for each language (PostgreSQL only)
database.fulltext.languages.type = java.util.List
+
+
+caching.literal.size.description = size of literal lookup cache
+caching.literal.size.type = java.lang.Integer(10|0|*)
+caching.uri.size.description = size of URI resource lookup cache
+caching.uri.size.type = java.lang.Integer(10|0|*)
+caching.bnode.size.description = size of BNode lookup cache
+caching.bnode.size.type = java.lang.Integer(10|0|*)
+caching.triple.size.description = size of triple lookup cache
+caching.triple.size.type = java.lang.Integer(10|0|*)
http://git-wip-us.apache.org/repos/asf/marmotta/blob/c5cf84e7/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/logging/CacheLoggingModule.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/logging/CacheLoggingModule.java b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/logging/CacheLoggingModule.java
index af6709c..0a57c49 100644
--- a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/logging/CacheLoggingModule.java
+++ b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/logging/CacheLoggingModule.java
@@ -24,7 +24,7 @@ public class CacheLoggingModule extends BaseLoggingModule {
*/
@Override
public Level getDefaultLevel() {
- return Level.WARN;
+ return Level.INFO;
}
/**
http://git-wip-us.apache.org/repos/asf/marmotta/blob/c5cf84e7/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/cache/CachingServiceImpl.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/cache/CachingServiceImpl.java b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/cache/CachingServiceImpl.java
index fdb7288..9c30862 100644
--- a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/cache/CachingServiceImpl.java
+++ b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/cache/CachingServiceImpl.java
@@ -29,9 +29,9 @@ import org.infinispan.configuration.global.GlobalConfiguration;
import org.infinispan.configuration.global.GlobalConfigurationBuilder;
import org.infinispan.distribution.ch.SyncConsistentHashFactory;
import org.infinispan.eviction.EvictionStrategy;
+import org.infinispan.lifecycle.ComponentStatus;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.manager.EmbeddedCacheManager;
-import org.infinispan.remoting.transport.Address;
import org.slf4j.Logger;
import javax.annotation.PostConstruct;
@@ -78,16 +78,17 @@ public class CachingServiceImpl implements CachingService {
public void initialize() {
boolean clustered = configurationService.getBooleanConfiguration("clustering.enabled", false);
- log.info("Apache Marmotta Caching Service starting up ({}) ...", clustered ? "clustering" : "single host" );
+ log.info("Apache Marmotta Caching Service starting up ({}) ...", clustered ? "cluster name: " + configurationService.getStringConfiguration("clustering.name", "Marmotta") : "single host" );
if(clustered) {
globalConfiguration = new GlobalConfigurationBuilder()
.transport()
.defaultTransport()
- .clusterName(configurationService.getStringConfiguration("clustering.name", "Marmotta") + " Platform")
+ .clusterName(configurationService.getStringConfiguration("clustering.name", "Marmotta"))
.machineId(configurationService.getServerName())
.addProperty("configurationFile", "jgroups-marmotta.xml")
.globalJmxStatistics()
.jmxDomain("org.apache.marmotta.platform")
+ .allowDuplicateDomains(true)
.build();
@@ -103,7 +104,7 @@ public class CachingServiceImpl implements CachingService {
.consistentHashFactory(new SyncConsistentHashFactory())
.eviction()
.strategy(EvictionStrategy.LIRS)
- .maxEntries(1000)
+ .maxEntries(10000)
.expiration()
.lifespan(5, TimeUnit.MINUTES)
.maxIdle(1, TimeUnit.MINUTES)
@@ -112,6 +113,7 @@ public class CachingServiceImpl implements CachingService {
globalConfiguration = new GlobalConfigurationBuilder()
.globalJmxStatistics()
.jmxDomain("org.apache.marmotta.platform")
+ .allowDuplicateDomains(true)
.build();
defaultConfiguration = new ConfigurationBuilder()
@@ -130,12 +132,7 @@ public class CachingServiceImpl implements CachingService {
cacheManager = new DefaultCacheManager(globalConfiguration, defaultConfiguration, true);
- if(log.isInfoEnabled()) {
- log.info("Members in Apache Marmotta cache cluster:");
- for(Address a : cacheManager.getMembers()) {
- log.info(" - {}",a);
- }
- }
+ log.info("initialised cache manager ({})", globalConfiguration.isClustered() ? "cluster name: "+globalConfiguration.transport().clusterName() : "single host");
}
/**
@@ -215,7 +212,11 @@ public class CachingServiceImpl implements CachingService {
@PreDestroy
public void destroy() {
log.info("Apache Marmotta Caching Service shutting down ...");
- cacheManager.stop();
+ if(cacheManager.getStatus() == ComponentStatus.RUNNING) {
+ log.info("- shutting down Infinispan cache manager ...");
+ cacheManager.stop();
+ log.info(" ... success!");
+ }
log.info("Apache Marmotta Caching Service shut down successfully.");
}
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/c5cf84e7/platform/marmotta-core/src/main/resources/jgroups-marmotta.xml
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/resources/jgroups-marmotta.xml b/platform/marmotta-core/src/main/resources/jgroups-marmotta.xml
index 8529c45..fb9b7d3 100644
--- a/platform/marmotta-core/src/main/resources/jgroups-marmotta.xml
+++ b/platform/marmotta-core/src/main/resources/jgroups-marmotta.xml
@@ -20,7 +20,7 @@
xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/JGroups-3.4.xsd">
<UDP
mcast_addr="${jgroups.udp.mcast_addr:228.6.7.8}"
- mcast_port="${jgroups.udp.mcast_port:46656}"
+ mcast_port="${jgroups.udp.mcast_port:46655}"
tos="8"
ucast_recv_buf_size="20m"
ucast_send_buf_size="640k"