
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Logback: the generic, reliable, fast and flexible logging framework.". The branch, encoder has been updated via b90d74bcaadef20e47ac469d51fee1d1367ca57f (commit) from 4316ce3c37be6fd8fbad4e9a0645bedb9a487b8e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.qos.ch/gitweb/?p=logback.git;a=commit;h=b90d74bcaadef20e47ac469d5... http://github.com/ceki/logback/commit/b90d74bcaadef20e47ac469d51fee1d1367ca5... commit b90d74bcaadef20e47ac469d51fee1d1367ca57f Author: Ceki Gulcu <ceki@gimmel.(none)> Date: Sun Feb 21 23:16:39 2010 +0100 - FileAppenderResilience test passes altough the code is still a mess. diff --git a/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java b/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java index b0b7980..0ae0343 100644 --- a/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java +++ b/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java @@ -23,14 +23,15 @@ import java.nio.channels.FileChannel; public class ResilientFileOutputStream extends OutputStream { RecoveryCoordinator recoveryCoordinator; - // private FileChannel fileChannel = null; boolean bufferedIO; int bufferSize; FileOutputStream fos; File file; + boolean presumedClean = true; - public ResilientFileOutputStream(File file, boolean append) throws FileNotFoundException { + public ResilientFileOutputStream(File file, boolean append) + throws FileNotFoundException { this.file = file; fos = new FileOutputStream(file, append); } @@ -44,7 +45,7 @@ public class ResilientFileOutputStream extends OutputStream { public void write(byte b[], int off, int len) throws IOException { // existence of recoveryCoordinator indicates failed state - if (recoveryCoordinator != null) { + if (recoveryCoordinator != null && !presumedClean) { if (!recoveryCoordinator.isTooSoon()) { performRecoveryAttempt(); } @@ -56,6 +57,7 @@ public class ResilientFileOutputStream extends OutputStream { fos.write(b, off, len); postSuccessfulWrite(); } catch (IOException e) { + presumedClean = false; recoveryCoordinator = new RecoveryCoordinator(); } } @@ -66,11 +68,11 @@ public class ResilientFileOutputStream extends OutputStream { @Override public void close() throws IOException { - if(fos != null) { + if (fos != null) { fos.close(); } } - + @Override public void write(int b) throws IOException { // existence of recoveryCoordinator indicates failed state @@ -90,7 +92,14 @@ public class ResilientFileOutputStream extends OutputStream { } void performRecoveryAttempt() throws FileNotFoundException { - fos = new FileOutputStream(file); + try { + close(); + } catch (IOException e) { + } + + // subsequent writes must always be in append mode + fos = new FileOutputStream(file, true); + presumedClean = true; } } ----------------------------------------------------------------------- Summary of changes: .../core/recovery/ResilientFileOutputStream.java | 21 ++++++++++++++----- 1 files changed, 15 insertions(+), 6 deletions(-) hooks/post-receive -- Logback: the generic, reliable, fast and flexible logging framework.