[DS-707] Added handling of exceptional return codes

git-svn-id: http://scm.dspace.org/svn/repo/dspace/trunk@5677 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
Graham Triggs
2010-10-28 11:41:48 +00:00
parent 2b6b3ae680
commit a94934e22b

View File

@@ -73,30 +73,35 @@ public class FileTaskQueue implements TaskQueue
if (! lock.exists()) if (! lock.exists())
{ {
// no lock - create one // no lock - create one
lock.createNewFile(); if (lock.createNewFile())
// append set contents to queue
BufferedWriter writer = null;
try
{ {
File queue = new File(qDir, "queue" + Integer.toString(queueIdx)); // append set contents to queue
writer = new BufferedWriter(new FileWriter(queue, true)); BufferedWriter writer = null;
Iterator<TaskQueueEntry> iter = entrySet.iterator(); try
while (iter.hasNext())
{ {
writer.write(iter.next().toString()); File queue = new File(qDir, "queue" + Integer.toString(queueIdx));
writer.newLine(); writer = new BufferedWriter(new FileWriter(queue, true));
Iterator<TaskQueueEntry> iter = entrySet.iterator();
while (iter.hasNext())
{
writer.write(iter.next().toString());
writer.newLine();
}
} }
} finally
finally
{
if (writer != null)
{ {
writer.close(); if (writer != null)
{
writer.close();
}
} }
// remove lock
if (!lock.delete())
{
log.error("Unable to remove lock: " + lock.getName());
}
break;
} }
// remove lock
lock.delete();
break;
} }
queueIdx++; queueIdx++;
} }
@@ -121,7 +126,11 @@ public class FileTaskQueue implements TaskQueue
if (queue.exists() && ! lock.exists()) if (queue.exists() && ! lock.exists())
{ {
// no lock - create one // no lock - create one
lock.createNewFile(); if (!lock.createNewFile())
{
throw new IOException("Unable to obtain the necessary lock: " + lock.getName());
}
// read contents from file // read contents from file
BufferedReader reader = null; BufferedReader reader = null;
try try
@@ -170,9 +179,16 @@ public class FileTaskQueue implements TaskQueue
if (remove) if (remove)
{ {
File queue = new File(qDir, "queue" + Integer.toString(queueIdx)); File queue = new File(qDir, "queue" + Integer.toString(queueIdx));
queue.delete(); if (!queue.delete())
{
log.error("Unable to delete queue file: " + queue.getName());
}
}
if (!lock.delete())
{
log.error("Unable to delete lock file: " + lock.getName());
} }
lock.delete();
} }
readList.clear(); readList.clear();
} }
@@ -184,7 +200,10 @@ public class FileTaskQueue implements TaskQueue
File baseDir = new File(tqDir, queueName); File baseDir = new File(tqDir, queueName);
if (! baseDir.exists()) if (! baseDir.exists())
{ {
baseDir.mkdirs(); if (!baseDir.mkdirs())
{
throw new IllegalStateException("Unable to create directories");
}
} }
return baseDir; return baseDir;
} }