Hi,
I am trying to delete the files in the location of a TDB dataset after I
used it, within the same process:
public static void main(String[] args) throws InterruptedException,
IOException {
File tdbDir = new File(System.getProperty("user.dir"),
"tdb1");
System.out.println("Size before: " + dirSize(tdbDir) /
1024 + " KB");
delete(tdbDir); // << this works
System.out.println("Size after delete 1: " + dirSize
(tdbDir) / 1024 + " KB");
tdbDir.mkdir();
Dataset ds = TDBFactory.createDataset
(tdbDir.getPath());
ds.close();
TDB.closedown();
Thread.sleep(5000);
// clean up
delete(tdbDir); // << this does NOT work
System.out.println("Size after delete 2: " + dirSize
(tdbDir) / 1024 + " KB");
//recursively delete a directory and all the files in it
public static void delete(File file) throws IOException {...}
//get the cumulative size of files in a directory
public static long dirSize(File file) throws IOException {...}
but I cannot delete all the files in the directory where the TDB dataset
resides. This is the output, when I run this repeatedly:
Size before: 196608 KB
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GOSP.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GOSP.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GPOS.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GPOS.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GSPO.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GSPO.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\node2id.dat
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\node2id.idn
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSP.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSP.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSPG.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSPG.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POS.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POS.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POSG.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POSG.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefix2id.dat
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefix2id.idn
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefixIdx.dat
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefixIdx.idn
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPO.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPO.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPOG.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPOG.idn true
Directory is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1 true
Size after delete 1: 0 KB
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GOSP.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GOSP.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GPOS.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GPOS.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GSPO.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GSPO.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\journal.jrnl
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\node2id.dat
false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\node2id.idn
false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\nodes.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSP.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSP.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSPG.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSPG.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POS.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POS.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POSG.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POSG.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefix2id.dat
false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefix2id.idn
false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefixes.dat
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefixIdx.dat
false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefixIdx.idn
false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPO.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPO.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPOG.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPOG.idn false
Size after delete 2: 196608 KB
It seems that TDB is releasing the resources (locks on files?) only after
the JVM exits, and not when TDB.shutdown is called.
Am I doing something wrong?
What is the correct way to force TDB to release all resources and shutdown
completely, so that I can delete the directory where the data set is?
Thanks
Yoav
Yoav Tock
IBM Haifa Research Laboratory
Office: +972-4-829-6528
E-mail: tock [ at ] il.ibm.com
I am trying to delete the files in the location of a TDB dataset after I
used it, within the same process:
public static void main(String[] args) throws InterruptedException,
IOException {
File tdbDir = new File(System.getProperty("user.dir"),
"tdb1");
System.out.println("Size before: " + dirSize(tdbDir) /
1024 + " KB");
delete(tdbDir); // << this works
System.out.println("Size after delete 1: " + dirSize
(tdbDir) / 1024 + " KB");
tdbDir.mkdir();
Dataset ds = TDBFactory.createDataset
(tdbDir.getPath());
ds.close();
TDB.closedown();
Thread.sleep(5000);
// clean up
delete(tdbDir); // << this does NOT work
System.out.println("Size after delete 2: " + dirSize
(tdbDir) / 1024 + " KB");
//recursively delete a directory and all the files in it
public static void delete(File file) throws IOException {...}
//get the cumulative size of files in a directory
public static long dirSize(File file) throws IOException {...}
but I cannot delete all the files in the directory where the TDB dataset
resides. This is the output, when I run this repeatedly:
Size before: 196608 KB
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GOSP.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GOSP.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GPOS.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GPOS.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GSPO.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GSPO.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\node2id.dat
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\node2id.idn
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSP.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSP.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSPG.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSPG.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POS.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POS.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POSG.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POSG.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefix2id.dat
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefix2id.idn
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefixIdx.dat
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefixIdx.idn
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPO.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPO.idn true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPOG.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPOG.idn true
Directory is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1 true
Size after delete 1: 0 KB
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GOSP.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GOSP.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GPOS.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GPOS.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GSPO.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\GSPO.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\journal.jrnl
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\node2id.dat
false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\node2id.idn
false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\nodes.dat true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSP.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSP.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSPG.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\OSPG.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POS.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POS.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POSG.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\POSG.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefix2id.dat
false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefix2id.idn
false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefixes.dat
true
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefixIdx.dat
false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\prefixIdx.idn
false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPO.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPO.idn false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPOG.dat false
File is deleted : D:\workspace\JenaTutorial\JenaHello\tdb1\SPOG.idn false
Size after delete 2: 196608 KB
It seems that TDB is releasing the resources (locks on files?) only after
the JVM exits, and not when TDB.shutdown is called.
Am I doing something wrong?
What is the correct way to force TDB to release all resources and shutdown
completely, so that I can delete the directory where the data set is?
Thanks
Yoav
Yoav Tock
IBM Haifa Research Laboratory
Office: +972-4-829-6528
E-mail: tock [ at ] il.ibm.com