Skip to content
Snippets Groups Projects
Commit cb63e058 authored by juanf's avatar juanf
Browse files

SSDM-3617 : Maintenance task to find orphan datasets in archivers, bugfixes

SVN: 36650
parent ce7bea3a
No related branches found
No related tags found
No related merge requests found
...@@ -23,7 +23,7 @@ check [dss] [etlserver] independentOf [private_openbis] ...@@ -23,7 +23,7 @@ check [dss] [etlserver] independentOf [private_openbis]
# Check dependencies of etlserver to dss # Check dependencies of etlserver to dss
[dss.shared] = ${dss}.generic.shared.* [dss.shared] = ${dss}.generic.shared.*
[private_dss] = ${dss}.* excluding [dss.shared] ${dss}.generic.server.IDataSetCommandExecutorProvider ${dss}.generic.server.IDataSetCommandExecutor ${dss}.BuildAndEnvironmentInfo ${dss}.generic.DataStoreServer ${dss}.generic.server.DataStoreServer ${dss}.generic.server.api.v1.DssServiceRpcGeneric ch.systemsx.cisd.openbis.dss.generic.server.DataStoreService ${dss}.generic.server.plugins.standard.archiver.dataaccess.MultiDataSetArchiverDataSourceUtil [private_dss] = ${dss}.* excluding [dss.shared] ${dss}.generic.server.IDataSetCommandExecutorProvider ${dss}.generic.server.IDataSetCommandExecutor ${dss}.BuildAndEnvironmentInfo ${dss}.generic.DataStoreServer ${dss}.generic.server.DataStoreServer ${dss}.generic.server.api.v1.DssServiceRpcGeneric ch.systemsx.cisd.openbis.dss.generic.server.DataStoreService ${dss}.generic.server.plugins.standard.archiver.dataaccess.MultiDataSetArchiverDataSourceUtil ${dss}.generic.server.plugins.standard.archiver.MultiDataSetArchiver
[etlserver_registration] = ${etlserver}.registrator.* ${etlserver}.postregistration.* ${etlserver}.DssUniqueFilenameGenerator \ [etlserver_registration] = ${etlserver}.registrator.* ${etlserver}.postregistration.* ${etlserver}.DssUniqueFilenameGenerator \
${etlserver}.Parameters ${etlserver}.ITopLevelDataSetRegistratorDelegate \ ${etlserver}.Parameters ${etlserver}.ITopLevelDataSetRegistratorDelegate \
......
...@@ -18,6 +18,7 @@ import ch.systemsx.cisd.common.mail.IMailClient; ...@@ -18,6 +18,7 @@ import ch.systemsx.cisd.common.mail.IMailClient;
import ch.systemsx.cisd.common.maintenance.IMaintenanceTask; import ch.systemsx.cisd.common.maintenance.IMaintenanceTask;
import ch.systemsx.cisd.common.properties.PropertyUtils; import ch.systemsx.cisd.common.properties.PropertyUtils;
import ch.systemsx.cisd.openbis.dss.generic.server.DataStoreServer; import ch.systemsx.cisd.openbis.dss.generic.server.DataStoreServer;
import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.MultiDataSetArchiver;
import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.dataaccess.MultiDataSetArchiverDataSourceUtil; import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.dataaccess.MultiDataSetArchiverDataSourceUtil;
import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
...@@ -36,15 +37,18 @@ public class DataSetArchiverOrphanFinderTask implements IMaintenanceTask ...@@ -36,15 +37,18 @@ public class DataSetArchiverOrphanFinderTask implements IMaintenanceTask
private IMailClient mailClient; private IMailClient mailClient;
private boolean isMultiDatasetArchiver;
public DataSetArchiverOrphanFinderTask() public DataSetArchiverOrphanFinderTask()
{ {
this(ServiceProvider.getDataStoreService().createEMailClient()); this(ServiceProvider.getDataStoreService().createEMailClient(),
ServiceProvider.getDataStoreService().getArchiverPlugin() instanceof MultiDataSetArchiver);
} }
DataSetArchiverOrphanFinderTask(IMailClient mailClient) DataSetArchiverOrphanFinderTask(IMailClient mailClient, boolean isMultiDatasetArchiver)
{ {
this.mailClient = mailClient; this.mailClient = mailClient;
this.isMultiDatasetArchiver = isMultiDatasetArchiver;
} }
@Override @Override
...@@ -61,8 +65,12 @@ public class DataSetArchiverOrphanFinderTask implements IMaintenanceTask ...@@ -61,8 +65,12 @@ public class DataSetArchiverOrphanFinderTask implements IMaintenanceTask
operationLog.info(DataSetArchiverOrphanFinderTask.class.getSimpleName() + " Started"); operationLog.info(DataSetArchiverOrphanFinderTask.class.getSimpleName() + " Started");
operationLog.info("1. Directories, obtain archiver directory."); operationLog.info("1. Directories, obtain archiver directory.");
String destination = DataStoreServer.getConfigParameter("archiver.final-destination", null);
if (destination == null) String destination = null;
if (isMultiDatasetArchiver)
{
destination = DataStoreServer.getConfigParameter("archiver.final-destination", null);
} else
{ {
destination = DataStoreServer.getConfigParameter("archiver.destination", null); destination = DataStoreServer.getConfigParameter("archiver.destination", null);
} }
...@@ -74,12 +82,16 @@ public class DataSetArchiverOrphanFinderTask implements IMaintenanceTask ...@@ -74,12 +82,16 @@ public class DataSetArchiverOrphanFinderTask implements IMaintenanceTask
} }
operationLog.info("2.1 Database, obtain a list of the multi dataset containers on the database."); operationLog.info("2.1 Database, obtain a list of the multi dataset containers on the database.");
List<String> containers = MultiDataSetArchiverDataSourceUtil.getContainerList(); List<String> multiDataSetContrainers = null;
if (isMultiDatasetArchiver)
{
multiDataSetContrainers = MultiDataSetArchiverDataSourceUtil.getContainerList();
}
Set<String> multiDatasetsContainersOnDB = new HashSet<String>(); Set<String> multiDatasetsContainersOnDB = new HashSet<String>();
if (containers != null) if (multiDataSetContrainers != null)
{ {
for (String container : containers) for (String container : multiDataSetContrainers)
{ {
multiDatasetsContainersOnDB.add(container.toLowerCase()); multiDatasetsContainersOnDB.add(container.toLowerCase());
} }
...@@ -144,7 +156,9 @@ public class DataSetArchiverOrphanFinderTask implements IMaintenanceTask ...@@ -144,7 +156,9 @@ public class DataSetArchiverOrphanFinderTask implements IMaintenanceTask
if (presentInArchiveFS.contains(fileNameTar) == false && if (presentInArchiveFS.contains(fileNameTar) == false &&
presentInArchiveFS.contains(fileNameZip) == false && presentInArchiveFS.contains(fileNameZip) == false &&
MultiDataSetArchiverDataSourceUtil.isDataSetInContainer(presentOnDB.toUpperCase()) == false) (isMultiDatasetArchiver == false ||
(isMultiDatasetArchiver &&
MultiDataSetArchiverDataSourceUtil.isDataSetInContainer(presentOnDB.toUpperCase()) == false)))
{ {
operationLog.debug("Single - Not found in FS for DB: " + presentOnDB); operationLog.debug("Single - Not found in FS for DB: " + presentOnDB);
singleOnDBandNotFS.add(presentOnDB); singleOnDBandNotFS.add(presentOnDB);
......
...@@ -21,11 +21,6 @@ import java.util.List; ...@@ -21,11 +21,6 @@ import java.util.List;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.apache.log4j.Logger;
import ch.systemsx.cisd.common.logging.LogCategory;
import ch.systemsx.cisd.common.logging.LogFactory;
import ch.systemsx.cisd.etlserver.plugins.DataSetArchiverOrphanFinderTask;
import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
import net.lemnik.eodsql.QueryTool; import net.lemnik.eodsql.QueryTool;
...@@ -34,8 +29,6 @@ import net.lemnik.eodsql.QueryTool; ...@@ -34,8 +29,6 @@ import net.lemnik.eodsql.QueryTool;
*/ */
public class MultiDataSetArchiverDataSourceUtil public class MultiDataSetArchiverDataSourceUtil
{ {
private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, DataSetArchiverOrphanFinderTask.class);
private static DataSource dataSource = ServiceProvider.getDataSourceProvider().getDataSource("multi-dataset-archiver-db"); private static DataSource dataSource = ServiceProvider.getDataSourceProvider().getDataSource("multi-dataset-archiver-db");
static IMultiDataSetArchiverQueryDAO getTransactionalQuery() static IMultiDataSetArchiverQueryDAO getTransactionalQuery()
...@@ -50,15 +43,7 @@ public class MultiDataSetArchiverDataSourceUtil ...@@ -50,15 +43,7 @@ public class MultiDataSetArchiverDataSourceUtil
public static List<String> getContainerList() public static List<String> getContainerList()
{ {
List<MultiDataSetArchiverContainerDTO> containerDTOs = null; List<MultiDataSetArchiverContainerDTO> containerDTOs = getReadonlyQueryDAO().listContainers();
try
{
containerDTOs = getReadonlyQueryDAO().listContainers();
} catch (Exception ex)
{
operationLog.debug("Multi data set archiver unavailable");
}
List<String> containers = new ArrayList<String>(); List<String> containers = new ArrayList<String>();
if (containerDTOs != null) if (containerDTOs != null)
{ {
...@@ -72,14 +57,7 @@ public class MultiDataSetArchiverDataSourceUtil ...@@ -72,14 +57,7 @@ public class MultiDataSetArchiverDataSourceUtil
public static Boolean isDataSetInContainer(String dataSetCode) public static Boolean isDataSetInContainer(String dataSetCode)
{ {
MultiDataSetArchiverDataSetDTO dataSetDTO = null; MultiDataSetArchiverDataSetDTO dataSetDTO = getReadonlyQueryDAO().getDataSetForCode(dataSetCode);
try
{
dataSetDTO = getReadonlyQueryDAO().getDataSetForCode(dataSetCode);
} catch (Exception ex)
{
operationLog.debug("Multi data set archiver unavailable");
}
return dataSetDTO != null && dataSetDTO.getContainerId() > 0; return dataSetDTO != null && dataSetDTO.getContainerId() > 0;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment