From 46b4f33a5b22046cb15432da71a0cd6ace1c3ebb Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Fri, 7 Sep 2012 21:43:53 +0000
Subject: [PATCH] BIS-183 Ensure that SegmentedStoreUtils.getDataSetsPerShare()
 does not touch the datastore for every dataset.

SVN: 26555
---
 .../shared/utils/SegmentedStoreUtils.java     | 20 +++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtils.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtils.java
index 04f36f3a5ed..edcafb28c14 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtils.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtils.java
@@ -221,11 +221,12 @@ public class SegmentedStoreUtils
                             + ".");
                 } else
                 {
-                    File dataSetInStore = new File(share.getShare(), dataSet.getDataSetLocation());
-                    if (FileOperations.getMonitoredInstanceForCurrentThread()
-                            .exists(dataSetInStore))
+                    if (dataSet.getDataSetSize() == null)
                     {
-                        if (dataSet.getDataSetSize() == null)
+                        final File dataSetInStore =
+                                new File(share.getShare(), dataSet.getDataSetLocation());
+                        if (FileOperations.getMonitoredInstanceForCurrentThread()
+                                .exists(dataSetInStore))
                         {
                             log.log(LogLevel.INFO, "Calculating size of " + dataSetInStore);
                             long t0 = timeProvider.getTimeInMilliseconds();
@@ -236,12 +237,15 @@ public class SegmentedStoreUtils
                                             + " msec)");
                             service.updateShareIdAndSize(dataSetCode, shareId, size);
                             dataSet.setDataSetSize(size);
+                        } else
+                        {
+                            log.log(LogLevel.WARN, "Data set " + dataSetCode
+                                    + " no longer exists in share " + shareId + ".");
                         }
-                        share.addDataSet(dataSet);
-                    } else
+                    }
+                    if (dataSet.getDataSetSize() != null)
                     {
-                        log.log(LogLevel.WARN, "Data set " + dataSetCode
-                                + " no longer exists in share " + shareId + ".");
+                        share.addDataSet(dataSet);
                     }
                 }
             }
-- 
GitLab