X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2Fbackup%2FSystemBackup.java;fp=server%2Fruntime%2Forg.argeo.server.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2Fbackup%2FSystemBackup.java;h=a8149ee54d18fd5ba1837969d7d57c95d7ab101d;hb=a49ea54cef01bfd8b57aa235e3d69ae5ed243147;hp=54bb2938464f3d5329ecc5924807383beaeb12ad;hpb=8f7aa5ffedaa8bf79a323208305de3abd9e81d48;p=lgpl%2Fargeo-commons.git diff --git a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/backup/SystemBackup.java b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/backup/SystemBackup.java index 54bb29384..a8149ee54 100644 --- a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/backup/SystemBackup.java +++ b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/backup/SystemBackup.java @@ -59,7 +59,7 @@ public class SystemBackup implements Runnable { backupPurge.purge(fileSystemManager, backupsBase, systemName, backupContext.getDateFormat(), opts); } catch (Exception e) { - failures.add(e.getMessage()); + failures.add("Purge " + backupsBase + " failed: " + e.getMessage()); log.error("Purge of " + backupsBase + " failed", e); } @@ -71,8 +71,14 @@ public class SystemBackup implements Runnable { if (log.isDebugEnabled()) log.debug("Performed backup " + target); } catch (Exception e) { - failures.add(e.getMessage()); - log.error("Atomic backup failed", e); + String msg = "Atomic backup " + atomickBackup.getName() + + " failed: " + ArgeoException.chainCausesMessages(e); + failures.add(msg); + log.error(msg); + if (log.isTraceEnabled()) + log.trace( + "Stacktrace of atomic backup " + + atomickBackup.getName() + " failure.", e); } } @@ -82,14 +88,20 @@ public class SystemBackup implements Runnable { FileObject remoteBaseFo = null; UserAuthenticator auth = remoteBases.get(remoteBase); + // authentication + FileSystemOptions remoteOpts = new FileSystemOptions(); try { - // authentication - FileSystemOptions remoteOpts = new FileSystemOptions(); DefaultFileSystemConfigBuilder.getInstance() .setUserAuthenticator(remoteOpts, auth); backupPurge.purge(fileSystemManager, remoteBase, systemName, backupContext.getDateFormat(), remoteOpts); + } catch (Exception e) { + failures.add("Purge " + remoteBase + " failed: " + + e.getMessage()); + log.error("Cannot purge " + remoteBase, e); + } + try { localBaseFo = fileSystemManager.resolveFile(backupsBase + '/' + backupContext.getRelativeFolder(), opts); remoteBaseFo = fileSystemManager.resolveFile(remoteBase + '/' @@ -99,7 +111,9 @@ public class SystemBackup implements Runnable { log.debug("Copied backup to " + remoteBaseFo + " from " + localBaseFo); // } - } catch (FileSystemException e) { + } catch (Exception e) { + failures.add("Dispatch to " + remoteBase + " failed: " + + e.getMessage()); log.error( "Cannot dispatch backups from " + backupContext.getRelativeFolder() + " to " @@ -109,11 +123,16 @@ public class SystemBackup implements Runnable { BackupUtils.closeFOQuietly(remoteBaseFo); } + int failureCount = 0; if (failures.size() > 0) { StringBuffer buf = new StringBuffer(); - for (String failure : failures) - buf.append('\n').append(failure); - throw new ArgeoException("Errors when running the backup," + for (String failure : failures) { + buf.append('\n').append(failureCount).append(" - ") + .append(failure); + failureCount++; + } + throw new ArgeoException(failureCount + + " error(s) when running the backup," + " check the logs and the backups as soon as possible." + buf); }