Thanks for investigating!

In my docker image of fuseki2 I already use the "feature" that creating
with an name reuses the existing database folder, which is quite neat way
to move things around (and use tdbloader2 ) without having to make a config
manually (which presumably you can't remove in the UI at all).

So what about just removing the whole folder on delete, plus the uuid
graphs? Howcome they are not deleted now..?
On 31 Jan 2015 14:21, "Bruno P. Kinoshita (JIRA)" <[email protected]> wrote:

>
>     [
> https://issues.apache.org/jira/browse/JENA-869?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14299830#comment-14299830
> ]
>
> Bruno P. Kinoshita commented on JENA-869:
> -----------------------------------------
>
> If I understand it correct, FusekiServer will try to load databases from
> a) server config, b) configuration directory and c) system directory
> databases (e.g.
> /home/kinow/java/jena/jena/jena-fuseki2/jena-fuseki-core/run). When
> databases are created using the Web interface, they go into the system
> directory.
>
> When we create the database "test1", a directory "/test1" is created under
> the system directory. However, deleting the database using the Web
> interface does not remove the directory. Recreating a test1 database again
> will reuse the existing directory. It will append the new database graph
> into the existing database.
>
> The old "test1" is still there with its old UUID, and the new "test1"
> database will be there as well, but with a different UUID. When the
> FusekiServer looks for databases in the system directory (the c) step in
> the first paragraph), it will query with SPARQL the model found in that
> directory, and will find two test1 databases, both in the Active state.
>
> Trying to load that twice, DataAccessPointRegistry will trigger the error
> reporter.
>
> Possible solutions include:
>
> * When deleting a database (see ActionDatasets#execDeleteItem) we look for
> its directory under the system directory and remove it if existing
>
> * When creating a new database, we can check if the file already exists
> and create a new name (appending -2 for example). We would need to change
> the execDeleteItem to mark the graph as inactive too though.
>
> I'd adopt for the former alternative. Thoughts or other alternatives?
>
> > Fuseki2: Can't reuse dataset name after DELETE
> > ----------------------------------------------
> >
> >                 Key: JENA-869
> >                 URL: https://issues.apache.org/jira/browse/JENA-869
> >             Project: Apache Jena
> >          Issue Type: Bug
> >          Components: Fuseki
> >    Affects Versions: Fuseki 2.0.0
> >         Environment: Docker
> > https://registry.hub.docker.com/u/stain/jena-fuseki/
> >            Reporter: Stian Soiland-Reyes
> >             Fix For: Fuseki 2.0.0
> >
> >
> > In the web interface, I create a persistent dataset "test1". I then
> remove it. I then create a second one called "test1". Everything works fine.
> > However, if I restart Fuseki, now it attemps to register test1 twice:
> > {code}
> > [2015-01-28 12:47:33] Servlet    INFO  Initializing Shiro environment
> > [2015-01-28 12:47:33] Config     INFO  Shiro file:
> file:///fuseki/shiro.ini
> > [2015-01-28 12:47:33] Builder    INFO  Service: TDB test1
> > [2015-01-28 12:47:34] Builder    INFO  Service: TDB test1
> > [2015-01-28 12:47:34] Builder    INFO  Service: :service1
> > [2015-01-28 12:47:34] Builder    INFO  Service: TDB test3
> > [2015-01-28 12:47:34] Config     INFO  Register: /test1
> > [2015-01-28 12:47:34] Config     INFO  Register: /test1
> > [2015-01-28 12:47:34] Server     ERROR Exception in initialization:
> Already registered: /test1
> > [2015-01-28 12:47:34] WebAppContext WARN  Failed startup of context
> o.e.j.w.WebAppContext@d04ca48{/,file:/jena-fuseki/webapp/,STARTING}
> > org.apache.jena.fuseki.FusekiException: Already registered: /test1
> >       at
> org.apache.jena.fuseki.server.DataAccessPointRegistry.register(DataAccessPointRegistry.java:28)
> >       at
> org.apache.jena.fuseki.server.FusekiServer.enable(FusekiServer.java:232)
> >       at
> org.apache.jena.fuseki.server.FusekiServer.initializeDataAccessPoints(FusekiServer.java:226)
> >       at
> org.apache.jena.fuseki.server.FusekiServerListener.init(FusekiServerListener.java:70)
> >       at
> org.apache.jena.fuseki.server.FusekiServerListener.contextInitialized(FusekiServerListener.java:45)
> >       at
> org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:799)
> >       at
> org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:446)
> >       at
> org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:791)
> >       at
> org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:296)
> >       at
> org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1347)
> >       at
> org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:743)
> >       at
> org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
> >       at
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
> >       at
> org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:117)
> >       at org.eclipse.jetty.server.Server.start(Server.java:355)
> >       at
> org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:99)
> >       at
> org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
> >       at org.eclipse.jetty.server.Server.doStart(Server.java:324)
> >       at
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
> >       at
> org.apache.jena.fuseki.jetty.JettyFuseki.start(JettyFuseki.java:137)
> >       at
> org.apache.jena.fuseki.cmd.FusekiCmd$FusekiCmdInner.exec(FusekiCmd.java:331)
> >       at arq.cmdline.CmdMain.mainMethod(CmdMain.java:102)
> >       at arq.cmdline.CmdMain.mainRun(CmdMain.java:63)
> >       at arq.cmdline.CmdMain.mainRun(CmdMain.java:50)
> >       at
> org.apache.jena.fuseki.cmd.FusekiCmd$FusekiCmdInner.innerMain(FusekiCmd.java:97)
> >       at org.apache.jena.fuseki.cmd.FusekiCmd.main(FusekiCmd.java:60)
> > {code}
> > In the HTTP log from before:
> > {code}
> > [2015-01-28 12:47:02] Admin      INFO  [1] GET
> http://localhost:3031/$/server
> > [2015-01-28 12:47:02] Admin      INFO  [1] 200 OK (11 ms)
> > [2015-01-28 12:47:04] Admin      INFO  [2] GET
> http://localhost:3031/$/server
> > [2015-01-28 12:47:04] Admin      INFO  [2] 200 OK (1 ms)
> > [2015-01-28 12:47:08] Admin      INFO  [3] POST
> http://localhost:3031/$/datasets
> > [2015-01-28 12:47:08] Admin      INFO  [3] Create database : name =
> /test1
> > [2015-01-28 12:47:08] Builder    INFO  Service: TDB test1
> > [2015-01-28 12:47:08] Admin      INFO  [3] 200 OK (499 ms)
> > [2015-01-28 12:47:09] Admin      INFO  [4] GET
> http://localhost:3031/$/server
> > [2015-01-28 12:47:09] Admin      INFO  [4] 200 OK (2 ms)
> > [2015-01-28 12:47:12] Admin      INFO  [5] POST
> http://localhost:3031/$/datasets
> > [2015-01-28 12:47:12] Admin      INFO  [5] Create database : name =
> /test2
> > [2015-01-28 12:47:12] Builder    INFO  Service: :service1
> > [2015-01-28 12:47:12] Admin      INFO  [5] 200 OK (117 ms)
> > [2015-01-28 12:47:12] Admin      INFO  [6] GET
> http://localhost:3031/$/server
> > [2015-01-28 12:47:12] Admin      INFO  [6] 200 OK (3 ms)
> > [2015-01-28 12:47:16] Admin      INFO  [7] POST
> http://localhost:3031/$/datasets
> > [2015-01-28 12:47:16] Admin      INFO  [7] Create database : name =
> /test3
> > [2015-01-28 12:47:16] Builder    INFO  Service: TDB test3
> > [2015-01-28 12:47:16] Admin      INFO  [7] 200 OK (126 ms)
> > [2015-01-28 12:47:16] Admin      INFO  [8] GET
> http://localhost:3031/$/server
> > [2015-01-28 12:47:16] Admin      INFO  [8] 200 OK (3 ms)
> > [2015-01-28 12:47:20] Admin      INFO  [9] DELETE
> http://localhost:3031/$/datasets/test1
> > [2015-01-28 12:47:20] Admin      INFO  [9] DELETE ds=/test1
> > [2015-01-28 12:47:20] Admin      INFO  [9] 200 OK (23 ms)
> > [2015-01-28 12:47:20] Admin      INFO  [10] GET
> http://localhost:3031/$/server
> > [2015-01-28 12:47:20] Admin      INFO  [10] 200 OK (1 ms)
> > [2015-01-28 12:47:26] Admin      INFO  [11] POST
> http://localhost:3031/$/datasets
> > [2015-01-28 12:47:26] Admin      INFO  [12] POST
> http://localhost:3031/$/datasets
> > [2015-01-28 12:47:26] Admin      INFO  [11] Create database : name =
> /test1
> > [2015-01-28 12:47:26] Builder    INFO  Service: TDB test1
> > [2015-01-28 12:47:27] Admin      INFO  [11] 200 OK (112 ms)
> > [2015-01-28 12:47:27] Admin      INFO  [12] Create database : name =
> /test1
> > [2015-01-28 12:47:27] Admin      INFO  [12] 409 Name already registered
> /test1 (127 ms)
> > [2015-01-28 12:47:27] Admin      INFO  [13] GET
> http://localhost:3031/$/server
> > [2015-01-28 12:47:27] Admin      INFO  [13] 200 OK (2 ms)
> > {code}
> > Notice that 409.. the web UI didn't indicate anything about this.
> > Inspecting my /fuseki reveals indeed that test1 appears three times:
> > root@35e5b435426c:/fuseki# grep -r test1 .
> > Binary file ./system/nodes.dat matches
> > ./system_files/f9508798-2ac1-11b2-80c2-dab7e13f8f6e:        rdfs:label
>                   "TDB test1" ;
> > ./system_files/f9508798-2ac1-11b2-80c2-dab7e13f8f6e:        fuseki:name
>                  "test1" ;
> > ./system_files/f9508798-2ac1-11b2-80c2-dab7e13f8f6e:
> tdb:location  "/fuseki/databases/test1" .
> > ./system_files/f950879c-2ac1-11b2-80c2-dab7e13f8f6e:        rdfs:label
>                   "TDB test1" ;
> > ./system_files/f950879c-2ac1-11b2-80c2-dab7e13f8f6e:        fuseki:name
>                  "test1" ;
> > ./system_files/f950879c-2ac1-11b2-80c2-dab7e13f8f6e:
> tdb:location  "/fuseki/databases/test1" .
> > ./system_files/f950879b-2ac1-11b2-80c2-dab7e13f8f6e:        rdfs:label
>                   "TDB test1" ;
> > ./system_files/f950879b-2ac1-11b2-80c2-dab7e13f8f6e:        fuseki:name
>                  "test1" ;
> > ./system_files/f950879b-2ac1-11b2-80c2-dab7e13f8f6e:
> tdb:location  "/fuseki/databases/test1" .
> > f950879c-2ac1-11b2-80c2-dab7e13f8f6e is not in ./system/prefixes.dat and
> ./system/nodes.dat, while the other two UUIDs are.
>
>
>
> --
> This message was sent by Atlassian JIRA
> (v6.3.4#6332)
>

Reply via email to