From a94934e22bbd7cd089e6c724d3e4c5ec13ef268a Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Thu, 28 Oct 2010 11:41:48 +0000 Subject: [PATCH] [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 --- .../java/org/dspace/curate/FileTaskQueue.java | 63 ++++++++++++------- 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/dspace-api/src/main/java/org/dspace/curate/FileTaskQueue.java b/dspace-api/src/main/java/org/dspace/curate/FileTaskQueue.java index d9aa2ebe16..f53596117b 100644 --- a/dspace-api/src/main/java/org/dspace/curate/FileTaskQueue.java +++ b/dspace-api/src/main/java/org/dspace/curate/FileTaskQueue.java @@ -73,30 +73,35 @@ public class FileTaskQueue implements TaskQueue if (! lock.exists()) { // no lock - create one - lock.createNewFile(); - // append set contents to queue - BufferedWriter writer = null; - try + if (lock.createNewFile()) { - File queue = new File(qDir, "queue" + Integer.toString(queueIdx)); - writer = new BufferedWriter(new FileWriter(queue, true)); - Iterator iter = entrySet.iterator(); - while (iter.hasNext()) + // append set contents to queue + BufferedWriter writer = null; + try { - writer.write(iter.next().toString()); - writer.newLine(); + File queue = new File(qDir, "queue" + Integer.toString(queueIdx)); + writer = new BufferedWriter(new FileWriter(queue, true)); + Iterator iter = entrySet.iterator(); + while (iter.hasNext()) + { + writer.write(iter.next().toString()); + writer.newLine(); + } } - } - finally - { - if (writer != null) + finally { - 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++; } @@ -121,7 +126,11 @@ public class FileTaskQueue implements TaskQueue if (queue.exists() && ! lock.exists()) { // no lock - create one - lock.createNewFile(); + if (!lock.createNewFile()) + { + throw new IOException("Unable to obtain the necessary lock: " + lock.getName()); + } + // read contents from file BufferedReader reader = null; try @@ -170,9 +179,16 @@ public class FileTaskQueue implements TaskQueue if (remove) { 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(); } @@ -184,7 +200,10 @@ public class FileTaskQueue implements TaskQueue File baseDir = new File(tqDir, queueName); if (! baseDir.exists()) { - baseDir.mkdirs(); + if (!baseDir.mkdirs()) + { + throw new IllegalStateException("Unable to create directories"); + } } return baseDir; }