Hi Ivan,
The "delete database" only works with databases created via the UI, not
via a provided configuration file (actually ones laid out in the /run/
area if you want to mimic that).
When I tried it I got a different error:
"""
[2] There are 0 configuration files, not one.
"""
and no stacktrace.
Which version of Fuseki are you running?
Was the server doing anything else at the time?
Andy
On 10/06/2020 17:20, Ivan Subotic wrote:
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 ]
) .