Comments (9)
- Long term - create a new issue and PR to migrate the plugin to using the new preferred cache APIs
I did a quick check for what parts of guava my service enhancer code uses - and its only the cache.
The caffeine cache is transitively provided by arq via atlas - so migrating the service enhancer plugin to caffeine should restore "drop-in" functionality. I'll look into it.
from jena.
The second problem is just a misconfigured assembler on my part and is now solved.
correlated joins are enabled and working, when it is placed in between the service and the dataset.
Fixed assembler
@prefix fuseki: <http://jena.apache.org/fuseki#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix tdb2: <http://jena.apache.org/2016/tdb#> .
@prefix text: <http://jena.apache.org/text#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix spatial: <http://jena.apache.org/spatial#> .
@prefix se: <http://jena.apache.org/service-enhancer#> .
@prefix : <#> .
<#service>
rdf:type fuseki:Service ;
fuseki:name "sparql" ;
fuseki:serviceQuery "query" ;
ja:context [ ja:cxtName "arq:logExec" ; ja:cxtValue "info" ], [ja:cxtName "arq:optReorderBGP" ; ja:cxtValue "info"];
fuseki:endpoint [ fuseki:operation fuseki:shacl ;
fuseki:name "shacl" ];
fuseki:dataset <#serviceenhancer> ;
fuseki:serviceReadGraphStore "data" ;
.
<#serviceenhancer> a se:DatasetServiceEnhancer ;
ja:baseDataset <#dataset>.
<#dataset> rdf:type tdb:DatasetTDB ; tdb:location "/var/fuseki/databases/sparql" ;
tdb:unionDefaultGraph true ;
.
from jena.
I see guava was added for use not that long ago, would it make sense to add the dependency to the service-enhancer pom.xml? to ensure that it is loaded, or could it be that it is my user error?
I thought actually the opposite was true, Guava was removed in favour of ben-manes/caffeine since we were only really using Guava for caching and the lack of stability in Guava APIs meant we were having to mess around with shading which we no longer wanted to do.
So this might be a side-effect of that, the service enhancer plugin previously assumed that it would get Guava transitively from elsewhere in Jena which is no longer true.
So yes probably two options:
- Short term - explicitly add Guava as a local dependency to your Fuseki Classpath
- Long term - create a new issue and PR to migrate the plugin to using the new preferred cache APIs
from jena.
Google Guava also has dependencies:
[INFO] +- com.google.guava:guava:jar:32.1.3-jre:compile
[INFO] | +- com.google.guava:failureaccess:jar:1.0.1:compile
[INFO] | +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
[INFO] | +- com.google.code.findbugs:jsr305:jar:3.0.2:compile
[INFO] | \- com.google.j2objc:j2objc-annotations:jar:2.8:compile
from jena.
https://github.com/apache/jena/blob/jena-4.10.0/jena-extras/jena-serviceenhancer/pom.xml#L103
It looks like the artefact published isn't built using the profile bundle, which runs shading.
<!-- Profile to build a "plugin jar bundle" that can be loaded with fuseki or any other jena-based app -->
<profiles>
<profile>
<id>bundle</id>
<dependencies>
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>jena-arq</artifactId>
<version>4.10.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
When I actived the profile (by setting activeByDefault true) and built the outputs, the jar is a 3 MB vs 207 KB. Will check if it launches tomorrow.
Outputs of build at 4.10 with profile active:
drwxr-xr-x@ 14 448B Jan 9 21:40 .
drwxr-xr-x@ 7 224B Jan 9 21:41 ..
-rw-r--r--@ 1 30B Jan 9 21:39 .plxarc
drwxr-xr-x@ 4 128B Jan 9 21:39 classes
drwxr-xr-x@ 3 96B Jan 9 21:39 generated-sources
drwxr-xr-x@ 3 96B Jan 9 21:39 generated-test-sources
-rw-r--r--@ 1 165K Jan 9 21:40 jena-serviceenhancer-4.10.0-sources.jar
-rw-r--r--@ 1 3.1M Jan 9 21:40 jena-serviceenhancer-4.10.0.jar
drwxr-xr-x@ 3 96B Jan 9 21:40 maven-archiver
drwxr-xr-x@ 3 96B Jan 9 21:39 maven-shared-archive-resources
drwxr-xr-x@ 3 96B Jan 9 21:39 maven-status
-rw-r--r--@ 1 207K Jan 9 21:40 original-jena-serviceenhancer-4.10.0.jar
drwxr-xr-x@ 16 512B Jan 9 21:40 surefire-reports
drwxr-xr-x@ 6 192B Jan 9 21:39 test-classes
from jena.
It starts up when dropped in, but the first example in the docs using wikidata fails with a timeout.
It looks like a different bug, either in the example, or in the rewriting, where the ?s values aren't injected.
If the VALUES clause are moved into the service, there is a cache result.
The example from the docs:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT ?s ?l {
# The ids below correspond in order to: Apache Jena, Semantic Web, RDF, SPARQL, Andy Seaborne
VALUES ?s { wd:Q1686799 wd:Q54837 wd:Q54872 wd:Q54871 wd:Q108379795 }
SERVICE <cache:loop:bulk+5:https://query.wikidata.org/sparql> {
SELECT ?l {
?s rdfs:label ?l
FILTER(langMatches(lang(?l), 'en'))
} ORDER BY ?l LIMIT 1
}
}
Configuration of endpoint in /var/fuseki/configuration/sparql.ttl
@prefix fuseki: <http://jena.apache.org/fuseki#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix tdb2: <http://jena.apache.org/2016/tdb#> .
@prefix text: <http://jena.apache.org/text#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix spatial: <http://jena.apache.org/spatial#> .
@prefix se: <http://jena.apache.org/service-enhancer#> .
@prefix : <#> .
<#service> rdf:type fuseki:Service ;
rdf:type se:DatasetServiceEnhancer ;
fuseki:name "sparql" ;
fuseki:serviceQuery "query" ;
ja:context [ ja:cxtName "arq:logExec" ; ja:cxtValue "info" ], [ja:cxtName "arq:optReorderBGP" ; ja:cxtValue "info"];
fuseki:endpoint [ fuseki:operation fuseki:shacl ;
fuseki:name "shacl" ];
fuseki:dataset <#dataset> ;
fuseki:serviceReadGraphStore "data" ;
.
<#dataset> rdf:type tdb:DatasetTDB ; tdb:location "/var/fuseki/databases/sparql" ;
tdb:unionDefaultGraph true ;
from the logs:
Jan 10 10:18:10 server fuseki-server[98423]: PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
Jan 10 10:18:10 server fuseki-server[98423]: PREFIX wd: <http://www.wikidata.org/entity/>
Jan 10 10:18:10 server fuseki-server[98423]: SELECT ?s ?l {
Jan 10 10:18:10 server fuseki-server[98423]: # The ids below correspond in order to: Apache Jena, Semantic Web, RDF, SPARQL, Andy Seaborne
Jan 10 10:18:10 server fuseki-server[98423]: VALUES ?s { wd:Q1686799 wd:Q54837 wd:Q54872 wd:Q54871 wd:Q108379795 }
Jan 10 10:18:10 server fuseki-server[98423]:
Jan 10 10:18:10 server fuseki-server[98423]: SERVICE <cache:loop:bulk+5:https://query.wikidata.org/sparql> {
Jan 10 10:18:10 server fuseki-server[98423]: SELECT ?l {
Jan 10 10:18:10 server fuseki-server[98423]: ?s rdfs:label ?l
Jan 10 10:18:10 server fuseki-server[98423]: FILTER(langMatches(lang(?l), 'en'))
Jan 10 10:18:10 server fuseki-server[98423]: } ORDER BY ?l LIMIT 1
Jan 10 10:18:10 server fuseki-server[98423]: }
Jan 10 10:18:10 server fuseki-server[98423]: }
Jan 10 10:18:10 server fuseki-server[98423]: 10:18:10 INFO QueryIterServiceBulk :: Schedule for current batch:
Jan 10 10:18:10 server fuseki-server[98423]: 10:18:10 INFO QueryIterServiceBulk :: input 0: [[0..1)=fetch]
Jan 10 10:18:10 server fuseki-server[98423]: 10:18:10 INFO BatchQueryRewriter :: Rewritten bulk query: SELECT *
Jan 10 10:18:10 server fuseki-server[98423]: WHERE
Jan 10 10:18:10 server fuseki-server[98423]: { { { SELECT ?l
Jan 10 10:18:10 server fuseki-server[98423]: WHERE
Jan 10 10:18:10 server fuseki-server[98423]: { ?s <http://www.w3.org/2000/01/rdf-schema#label> ?l
Jan 10 10:18:10 server fuseki-server[98423]: FILTER langMatches(lang(?l), "en")
Jan 10 10:18:10 server fuseki-server[98423]: }
Jan 10 10:18:10 server fuseki-server[98423]: ORDER BY ?l
Jan 10 10:18:10 server fuseki-server[98423]: LIMIT 1
Jan 10 10:18:10 server fuseki-server[98423]: }
Jan 10 10:18:10 server fuseki-server[98423]: BIND(0 AS ?__idx__)
Jan 10 10:18:10 server fuseki-server[98423]: }
Jan 10 10:18:10 server fuseki-server[98423]: UNION
Jan 10 10:18:10 server fuseki-server[98423]: { BIND(1000000000 AS ?__idx__) }
Jan 10 10:19:10 server fuseki-server[98423]: 10:19:10 WARN Fuseki :: [3] RC = 500 : Prefetching data failed. Reason: Server Error
Jan 10 10:19:10 server fuseki-server[98423]: java.lang.RuntimeException: Prefetching data failed. Reason: Server Error
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.util.SinglePrefetchIterator._prefetch(SinglePrefetchIterator.java:68) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.util.SinglePrefetchIterator.hasNext(SinglePrefetchIterator.java:77) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.atlas.iterator.IteratorWrapper.hasNext(IteratorWrapper.java:37) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.atlas.iterator.IteratorOnClose.hasNext(IteratorOnClose.java:45) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIterPlainWrapper.hasNextBinding(QueryIterPlainWrapper.java:59) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:116) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIterPeek.hasNextBinding(QueryIterPeek.java:57) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:116) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.QueryIterServiceBulk.moveToNext(QueryIterServiceBulk.java:201) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.QueryIterServiceBulk.moveToNext(QueryIterServiceBulk.java:82) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.atlas.iterator.IteratorSlotted.hasNext(IteratorSlotted.java:63) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIterConvert.hasNextBinding(QueryIterConvert.java:58) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:116) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIterPeek.hasNextBinding(QueryIterPeek.java:57) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:116) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.RequestExecutor.moveToNext(RequestExecutor.java:112) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.RequestExecutor.moveToNext(RequestExecutor.java:53) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.atlas.iterator.IteratorSlotted.hasNext(IteratorSlotted.java:63) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.join.QueryIterHashJoin.create(QueryIterHashJoin.java:47) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.join.QueryIterHashJoin.create(QueryIterHashJoin.java:66) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.join.Join.hashJoin(Join.java:115) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.join.Join.join(Join.java:58) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:216) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:110) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.algebra.op.OpJoin.visit(OpJoin.java:75) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:43) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.main.OpExecutor.exec(OpExecutor.java:115) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.tdb.solver.OpExecutorTDB1.exec(OpExecutorTDB1.java:87) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:393) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:243) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.algebra.op.OpProject.visit(OpProject.java:46) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:43) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.main.OpExecutor.exec(OpExecutor.java:115) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.tdb.solver.OpExecutorTDB1.exec(OpExecutorTDB1.java:87) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:87) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.main.QC.execute(QC.java:53) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.main.QueryEngineMain.eval(QueryEngineMain.java:55) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.tdb.solver.QueryEngineTDB.eval(QueryEngineTDB.java:102) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.QueryEngineBase.evaluate(QueryEngineBase.java:164) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.QueryEngineBase.createPlan(QueryEngineBase.java:128) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.QueryEngineBase.getPlan(QueryEngineBase.java:110) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.tdb.solver.QueryEngineTDB$QueryEngineFactoryTDB.create(QueryEngineTDB.java:136) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.exec.QueryExecDataset.getPlan(QueryExecDataset.java:514) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.exec.QueryExecDataset.startQueryIterator(QueryExecDataset.java:477) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.exec.QueryExecDataset.execute(QueryExecDataset.java:170) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.exec.QueryExecDataset.select(QueryExecDataset.java:164) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.exec.QueryExecutionAdapter.execSelect(QueryExecutionAdapter.java:115) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.SPARQLQueryProcessor.executeQuery(SPARQLQueryProcessor.java:374) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.SPARQLQueryProcessor.execute(SPARQLQueryProcessor.java:279) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.SPARQLQueryProcessor.executeWithParameter(SPARQLQueryProcessor.java:224) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.SPARQLQueryProcessor.execute(SPARQLQueryProcessor.java:209) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.ActionService.executeLifecycle(ActionService.java:58) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.SPARQLQueryProcessor.execPost(SPARQLQueryProcessor.java:84) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.ActionProcessor.process(ActionProcessor.java:34) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.ActionBase.process(ActionBase.java:54) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.ActionExecLib.execActionSub(ActionExecLib.java:127) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.ActionExecLib.execAction(ActionExecLib.java:101) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.server.Dispatcher.dispatchAction(Dispatcher.java:231) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.server.Dispatcher.process(Dispatcher.java:221) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.server.Dispatcher.dispatch(Dispatcher.java:148) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.FusekiFilter.doFilter(FusekiFilter.java:49) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:458) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:373) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:370) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:334) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.fuseki.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:288) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:822) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.Server.handle(Server.java:563) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149) [fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at java.base/java.lang.Thread.run(Thread.java:829) [?:?]
Jan 10 10:19:10 server fuseki-server[98423]: Caused by: org.apache.jena.sparql.engine.http.QueryExceptionHTTP: Server Error
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.http.QueryExceptionHTTP.rewrap(QueryExceptionHTTP.java:49) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.exec.http.QueryExecHTTP.executeQuery(QueryExecHTTP.java:551) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.exec.http.QueryExecHTTP.execRowSet(QueryExecHTTP.java:172) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.exec.http.QueryExecHTTP.select(QueryExecHTTP.java:163) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.exec.http.Service.exec(Service.java:242) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.single.ServiceExecutorHttp.createExecution(ServiceExecutorHttp.java:45) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.single.ChainingServiceExecutorWrapper.createExecution(ChainingServiceExecutorWrapper.java:51) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.single.ServiceExecutorOverRegistry.createExecution(ServiceExecutorOverRegistry.java:65) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.init.ServiceEnhancerInit.lambda$registerServiceExecutorSelf$0(ServiceEnhancerInit.java:150) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.single.ServiceExecutorOverRegistry.createExecution(ServiceExecutorOverRegistry.java:65) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.bulk.ServiceExecutorBulkToSingle$1.nextStage(ServiceExecutorBulkToSingle.java:48) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply.makeNextStage(QueryIterRepeatApply.java:100) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:60) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:116) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:38) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.util.QueryIterDefer.hasNextBinding(QueryIterDefer.java:50) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:116) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.atlas.iterator.Iter$IterMap.hasNext(Iter.java:422) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.util.PeekIteratorLazy.computeNext(PeekIteratorLazy.java:48) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.util.IteratorUtils$1.computeNext(IteratorUtils.java:72) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.util.IteratorUtils$1.computeNext(IteratorUtils.java:58) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.QueryIterWrapperCache.setupForNextLhsBinding(QueryIterWrapperCache.java:133) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.QueryIterWrapperCache.moveToNext(QueryIterWrapperCache.java:106) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.QueryIterWrapperCache.moveToNext(QueryIterWrapperCache.java:45) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.atlas.iterator.IteratorSlotted.hasNext(IteratorSlotted.java:63) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:38) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:116) ~[fuseki-server.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.IteratorFactoryWithBuffer$SubIteratorImpl.prefetch(IteratorFactoryWithBuffer.java:181) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: at org.apache.jena.sparql.service.enhancer.impl.util.SinglePrefetchIterator._prefetch(SinglePrefetchIterator.java:64) ~[jena-serviceenhancer-4.10.0.jar:4.10.0]
Jan 10 10:19:10 server fuseki-server[98423]: ... 118 more
from jena.
Good idea.
If the Jena cache abstraction works, the choice can be abstracted away.
But the abstraction is basic functionality only without any build control except size.
One reason for switching is to reduce the exposure to Guava which is a big library and Jena only uses some parts of it. When Jena is used as a library, there is a risk of version conflicts with the rest of the application choices. Shading solved that but it means application have two copies of guava (or more - shading the version to get isolation is common).
from jena.
Switching the cache to caffeine is doable, but unfortunately for my last post I had only searched for 'guava'.
I noticed my code also relies on com.google.common.collect.{Range, RangeMap, RangeSet, etc}
for managing the ranges of cached data. This part would be too much effort to replace - at least in the short run.
One way to build the jar-bundle with maven only:
# Fetch the serviceenhancer pom from maven central
mvn dependency:copy -D'artifact=org.apache.jena:jena-serviceenhancer:4.10.0:pom' \
-Dmdep.stripVersion=true -D'outputDirectory=.'
# Build using the 'bundle' profile
mvn -f jena-serviceenhancer.pom -Pbundle package
- Maybe for now its best to just update the documentation that a custom build step using maven is needed.
- It would be possible to document specifically that guava is needed in addition (possibly adding download links) - but then every dependency change might require a documentation update - bad.
- Might packaging as a Fuseki module be an option that makes things easier? So far we are just using our own fork (which mainly adds a method to recreate the spatial index on-demand) - it seems there are no "official" jena fuseki modules published as part of the jena release(?).
from jena.
Completed by #2271, #2288 and apache/jena-site#182
from jena.
Related Issues (20)
- Fuseki WAR file fails to start HOT 1
- vite-plugin-istanbul 6.0.1+ not compatible with Fuseki UI build. HOT 1
- moving/renaming `:jena-ontapi` vocabularies.
- [Fuseki] Reloadable configuration files HOT 5
- `mvn clean install` fails HOT 8
- RDFXML: can't parse rdf:XMLLiteral HOT 17
- Spread out the days dependabot PRs are generated
- OntModel enhancements HOT 3
- Fuseki query endpoint stopped working on jena-fuseki-main upgrade HOT 6
- jena-benchmark-jmh module defunct HOT 10
- Remove <dependencyPath> from POMs where it is unnecessary
- Clean warnings in jena-ontapi
- trouble with Fuseki UI and one AJAX request (/$/stats) HOT 9
- Fuseki HttpAction: Check and improve the transaction lifecycle for HTTP action execution.
- Fuseki - setting the context path to a relative path causes 404s.
- Support for SPARQL CDTs (lists and maps as literals) HOT 1
- Using a reasoner to retrieve individuals beloning to a Class HOT 3
- How do you work with jena-fuseki-ui for local development? HOT 4
- Update jena-text to use Lucene in a Java21 compatible way.
- Always use hash joins when joining VALUES blocks
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jena.