[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Files and Exceptions
Hi all,
I was just trying to debug Ozone on my machine and I noticed something
disturbing: Ozone does not always close files after reading from them. On
systems with a limited number of open files (like most of them), this is
bad. (finalizers are not guaranteed to run in finite time.)
Even when files are closed, they are usually not correctly enclosed in
try {} finally {} blocks. The correct way to do this is:
FileInputStream fin = null;
try {
fin = new FileInputStream("MyFile");
// do stuff with fin
} finally {
if (fin != null)
fin.close();
}
Here the file is always closed even if an exception is thrown. This is
covered in more detail here:
<http://developer.java.sun.com/developer/TechTips/1998/tt0915.html> and
<http://developer.java.sun.com/developer/TechTips/2000/tt0124.html#tip1>.
This is especially important for a program like the Ozone server that
catches all exceptions and keeps running rather than shutting down.
This needs to be fixed in the following places that I found:
core
wizardStore
ClusterStore.java
readCluser()
writeCluster()
WizardStore.java
startup()
shutdown()
Env.java
initSetup()
storeSetup()
tools
Statistics.java
readStats()
writeStats()
Install.java
resetStateFile()
resetConfigFile()
DxLib
DxDiskHashMap.java
re_use()
close()
DxDiskSubTable.java
readTable()
writeTable()
later,
\x/ill :-}