[jira] [Commented] (JENA-1521) TDB2 backed Datasets cannot be re-opened.
[ https://issues.apache.org/jira/browse/JENA-1521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16437941#comment-16437941 ] Andy Seaborne commented on JENA-1521: - If a library closes a dataset then it had better put that in its contract. If it were a file, then the file is closed and the file position lost. Anyway, now TDB1 (when transactional) and TDB2 datasets can be closed. Close was never thread/transaction safe because of other threads using a dataset. The overheads of a dataset are not small. There is a lot of caching going on, both in JVM and in the OS file system cache. Closing does not flush in-memory - the end of write transaction does that (or "sync" if TBD, non-transactional). > TDB2 backed Datasets cannot be re-opened. > - > > Key: JENA-1521 > URL: https://issues.apache.org/jira/browse/JENA-1521 > Project: Apache Jena > Issue Type: Bug > Environment: Apache Jena: 3.7.0 > Java: 1.8_162 >Reporter: Greg Albiston >Assignee: Andy Seaborne >Priority: Major > Fix For: Jena 3.8.0 > > > If a Dataset connected to with TDB2Factory.connectDataset() is opened, closed > and then later re-opened it is reported that the Dataset is closed. > Opening, closing and re-opening a Dataset with TDBFactory.createDataset() > causes no issues. > Example code to reproduce: > {noformat} > public void testTDB2OpenClose() { > System.out.println("TDB2 Open Close"); > try { > Dataset dataset = TDB2Factory.connectDataset("test_tdb2"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > Dataset dataset2 = TDB2Factory.connectDataset("test_tdb2"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) > { Statement statement = statements.next(); System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) \{ System.out.println("Exception: " + > ex.getMessage()); } > } > {noformat} > {noformat} > public void testTDB1OpenClose() { > > System.out.println("TDB1 Open Close"); > try { > Dataset dataset = TDBFactory.createDataset("test_tdb1"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > > Dataset dataset2 = TDBFactory.createDataset("test_tdb1"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) \{ Statement statement = statements.next(); > System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) > { System.out.println("Exception: " + ex.getMessage()); } > } > {noformat} > -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (JENA-1521) TDB2 backed Datasets cannot be re-opened.
[ https://issues.apache.org/jira/browse/JENA-1521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16437930#comment-16437930 ] ASF GitHub Bot commented on JENA-1521: -- Github user asfgit closed the pull request at: https://github.com/apache/jena/pull/397 > TDB2 backed Datasets cannot be re-opened. > - > > Key: JENA-1521 > URL: https://issues.apache.org/jira/browse/JENA-1521 > Project: Apache Jena > Issue Type: Bug > Environment: Apache Jena: 3.7.0 > Java: 1.8_162 >Reporter: Greg Albiston >Priority: Major > > If a Dataset connected to with TDB2Factory.connectDataset() is opened, closed > and then later re-opened it is reported that the Dataset is closed. > Opening, closing and re-opening a Dataset with TDBFactory.createDataset() > causes no issues. > Example code to reproduce: > {noformat} > public void testTDB2OpenClose() { > System.out.println("TDB2 Open Close"); > try { > Dataset dataset = TDB2Factory.connectDataset("test_tdb2"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > Dataset dataset2 = TDB2Factory.connectDataset("test_tdb2"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) > { Statement statement = statements.next(); System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) \{ System.out.println("Exception: " + > ex.getMessage()); } > } > {noformat} > {noformat} > public void testTDB1OpenClose() { > > System.out.println("TDB1 Open Close"); > try { > Dataset dataset = TDBFactory.createDataset("test_tdb1"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > > Dataset dataset2 = TDBFactory.createDataset("test_tdb1"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) \{ Statement statement = statements.next(); > System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) > { System.out.println("Exception: " + ex.getMessage()); } > } > {noformat} > -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (JENA-1521) TDB2 backed Datasets cannot be re-opened.
[ https://issues.apache.org/jira/browse/JENA-1521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16437927#comment-16437927 ] ASF subversion and git services commented on JENA-1521: --- Commit 2341f3f8b1b4b59bc1934564e781de99e51c42e6 in jena's branch refs/heads/master from [~andy.seaborne] [ https://git-wip-us.apache.org/repos/asf?p=jena.git;h=2341f3f ] JENA-1521: Merge commit 'refs/pull/397/head' of https://github.com/apache/jena This closes #397. > TDB2 backed Datasets cannot be re-opened. > - > > Key: JENA-1521 > URL: https://issues.apache.org/jira/browse/JENA-1521 > Project: Apache Jena > Issue Type: Bug > Environment: Apache Jena: 3.7.0 > Java: 1.8_162 >Reporter: Greg Albiston >Priority: Major > > If a Dataset connected to with TDB2Factory.connectDataset() is opened, closed > and then later re-opened it is reported that the Dataset is closed. > Opening, closing and re-opening a Dataset with TDBFactory.createDataset() > causes no issues. > Example code to reproduce: > {noformat} > public void testTDB2OpenClose() { > System.out.println("TDB2 Open Close"); > try { > Dataset dataset = TDB2Factory.connectDataset("test_tdb2"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > Dataset dataset2 = TDB2Factory.connectDataset("test_tdb2"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) > { Statement statement = statements.next(); System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) \{ System.out.println("Exception: " + > ex.getMessage()); } > } > {noformat} > {noformat} > public void testTDB1OpenClose() { > > System.out.println("TDB1 Open Close"); > try { > Dataset dataset = TDBFactory.createDataset("test_tdb1"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > > Dataset dataset2 = TDBFactory.createDataset("test_tdb1"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) \{ Statement statement = statements.next(); > System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) > { System.out.println("Exception: " + ex.getMessage()); } > } > {noformat} > -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (JENA-1521) TDB2 backed Datasets cannot be re-opened.
[ https://issues.apache.org/jira/browse/JENA-1521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16437923#comment-16437923 ] ASF subversion and git services commented on JENA-1521: --- Commit f6d3c77f32e5ba8c48d2b987dea3915004970eab in jena's branch refs/heads/master from [~andy.seaborne] [ https://git-wip-us.apache.org/repos/asf?p=jena.git;h=f6d3c77 ] JENA-1521: Don't close. TDB1 and TDB2 datasets are managed differently. > TDB2 backed Datasets cannot be re-opened. > - > > Key: JENA-1521 > URL: https://issues.apache.org/jira/browse/JENA-1521 > Project: Apache Jena > Issue Type: Bug > Environment: Apache Jena: 3.7.0 > Java: 1.8_162 >Reporter: Greg Albiston >Priority: Major > > If a Dataset connected to with TDB2Factory.connectDataset() is opened, closed > and then later re-opened it is reported that the Dataset is closed. > Opening, closing and re-opening a Dataset with TDBFactory.createDataset() > causes no issues. > Example code to reproduce: > {noformat} > public void testTDB2OpenClose() { > System.out.println("TDB2 Open Close"); > try { > Dataset dataset = TDB2Factory.connectDataset("test_tdb2"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > Dataset dataset2 = TDB2Factory.connectDataset("test_tdb2"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) > { Statement statement = statements.next(); System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) \{ System.out.println("Exception: " + > ex.getMessage()); } > } > {noformat} > {noformat} > public void testTDB1OpenClose() { > > System.out.println("TDB1 Open Close"); > try { > Dataset dataset = TDBFactory.createDataset("test_tdb1"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > > Dataset dataset2 = TDBFactory.createDataset("test_tdb1"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) \{ Statement statement = statements.next(); > System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) > { System.out.println("Exception: " + ex.getMessage()); } > } > {noformat} > -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (JENA-1521) TDB2 backed Datasets cannot be re-opened.
[ https://issues.apache.org/jira/browse/JENA-1521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16437924#comment-16437924 ] ASF subversion and git services commented on JENA-1521: --- Commit 67b18af43f54814f66f63c13866556b4256e459c in jena's branch refs/heads/master from [~andy.seaborne] [ https://git-wip-us.apache.org/repos/asf?p=jena.git;h=67b18af ] JENA-1521: Only really close if non-transactional > TDB2 backed Datasets cannot be re-opened. > - > > Key: JENA-1521 > URL: https://issues.apache.org/jira/browse/JENA-1521 > Project: Apache Jena > Issue Type: Bug > Environment: Apache Jena: 3.7.0 > Java: 1.8_162 >Reporter: Greg Albiston >Priority: Major > > If a Dataset connected to with TDB2Factory.connectDataset() is opened, closed > and then later re-opened it is reported that the Dataset is closed. > Opening, closing and re-opening a Dataset with TDBFactory.createDataset() > causes no issues. > Example code to reproduce: > {noformat} > public void testTDB2OpenClose() { > System.out.println("TDB2 Open Close"); > try { > Dataset dataset = TDB2Factory.connectDataset("test_tdb2"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > Dataset dataset2 = TDB2Factory.connectDataset("test_tdb2"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) > { Statement statement = statements.next(); System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) \{ System.out.println("Exception: " + > ex.getMessage()); } > } > {noformat} > {noformat} > public void testTDB1OpenClose() { > > System.out.println("TDB1 Open Close"); > try { > Dataset dataset = TDBFactory.createDataset("test_tdb1"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > > Dataset dataset2 = TDBFactory.createDataset("test_tdb1"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) \{ Statement statement = statements.next(); > System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) > { System.out.println("Exception: " + ex.getMessage()); } > } > {noformat} > -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (JENA-1521) TDB2 backed Datasets cannot be re-opened.
[ https://issues.apache.org/jira/browse/JENA-1521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16437775#comment-16437775 ] Greg Albiston commented on JENA-1521: - Hi Andy, I understand what your saying about not using it again and the create/destroy pattern. However, should there not be some way to reverse a closure without an application restarting? There is no obvious method on the Dataset. What if a dataset is passed into a third party library which closes it? Also, how are resources associated with opening the dataset released? For example, open the dataset, do some work, go away for a long time, come back and reopen. There might only be a small overhead but a developer may wish to they are being well behaved and ensuring an in-memory caching is flushed. >From what you've mentioned the semantics of Datasets are close and can NEVER >be accessed again but QueryIterators are MUST close after use to avoid wasting >resources. It just seems strange, Greg > TDB2 backed Datasets cannot be re-opened. > - > > Key: JENA-1521 > URL: https://issues.apache.org/jira/browse/JENA-1521 > Project: Apache Jena > Issue Type: Bug > Environment: Apache Jena: 3.7.0 > Java: 1.8_162 >Reporter: Greg Albiston >Priority: Major > > If a Dataset connected to with TDB2Factory.connectDataset() is opened, closed > and then later re-opened it is reported that the Dataset is closed. > Opening, closing and re-opening a Dataset with TDBFactory.createDataset() > causes no issues. > Example code to reproduce: > {noformat} > public void testTDB2OpenClose() { > System.out.println("TDB2 Open Close"); > try { > Dataset dataset = TDB2Factory.connectDataset("test_tdb2"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > Dataset dataset2 = TDB2Factory.connectDataset("test_tdb2"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) > { Statement statement = statements.next(); System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) \{ System.out.println("Exception: " + > ex.getMessage()); } > } > {noformat} > {noformat} > public void testTDB1OpenClose() { > > System.out.println("TDB1 Open Close"); > try { > Dataset dataset = TDBFactory.createDataset("test_tdb1"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > > Dataset dataset2 = TDBFactory.createDataset("test_tdb1"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) \{ Statement statement = statements.next(); > System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) > { System.out.println("Exception: " + ex.getMessage()); } > } > {noformat} > -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (JENA-1521) TDB2 backed Datasets cannot be re-opened.
[ https://issues.apache.org/jira/browse/JENA-1521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16437319#comment-16437319 ] ASF GitHub Bot commented on JENA-1521: -- GitHub user afs opened a pull request: https://github.com/apache/jena/pull/397 TDB2 tidyup Including JENA-1521 (TDB1 and TDB2 close). You can merge this pull request into a Git repository by running: $ git pull https://github.com/afs/jena tdb2-tidyup Alternatively you can review and apply these changes as the patch at: https://github.com/apache/jena/pull/397.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #397 commit 32608d250fa60788b53db71b79d904fb63dbdd88 Author: Andy Seaborne Date: 2018-04-13T12:59:35Z Add TDB2Factory.assembleDataset. Remove out of date comments. commit f6d3c77f32e5ba8c48d2b987dea3915004970eab Author: Andy Seaborne Date: 2018-04-13T13:04:55Z JENA-1521: Don't close. TDB1 and TDB2 datasets are managed differently. commit 246786abfb60f2908bce52772cd40771ba2a206d Author: Andy Seaborne Date: 2018-04-13T13:05:16Z Remove deprecated DatasetGraphWithLock. commit 67b18af43f54814f66f63c13866556b4256e459c Author: Andy Seaborne Date: 2018-04-13T13:31:51Z JENA-1521: Only really close if non-transactional commit d65e0ae630911cf1665cbd354d928765d16491ce Author: Andy Seaborne Date: 2018-04-13T13:43:53Z Remove stray local/ > TDB2 backed Datasets cannot be re-opened. > - > > Key: JENA-1521 > URL: https://issues.apache.org/jira/browse/JENA-1521 > Project: Apache Jena > Issue Type: Bug > Environment: Apache Jena: 3.7.0 > Java: 1.8_162 >Reporter: Greg Albiston >Priority: Major > > If a Dataset connected to with TDB2Factory.connectDataset() is opened, closed > and then later re-opened it is reported that the Dataset is closed. > Opening, closing and re-opening a Dataset with TDBFactory.createDataset() > causes no issues. > Example code to reproduce: > {noformat} > public void testTDB2OpenClose() { > System.out.println("TDB2 Open Close"); > try { > Dataset dataset = TDB2Factory.connectDataset("test_tdb2"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > Dataset dataset2 = TDB2Factory.connectDataset("test_tdb2"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) > { Statement statement = statements.next(); System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) \{ System.out.println("Exception: " + > ex.getMessage()); } > } > {noformat} > {noformat} > public void testTDB1OpenClose() { > > System.out.println("TDB1 Open Close"); > try { > Dataset dataset = TDBFactory.createDataset("test_tdb1"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > > Dataset dataset2 = TDBFactory.createDataset("test_tdb1"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) \{ Statement statement = statements.next(); > System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) > { System.out.println("Exception: " + ex.getMessage()); } > } > {noformat} > -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (JENA-1521) TDB2 backed Datasets cannot be re-opened.
[ https://issues.apache.org/jira/browse/JENA-1521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16437263#comment-16437263 ] Andy Seaborne commented on JENA-1521: - Datasets shouldn't be closed at the end of a transaction. Close, it does does anything, means "not to be used again". This is why the name was changed to {{TDB2Factory.connectDataset}} from {{createDataset}} to get away from the idea of create-destroy. Because TDB1 and TDB2 databases are held JVM wide, calling the factory again gets the same database. TDB1 ({{DatasetGraphTransaction}}) happens to do very little on {{close()}} and does not pass it down further. What clearup it does is reversed, by luck, on reuse. TDB2 ({{DatasetGraphSwitchable}} passes it on to the storage and marks it closed. We could ignore it in TDB2 and properly ignore it in TDB1 if the dataset has gone transactional. (I can image that a different dataset implementation may need a {{close()}} operation.) > TDB2 backed Datasets cannot be re-opened. > - > > Key: JENA-1521 > URL: https://issues.apache.org/jira/browse/JENA-1521 > Project: Apache Jena > Issue Type: Bug > Environment: Apache Jena: 3.7.0 > Java: 1.8_162 >Reporter: Greg Albiston >Priority: Major > > If a Dataset connected to with TDB2Factory.connectDataset() is opened, closed > and then later re-opened it is reported that the Dataset is closed. > Opening, closing and re-opening a Dataset with TDBFactory.createDataset() > causes no issues. > Example code to reproduce: > {noformat} > public void testTDB2OpenClose() { > System.out.println("TDB2 Open Close"); > try { > Dataset dataset = TDB2Factory.connectDataset("test_tdb2"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > Dataset dataset2 = TDB2Factory.connectDataset("test_tdb2"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) > { Statement statement = statements.next(); System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) \{ System.out.println("Exception: " + > ex.getMessage()); } > } > {noformat} > {noformat} > public void testTDB1OpenClose() { > > System.out.println("TDB1 Open Close"); > try { > Dataset dataset = TDBFactory.createDataset("test_tdb1"); > dataset.begin(ReadWrite.WRITE); > Model defaultModel = dataset.getDefaultModel(); > > defaultModel.add(ResourceFactory.createResource("http://example.org/my#SubjA";), > ResourceFactory.createProperty("http://example.org/my#PropA";), > ResourceFactory.createResource("http://example.org/my#ObjA";)); > dataset.commit(); > dataset.end(); > dataset.close(); > > Dataset dataset2 = TDBFactory.createDataset("test_tdb1"); > dataset2.begin(ReadWrite.READ); > Model readModel = dataset2.getDefaultModel(); > Iterator statements = readModel.listStatements(); > while (statements.hasNext()) \{ Statement statement = statements.next(); > System.out.println(statement); } > dataset2.end(); > dataset2.close(); > } catch (Exception ex) > { System.out.println("Exception: " + ex.getMessage()); } > } > {noformat} > -- This message was sent by Atlassian JIRA (v7.6.3#76005)