Dear all I've successfully used the Fuseki2 Administration API ( https://jena.apache.org/documentation/fuseki2/fuseki-server-protocol.html) to create and delete a dataset (the dataset config is appended). Thank you very much for the easy to use API.
After deleting a dataset, trying to recreate it, fails. Fuseki2 throws the appended stack trace. Is there a way to remove the lucene index and the lock over the administration API? Cheers, Ivan db_1 | [2020-06-10 16:11:08] Admin INFO [6] DELETE http://localhost:3030/$/datasets/knora-test db_1 | [2020-06-10 16:11:08] Admin INFO [6] DELETE dataset=/knora-test db_1 | [2020-06-10 16:11:08] Admin WARN [6] RC = 500 : Not in a transaction db_1 | org.apache.jena.tdb.transaction.TDBTransactionException: Not in a transaction db_1 | at org.apache.jena.tdb.transaction.DatasetGraphTransaction.get(DatasetGraphTransaction.java:138) db_1 | at org.apache.jena.tdb.transaction.DatasetGraphTransaction.get(DatasetGraphTransaction.java:49) db_1 | at org.apache.jena.sparql.core.DatasetGraphWrapper.getWrapped(DatasetGraphWrapper.java:41) db_1 | at org.apache.jena.sparql.core.DatasetGraphWrapper.getBase(DatasetGraphWrapper.java:51) db_1 | at org.apache.jena.fuseki.server.DataService.expel(DataService.java:277) db_1 | at org.apache.jena.fuseki.server.DataService.shutdown(DataService.java:267) db_1 | at org.apache.jena.fuseki.mgt.ActionDatasets.execDeleteItem(ActionDatasets.java:389) db_1 | at org.apache.jena.fuseki.ctl.ActionContainerItem.performDelete(ActionContainerItem.java:99) db_1 | at org.apache.jena.fuseki.ctl.ActionContainerItem.execute(ActionContainerItem.java:45) db_1 | at org.apache.jena.fuseki.ctl.ActionCtl.executeLifecycle(ActionCtl.java:49) db_1 | at org.apache.jena.fuseki.ctl.ActionCtl.process(ActionCtl.java:39) db_1 | at org.apache.jena.fuseki.servlets.ActionExecLib.execAction(ActionExecLib.java:106) db_1 | at org.apache.jena.fuseki.servlets.ActionExecLib.execAction(ActionExecLib.java:79) db_1 | at org.apache.jena.fuseki.servlets.ServletProcessor.service(ServletProcessor.java:52) db_1 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) db_1 | at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) db_1 | at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655) db_1 | at org.apache.jena.fuseki.servlets.FusekiFilter.doFilter(FusekiFilter.java:59) db_1 | at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) db_1 | at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) db_1 | at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) db_1 | at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) db_1 | at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) db_1 | at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) db_1 | at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) db_1 | at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) db_1 | at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) db_1 | at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) db_1 | at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) db_1 | at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) db_1 | at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) db_1 | at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) db_1 | at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) db_1 | at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) db_1 | at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) db_1 | at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) db_1 | at org.apache.jena.fuseki.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:285) db_1 | at org.apache.jena.fuseki.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:248) db_1 | at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634) db_1 | at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533) db_1 | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) db_1 | at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) db_1 | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) db_1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) db_1 | at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) db_1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) db_1 | at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340) db_1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) db_1 | at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) db_1 | at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) db_1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) db_1 | at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242) db_1 | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) db_1 | at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:690) db_1 | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) db_1 | at org.eclipse.jetty.server.Server.handle(Server.java:503) db_1 | at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364) db_1 | at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) db_1 | at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) db_1 | at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) db_1 | at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) db_1 | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) db_1 | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) db_1 | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) db_1 | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) db_1 | at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) db_1 | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) db_1 | at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) db_1 | at java.base/java.lang.Thread.run(Unknown Source) db_1 | [2020-06-10 16:11:08] Admin INFO [6] 500 Not in a transaction (9 ms) db_1 | [2020-06-10 16:11:08] Admin INFO [7] POST http://localhost:3030/$/datasets db_1 | [2020-06-10 16:11:08] Admin INFO [7] Filename: fuseki-knora-test-repository-config.ttl, Content-Type=application/octet-stream, Charset=null => Turtle : Count=36 Triples=36 Quads=0 db_1 | [2020-06-10 16:11:08] Admin INFO [7] Create database : name = /knora-test db_1 | [2020-06-10 16:11:08] Admin WARN [7] RC = 500 : caught: openIndexWriter db_1 | org.apache.jena.assembler.exceptions.AssemblerException: caught: openIndexWriter db_1 | doing: db_1 | root: http://base/#indexLucene with type: http://jena.apache.org/text#TextIndexLucene assembler class: class org.apache.jena.query.text.assembler.TextIndexLuceneAssembler db_1 | root: http://base/#text_dataset with type: http://jena.apache.org/text#TextDataset assembler class: class org.apache.jena.query.text.assembler.TextDatasetAssembler db_1 | db_1 | at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.openBySpecificType(AssemblerGroup.java:165) db_1 | at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.open(AssemblerGroup.java:144) db_1 | at org.apache.jena.assembler.assemblers.AssemblerGroup$ExpandingAssemblerGroup.open(AssemblerGroup.java:93) db_1 | at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:39) db_1 | at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:35) db_1 | at org.apache.jena.query.text.assembler.TextDatasetAssembler.open(TextDatasetAssembler.java:62) db_1 | at org.apache.jena.query.text.assembler.TextDatasetAssembler.open(TextDatasetAssembler.java:42) db_1 | at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.openBySpecificType(AssemblerGroup.java:157) db_1 | at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.open(AssemblerGroup.java:144) db_1 | at org.apache.jena.assembler.assemblers.AssemblerGroup$ExpandingAssemblerGroup.open(AssemblerGroup.java:93) db_1 | at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:39) db_1 | at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:35) db_1 | at org.apache.jena.fuseki.build.FusekiConfig.getDataset(FusekiConfig.java:638) db_1 | at org.apache.jena.fuseki.build.FusekiConfig.buildDataService(FusekiConfig.java:443) db_1 | at org.apache.jena.fuseki.build.FusekiConfig.buildDataAccessPoint(FusekiConfig.java:433) db_1 | at org.apache.jena.fuseki.mgt.ActionDatasets.execPostContainer(ActionDatasets.java:216) db_1 | at org.apache.jena.fuseki.ctl.ActionContainerItem.performPost(ActionContainerItem.java:81) db_1 | at org.apache.jena.fuseki.ctl.ActionContainerItem.execute(ActionContainerItem.java:43) db_1 | at org.apache.jena.fuseki.ctl.ActionCtl.executeLifecycle(ActionCtl.java:49) db_1 | at org.apache.jena.fuseki.ctl.ActionCtl.process(ActionCtl.java:39) db_1 | at org.apache.jena.fuseki.servlets.ActionExecLib.execAction(ActionExecLib.java:106) db_1 | at org.apache.jena.fuseki.servlets.ActionExecLib.execAction(ActionExecLib.java:79) db_1 | at org.apache.jena.fuseki.servlets.ServletProcessor.service(ServletProcessor.java:52) db_1 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) db_1 | at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) db_1 | at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655) db_1 | at org.apache.jena.fuseki.servlets.FusekiFilter.doFilter(FusekiFilter.java:59) db_1 | at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) db_1 | at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) db_1 | at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) db_1 | at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) db_1 | at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) db_1 | at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) db_1 | at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) db_1 | at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) db_1 | at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) db_1 | at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) db_1 | at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) db_1 | at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) db_1 | at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) db_1 | at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) db_1 | at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) db_1 | at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) db_1 | at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) db_1 | at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) db_1 | at org.apache.jena.fuseki.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:285) db_1 | at org.apache.jena.fuseki.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:248) db_1 | at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634) db_1 | at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533) db_1 | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) db_1 | at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) db_1 | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) db_1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) db_1 | at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) db_1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) db_1 | at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340) db_1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) db_1 | at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) db_1 | at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) db_1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) db_1 | at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242) db_1 | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) db_1 | at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:690) db_1 | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) db_1 | at org.eclipse.jetty.server.Server.handle(Server.java:503) db_1 | at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364) db_1 | at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) db_1 | at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) db_1 | at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) db_1 | at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) db_1 | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) db_1 | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) db_1 | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) db_1 | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) db_1 | at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) db_1 | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) db_1 | at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) db_1 | at java.base/java.lang.Thread.run(Unknown Source) db_1 | Caused by: org.apache.jena.query.text.TextIndexException: openIndexWriter db_1 | at org.apache.jena.query.text.TextIndexLucene.openIndexWriter(TextIndexLucene.java:198) db_1 | at org.apache.jena.query.text.TextIndexLucene.<init>(TextIndexLucene.java:181) db_1 | at org.apache.jena.query.text.TextDatasetFactory.createLuceneIndex(TextDatasetFactory.java:109) db_1 | at org.apache.jena.query.text.assembler.TextIndexLuceneAssembler.open(TextIndexLuceneAssembler.java:199) db_1 | at org.apache.jena.query.text.assembler.TextIndexLuceneAssembler.open(TextIndexLuceneAssembler.java:42) db_1 | at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.openBySpecificType(AssemblerGroup.java:157) db_1 | ... 77 more db_1 | Caused by: org.apache.lucene.store.LockObtainFailedException: Lock held by this virtual machine: /fuseki/lucene/knora-test/write.lock db_1 | at org.apache.lucene.store.NativeFSLockFactory.obtainFSLock(NativeFSLockFactory.java:139) db_1 | at org.apache.lucene.store.FSLockFactory.obtainLock(FSLockFactory.java:41) db_1 | at org.apache.lucene.store.BaseDirectory.obtainLock(BaseDirectory.java:45) db_1 | at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:718) db_1 | at org.apache.jena.query.text.TextIndexLucene.openIndexWriter(TextIndexLucene.java:188) db_1 | ... 82 more db_1 | [2020-06-10 16:11:08] Admin INFO [7] 500 caught: openIndexWriter (42 ms) ------------------------- @prefix : <http://base/#> . @prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix fuseki: <http://jena.apache.org/fuseki#> . @prefix text: <http://jena.apache.org/text#> . @prefix knora-base: <http://www.knora.org/ontology/knora-base#> . :service_tdb_all a fuseki:Service ; rdfs:label "TDB knora-test" ; fuseki:dataset :text_dataset ; fuseki:name "knora-test" ; fuseki:serviceQuery "query" , "sparql" ; fuseki:serviceReadGraphStore "get" ; fuseki:serviceReadWriteGraphStore "data" ; fuseki:serviceUpdate "update" ; fuseki:serviceUpload "upload" . ## --------------------------------------------------------------- ## This URI must be fixed - it's used to assemble the text dataset. :text_dataset rdf:type text:TextDataset ; text:dataset :tdb_dataset_readwrite ; text:index :indexLucene . # A TDB datset used for RDF storage :tdb_dataset_readwrite a tdb:DatasetTDB ; tdb:unionDefaultGraph true ; tdb:location "/fuseki/databases/knora-test" . # Text index description :indexLucene a text:TextIndexLucene ; text:directory "/fuseki/lucene/knora-test" ; ##text:directory "mem" ; text:entityMap :entMap . # Mapping in the index # URI stored in field "uri" # knora-base:valueHasString is mapped to field "text" :entMap a text:EntityMap ; text:entityField "uri" ; text:defaultField "text" ; text:uidField "uid" ; text:map ( [ text:field "text" ; text:predicate rdfs:label ] [ text:field "text" ; text:predicate knora-base:valueHasString ] [ text:field "text" ; text:predicate knora-base:valueHasComment ] ) .
