jena icon indicating copy to clipboard operation
jena copied to clipboard

Fuseki-server fails to start when using the drop in jar for service-enhancer

Open OyvindLGjesdal opened this issue 1 year ago • 8 comments

Version

4.10.0

What happened?

The artefact downloaded from maven for the service enhancer return class not found, when dropped into the extra folder.

This happens when running fuseki as a service, and loading the service enhancer from a configuration file, while downloading the 4.10.0 ServiceEnhancer artefact from maven.

Is it the order of the class loading?

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?

from the docs:

The SE plugin can be manually built or downloaded from maven central (it is self-contained without transitive dependencies). Placing it into the run/extra folder makes it available for use with Fuseki. The plugin and Fuseki versions should match.

Command used to startup fuseki:

/opt/fuseki/fuseki-server

Relevant output and stacktrace

Jan 05 11:12:01 server fuseki-server[92517]: Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/cache/CacheBuilder
Jan 05 11:12:01 server fuseki-server[92517]:         at org.apache.jena.sparql.service.enhancer.impl.ServiceResponseCache.<init>(ServiceResponseCache.java:59)
Jan 05 11:12:01 server fuseki-server[92517]:         at org.apache.jena.sparql.service.enhancer.impl.ServiceResponseCache.<init>(ServiceResponseCache.java:53)
Jan 05 11:12:01 server fuseki-server[92517]:         at org.apache.jena.sparql.service.enhancer.init.ServiceEnhancerInit.init(ServiceEnhancerInit.java:90)
Jan 05 11:12:01 server fuseki-server[92517]:         at org.apache.jena.sparql.service.enhancer.init.ServiceEnhancerInit.start(ServiceEnhancerInit.java:81)
Jan 05 11:12:01 server fuseki-server[92517]:         at org.apache.jena.base.module.Subsystem.lambda$initialize$1(Subsystem.java:117)
Jan 05 11:12:01 server fuseki-server[92517]:         at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
Jan 05 11:12:01 server fuseki-server[92517]:         at org.apache.jena.base.module.Subsystem.forEach(Subsystem.java:193)
Jan 05 11:12:01 server fuseki-server[92517]:         at org.apache.jena.base.module.Subsystem.forEach(Subsystem.java:169)
Jan 05 11:12:01 server fuseki-server[92517]:         at org.apache.jena.base.module.Subsystem.initialize(Subsystem.java:115)
Jan 05 11:12:01 server fuseki-server[92517]:         at org.apache.jena.sys.JenaSystem.init(JenaSystem.java:89)
Jan 05 11:12:01 server fuseki-server[92517]:         at arq.cmdline.CmdARQ.<clinit>(CmdARQ.java:29)
Jan 05 11:12:01 server fuseki-server[92517]:         at org.apache.jena.fuseki.cmd.FusekiCmd.main(FusekiCmd.java:65)
Jan 05 11:12:01 server fuseki-server[92517]: Caused by: java.lang.ClassNotFoundException: com.google.common.cache.CacheBuilder
Jan 05 11:12:01 server fuseki-server[92517]:         at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
Jan 05 11:12:01 server fuseki-server[92517]:         at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
Jan 05 11:12:01 server fuseki-server[92517]:         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
Jan 05 11:12:01 server fuseki-server[92517]:         ... 12 more

Are you interested in making a pull request?

None

OyvindLGjesdal avatar Jan 08 '24 11:01 OyvindLGjesdal

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

rvesse avatar Jan 08 '24 11:01 rvesse

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

afs avatar Jan 09 '24 13:01 afs

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

OyvindLGjesdal avatar Jan 09 '24 20:01 OyvindLGjesdal

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



fetching-data-failed

OyvindLGjesdal avatar Jan 10 '24 09:01 OyvindLGjesdal

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 ;
    .

OyvindLGjesdal avatar Jan 10 '24 15:01 OyvindLGjesdal

  • 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.

Aklakan avatar Jan 27 '24 08:01 Aklakan

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).

afs avatar Jan 27 '24 11:01 afs

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(?).

Aklakan avatar Jan 27 '24 15:01 Aklakan

Completed by #2271, #2288 and https://github.com/apache/jena-site/pull/182

afs avatar May 31 '24 22:05 afs