diff --git a/Essentials/src/com/earth2me/essentials/storage/AbstractDelayedYamlFileReader.java b/Essentials/src/com/earth2me/essentials/storage/AbstractDelayedYamlFileReader.java index bf84688b1..a559684b8 100644 --- a/Essentials/src/com/earth2me/essentials/storage/AbstractDelayedYamlFileReader.java +++ b/Essentials/src/com/earth2me/essentials/storage/AbstractDelayedYamlFileReader.java @@ -68,12 +68,12 @@ public abstract class AbstractDelayedYamlFileReader imp } catch (FileNotFoundException ex) { - onException(); + onException(ex); Bukkit.getLogger().log(Level.INFO, "File not found: " + file.toString()); } catch (ObjectLoadException ex) { - onException(); + onException(ex); File broken = new File(file.getAbsolutePath() + ".broken." + System.currentTimeMillis()); file.renameTo(broken); Bukkit.getLogger().log(Level.SEVERE, "The file " + file.toString() + " is broken, it has been renamed to " + broken.toString(), ex.getCause()); @@ -91,5 +91,5 @@ public abstract class AbstractDelayedYamlFileReader imp public abstract void onSuccess(T object); - public abstract void onException(); + public abstract void onException(Exception exception); } diff --git a/Essentials/src/com/earth2me/essentials/storage/AsyncStorageObjectHolder.java b/Essentials/src/com/earth2me/essentials/storage/AsyncStorageObjectHolder.java index 71633d10f..8259dbd79 100644 --- a/Essentials/src/com/earth2me/essentials/storage/AsyncStorageObjectHolder.java +++ b/Essentials/src/com/earth2me/essentials/storage/AsyncStorageObjectHolder.java @@ -2,6 +2,7 @@ package com.earth2me.essentials.storage; import com.earth2me.essentials.api.IEssentials; import java.io.File; +import java.io.FileNotFoundException; import java.io.IOException; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -94,7 +95,7 @@ public abstract class AsyncStorageObjectHolder implemen onReload(true); } - public void onReload(boolean instant) + public void onReload(final boolean instant) { reader.schedule(instant); } @@ -161,7 +162,7 @@ public abstract class AsyncStorageObjectHolder implemen } @Override - public void onException() + public void onException(final Exception exception) { if (data == null) { @@ -176,6 +177,10 @@ public abstract class AsyncStorageObjectHolder implemen } rwl.writeLock().unlock(); loaded.set(true); + if (exception instanceof FileNotFoundException) + { + writer.schedule(); + } } } }