From b440a139304c76fd01b1f3f7af48b80629905a6d Mon Sep 17 00:00:00 2001
From: anttil <anttil>
Date: Mon, 26 Aug 2013 11:39:00 +0000
Subject: [PATCH] BIS-506 / SP-830: ZipArchiver should create notification if
 archiving fails

SVN: 29671
---
 .../AbstractArchiverProcessingPlugin.java         | 10 +++++-----
 .../plugins/standard/AbstractDatastorePlugin.java |  3 +++
 ...utedPackagingDataSetFileOperationsManager.java | 15 ++++++++++-----
 3 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractArchiverProcessingPlugin.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractArchiverProcessingPlugin.java
index 443ec1725f0..fd9e894b49f 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractArchiverProcessingPlugin.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractArchiverProcessingPlugin.java
@@ -236,7 +236,7 @@ public abstract class AbstractArchiverProcessingPlugin extends AbstractDatastore
 
         return new GroupedDatasets(upToDateInArchive, differentInArchive);
     }
-    
+
     private List<DatasetDescription> getDataSetsFailedToBeArchived(
             List<DatasetDescription> datasets, DatasetProcessingStatuses statuses)
     {
@@ -336,7 +336,7 @@ public abstract class AbstractArchiverProcessingPlugin extends AbstractDatastore
         DatasetProcessingStatuses status = doDeleteFromArchive(datasets);
         return status != null ? status.getProcessingStatus() : null;
     }
-    
+
     protected DatasetProcessingStatuses deletePermanentlyFromArchive(List<? extends IDatasetLocation> dataSets)
     {
         return doDeleteFromArchive(dataSets);
@@ -417,7 +417,7 @@ public abstract class AbstractArchiverProcessingPlugin extends AbstractDatastore
             String logMessage = createLogMessage(datasetCode, status, operationDescription);
             if (status.isError())
             {
-                operationLog.error(logMessage);
+                notifyLog.error(logMessage);
                 failedDatasetCodes.add(datasetCode);
             } else
             {
@@ -554,12 +554,12 @@ public abstract class AbstractArchiverProcessingPlugin extends AbstractDatastore
     {
         this.statusUpdater = statusUpdater;
     }
-    
+
     protected void setShareIdManager(IShareIdManager shareIdManager)
     {
         this.shareIdManager = shareIdManager;
     }
-    
+
     protected void setService(IEncapsulatedOpenBISService service)
     {
         this.service = service;
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractDatastorePlugin.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractDatastorePlugin.java
index f63bb2159f8..00fa7d3b221 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractDatastorePlugin.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractDatastorePlugin.java
@@ -40,6 +40,9 @@ public abstract class AbstractDatastorePlugin implements Serializable
     static protected final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION,
             AbstractDatastorePlugin.class);
 
+    static protected final Logger notifyLog = LogFactory.getLogger(LogCategory.NOTIFY,
+            AbstractDatastorePlugin.class);
+
     private static final String SUB_DIRECTORY_NAME = "sub-directory-name";
 
     private static final long serialVersionUID = 1L;
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributedPackagingDataSetFileOperationsManager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributedPackagingDataSetFileOperationsManager.java
index 080dc374795..22b1752ff53 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributedPackagingDataSetFileOperationsManager.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributedPackagingDataSetFileOperationsManager.java
@@ -169,13 +169,18 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
                 {
                     dataSetPackager.close();
 
-                    List<String> errors =
-                            verify(file, new ZipFileIntegrityVerifier());
-
-                    if (errors.size() > 0)
+                    if (Status.OK.equals(status))
                     {
-                        throw new RuntimeException(errors.toString());
+                        List<String> errors =
+                                verify(file, new ZipFileIntegrityVerifier());
+
+                        if (errors.size() > 0)
+                        {
+                            status = Status.createError(errors.toString());
+                            throw new RuntimeException(errors.toString());
+                        }
                     }
+
                     operationLog.info("Data set '" + dataSetCode + "' archived: " + file);
                 } catch (Exception ex)
                 {
-- 
GitLab