clerezza-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Reto Bachmann-Gmür <r...@wymiwyg.com>
Subject Re: ERROR: Quad: object cannot be null
Date Fri, 12 Jul 2013 13:59:58 GMT
Hi Minto

> Some questions:
> - Is this something that is different between your latest fast lane
> changes and the version before that?

Only since a couple of days queries sent to TcManager are in some case
actually fastlaned. So no fastlane was actually in use before.
>
> - Is there someway I can shortcut things to ensure using fastlane? Since
> most of my queries involve multiple graphs. We are having serious
> performance problems that might be related to slow-lane. That is why I
> started messing around fuseki in the first place (to do some performance
> analysis to determine clerezza overhead).

You could send the query directly to the TcProvider. Using this method
you don't have security, probably not even after resolution of
CLEREZZA-801.

Adding this possibility to TcManager would be a bit difficult as the
clients don't see the underlying TcProviders.

What we could do is to have:

public Object executeSparqlQuery(String query, UriRef
defaultGraphName, boolean forceFastlane)

if forceFastlane is true the query is fastlaned to the provider of
defaultGraphName even if the query targets other graphs as well. A
slightly weird behaviour would occur if the provider of
defaultGraphName also provides a graph that is shadowed by another
provider with a higher weight. In this rare case you could access
graphs that are otherwise not accessible. But this seems to be a
seldom corner case.

>
> - Also I see that for every graphs an osgi service is registered by
> TcManager. This seems just fine for a limited number of graphs. However
> in my case, with a huge number of graphs, I would like to disable this
> feature. How best to approach this?

We could add a service property to TcManager that allows to
enable/disable this feature.

