Author: reto
Date: Tue May 28 15:41:43 2013
New Revision: 1486971
URL: http://svn.apache.org/r1486971
Log:
STANBOL-1085: changed Store interface to return LockableGraph, added locking
were exception was reported. MOre locking might be needed.
Modified:
stanbol/trunk/contenthub/servicesapi/src/main/java/org/apache/stanbol/contenthub/servicesapi/store/Store.java
stanbol/trunk/contenthub/store/solr/pom.xml
stanbol/trunk/contenthub/store/solr/src/main/java/org/apache/stanbol/contenthub/store/solr/SolrStoreImpl.java
Modified:
stanbol/trunk/contenthub/servicesapi/src/main/java/org/apache/stanbol/contenthub/servicesapi/store/Store.java
URL:
http://svn.apache.org/viewvc/stanbol/trunk/contenthub/servicesapi/src/main/java/org/apache/stanbol/contenthub/servicesapi/store/Store.java?rev=1486971&r1=1486970&r2=1486971&view=diff
==============================================================================
---
stanbol/trunk/contenthub/servicesapi/src/main/java/org/apache/stanbol/contenthub/servicesapi/store/Store.java
(original)
+++
stanbol/trunk/contenthub/servicesapi/src/main/java/org/apache/stanbol/contenthub/servicesapi/store/Store.java
Tue May 28 15:41:43 2013
@@ -16,7 +16,7 @@
*/
package org.apache.stanbol.contenthub.servicesapi.store;
-import org.apache.clerezza.rdf.core.MGraph;
+import org.apache.clerezza.rdf.core.access.LockableMGraph;
import org.apache.stanbol.enhancer.servicesapi.ContentItem;
import org.apache.stanbol.enhancer.servicesapi.helper.ContentItemHelper;
@@ -62,6 +62,6 @@ public interface Store {
/**
* Get the graph of triples of enhancements related to the content item
from this store
*/
- MGraph getEnhancementGraph();
+ LockableMGraph getEnhancementGraph();
}
Modified: stanbol/trunk/contenthub/store/solr/pom.xml
URL:
http://svn.apache.org/viewvc/stanbol/trunk/contenthub/store/solr/pom.xml?rev=1486971&r1=1486970&r2=1486971&view=diff
==============================================================================
--- stanbol/trunk/contenthub/store/solr/pom.xml (original)
+++ stanbol/trunk/contenthub/store/solr/pom.xml Tue May 28 15:41:43 2013
@@ -67,7 +67,7 @@
<dependency>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.contenthub.servicesapi</artifactId>
- <version>0.10.0</version>
+ <version>0.11.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.stanbol</groupId>
Modified:
stanbol/trunk/contenthub/store/solr/src/main/java/org/apache/stanbol/contenthub/store/solr/SolrStoreImpl.java
URL:
http://svn.apache.org/viewvc/stanbol/trunk/contenthub/store/solr/src/main/java/org/apache/stanbol/contenthub/store/solr/SolrStoreImpl.java?rev=1486971&r1=1486970&r2=1486971&view=diff
==============================================================================
---
stanbol/trunk/contenthub/store/solr/src/main/java/org/apache/stanbol/contenthub/store/solr/SolrStoreImpl.java
(original)
+++
stanbol/trunk/contenthub/store/solr/src/main/java/org/apache/stanbol/contenthub/store/solr/SolrStoreImpl.java
Tue May 28 15:41:43 2013
@@ -33,6 +33,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import java.util.concurrent.locks.Lock;
import org.apache.clerezza.rdf.core.Literal;
import org.apache.clerezza.rdf.core.MGraph;
@@ -40,6 +41,7 @@ import org.apache.clerezza.rdf.core.Reso
import org.apache.clerezza.rdf.core.Triple;
import org.apache.clerezza.rdf.core.TripleCollection;
import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.LockableMGraph;
import org.apache.clerezza.rdf.core.access.NoSuchEntityException;
import org.apache.clerezza.rdf.core.access.TcManager;
import org.apache.clerezza.rdf.core.sparql.ParseException;
@@ -150,9 +152,9 @@ public class SolrStoreImpl implements So
}
@Override
- public MGraph getEnhancementGraph() {
+ public LockableMGraph getEnhancementGraph() {
final UriRef graphUri = new UriRef(Constants.ENHANCEMENTS_GRAPH_URI);
- MGraph enhancementGraph = null;
+ LockableMGraph enhancementGraph = null;
try {
enhancementGraph = tcManager.getMGraph(graphUri);
} catch (NoSuchEntityException e) {
@@ -240,7 +242,7 @@ public class SolrStoreImpl implements So
}
private void removeEnhancements(String id) throws StoreException {
- MGraph enhancementGraph = getEnhancementGraph();
+ LockableMGraph enhancementGraph = getEnhancementGraph();
String enhancementQuery = QueryGenerator.getEnhancementsOfContent(id);
SelectQuery selectQuery = null;
try {
@@ -252,18 +254,23 @@ public class SolrStoreImpl implements So
}
List<Triple> willBeRemoved = new ArrayList<Triple>();
- ResultSet resultSet = tcManager.executeSparqlQuery(selectQuery,
enhancementGraph);
- while (resultSet.hasNext()) {
- SolutionMapping mapping = resultSet.next();
- UriRef ref = (UriRef) mapping.get("enhID");
- Iterator<Triple> tripleItr =
this.getEnhancementGraph().filter(ref, null, null);
- while (tripleItr.hasNext()) {
- Triple triple = tripleItr.next();
- willBeRemoved.add(triple);
+ Lock l = enhancementGraph.getLock().writeLock();
+ l.lock();
+ try {
+ ResultSet resultSet = tcManager.executeSparqlQuery(selectQuery,
enhancementGraph);
+ while (resultSet.hasNext()) {
+ SolutionMapping mapping = resultSet.next();
+ UriRef ref = (UriRef) mapping.get("enhID");
+ Iterator<Triple> tripleItr = enhancementGraph.filter(ref,
null, null);
+ while (tripleItr.hasNext()) {
+ Triple triple = tripleItr.next();
+ willBeRemoved.add(triple);
+ }
}
+ enhancementGraph.removeAll(willBeRemoved);
+ } finally {
+ l.unlock();
}
-
- enhancementGraph.removeAll(willBeRemoved);
}
private void updateEnhancementGraph(ContentItem ci) throws StoreException {