Cheers,
Reto
>
> Regards,
>
> Minto
>
>
> Op 12-7-2013 14:55, Reto Bachmann-Gmür schreef:
>> Hi Minto
>>
>> >From the stacktrace we see that the query is not fastlaned (this is
>> because it is directed against all graphs). I'm not sure what's going
>> wrong. Maybe something in JenaGraphAdaptor.java. Would be ineteresting
>> to see if and how the value got from jena in JenaGraph.java:88
>> differst from the value returned to jena in JenaGraphAdaptor.java:115
>> After all all that happens is a wrapping to clerezza and wrapping back
>> to jena. We could add some optimization here but it should work
>> nevertheless.
>>
>> Cheers,
>> Reto
>>
>> On Fri, Jul 12, 2013 at 2:34 PM, Minto van der Sluis <minto@xup.nl> wrote:
>>> Hi Folks,
>>>
>>> I ran into some odd behaviour when doing a simple query (counting the
>>> number of graphs). This is the query I used:
>>>
>>> SELECT (COUNT(DISTINCT ?graphName) as ?nrOfGraphs)
>>> WHERE {
>>>   GRAPH ?graphName {
>>>     ?s ?p ?o
>>>   }
>>> }
>>>
>>> Running this query while using Clerezza gives me a "Quad: object cannot
>>> be null" (see stack trace below). However the exact same query using
>>> Jena Fuseki result in a proper answer. Both Clerezza and Fuseki are
>>> configured to use the exact same TDB storage on disk. Fuseki gives the
>>> following response:
>>>
>>> --------------
>>> | nrOfGraphs |
>>> ==============
>>> | 20538      |
>>> --------------
>>>
>>>
>>> Using Clerezza from a while ago seems to run the query just fine
>>> (although it takes way to long to respond).
>>>
>>> Now I wonder whether this behaviour is cause by recent Clerezza changes,
>>> but I am not sure about this. Maybe there is another cause.
>>>
>>> Anyone a clue?
>>>
>>> Regards,
>>>
>>> Minto
>>>
>>> Stacktrace:
>>> =========
>>> 2013-07-12 12:39:49,093 | ERROR | qtp2144814644-44 |
>>> RestAnnotationService            | us.rest.dm.RestAnnotationService  165
>>> | 213 - tmvplus-remote - 0.6.3.SNAPSHOT | Quad: object cannot be null
>>> java.lang.UnsupportedOperationException: Quad: object cannot be null
>>>         at com.hp.hpl.jena.sparql.core.Quad.<init>(Quad.java:63)
>>>         at com.hp.hpl.jena.tdb.lib.TupleLib.quad(TupleLib.java:162)
>>>         at com.hp.hpl.jena.tdb.lib.TupleLib.quad(TupleLib.java:153)
>>>         at com.hp.hpl.jena.tdb.lib.TupleLib.access$100(TupleLib.java:45)
>>>         at com.hp.hpl.jena.tdb.lib.TupleLib$4.convert(TupleLib.java:87)
>>>         at com.hp.hpl.jena.tdb.lib.TupleLib$4.convert(TupleLib.java:83)
>>>         at org.apache.jena.atlas.iterator.Iter$4.next(Iter.java:301)
>>>         at
>>> com.hp.hpl.jena.tdb.store.GraphTDBBase$ProjectQuadsToTriples.next(GraphTDBBase.java:175)
>>>         at
>>> com.hp.hpl.jena.tdb.store.GraphTDBBase$ProjectQuadsToTriples.next(GraphTDBBase.java:163)
>>>         at
>>> com.hp.hpl.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:94)
>>>         at
>>> org.apache.clerezza.rdf.jena.storage.JenaGraphAdaptor$1.next(JenaGraphAdaptor.java:115)
>>>         at
>>> org.apache.clerezza.rdf.jena.storage.JenaGraphAdaptor$1.next(JenaGraphAdaptor.java:96)
>>>         at
>>> org.apache.clerezza.rdf.core.impl.AbstractTripleCollection$1.next(AbstractTripleCollection.java:83)[
>>> 181:org.apache.clerezza.rdf.core:0.13.0.SNAPSHOT]
>>>         at
>>> org.apache.clerezza.rdf.core.impl.AbstractTripleCollection$1.next(AbstractTripleCollection.java:72)[
>>> 181:org.apache.clerezza.rdf.core:0.13.0.SNAPSHOT]
>>>         at
>>> org.apache.clerezza.rdf.jena.facade.JenaGraph$1.next(JenaGraph.java:99)
>>>         at
>>> org.apache.clerezza.rdf.jena.facade.JenaGraph$1.next(JenaGraph.java:88)
>>>         at
>>> com.hp.hpl.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:94)
>>>         at
>>> com.hp.hpl.jena.mem.TrackingTripleIterator.next(TrackingTripleIterator.java:47)
>>>         at
>>> com.hp.hpl.jena.mem.TrackingTripleIterator.next(TrackingTripleIterator.java:31)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIterTriplePattern$TripleMapper.hasNextBinding(QueryIterTriplePattern.java:153)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:81)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIterBlockTriples.hasNextBinding(QueryIterBlockTriples.java:64)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIterProcessBinding.hasNextBinding(QueryIterProcessBinding.java:60)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.main.iterator.QueryIterGraph$QueryIterGraphInner.hasNextBinding(QueryIterGraph.java:123)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:81)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIterGroup$1.initializeIterator(QueryIterGroup.java:85)
>>>         at
>>> org.apache.jena.atlas.iterator.IteratorDelayedInitialization.init(IteratorDelayedInitialization.java:37)
>>>         at
>>> org.apache.jena.atlas.iterator.IteratorDelayedInitialization.hasNext(IteratorDelayedInitialization.java:47)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIterPlainWrapper.hasNextBinding(QueryIterPlainWrapper.java:54)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIterProcessBinding.hasNextBinding(QueryIterProcessBinding.java:60)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIterConvert.hasNextBinding(QueryIterConvert.java:59)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
>>>         at
>>> com.hp.hpl.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream.java:72)
>>>         at
>>> org.apache.clerezza.rdf.jena.sparql.ResultSetWrapper.<init>(ResultSetWrapper.java:40)
>>>         at
>>> org.apache.clerezza.rdf.jena.sparql.JenaSparqlEngine.execute(JenaSparqlEngine.java:115)
>>>         at
>>> org.apache.clerezza.rdf.core.access.TcManager.executeSparqlQuery(TcManager.java:294)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>> Method)[:1.7.0_25]
>>>         at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_25]
>>>         at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_25]
>>>         at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_25]
>>>         at
>>> org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54)
>>>         at
>>> org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)
>>>         at
>>> org.apache.clerezza.rdf.core.access.$TcManager552685843.executeSparqlQuery(Unknown
>>> Source)
>>>         at
>>> nl.overheid.stelsel.digimelding.astore.storage.clerezza.ClerezzaStorageProvider.query(ClerezzaStorageProvider.java:250)
>>>         ...
>>>
>>
>
>
> --
> ir. ing. Minto van der Sluis
> Software innovator / renovator
> Xup BV
>
> Mobiel: +31 (0) 626 014541
>

Mime
View raw message