Skip to content

Commit 8915d09

Browse files
author
Yutaro Iiyama
committed
infrastructure to exclude CNAF-archived datasets
1 parent 6fa5aaa commit 8915d09

4 files changed

Lines changed: 16 additions & 8 deletions

File tree

lib/common/interface/mysqlstore.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -524,12 +524,12 @@ def _do_load_files(self, dataset): #override
524524
dataset.files.add(lfile)
525525

526526
def _do_check_if_on(self, datasetname, sitename): #override
527-
query = 'SELECT 1 FROM `datasets` AS d'
527+
query = 'SELECT COUNT(*) FROM `datasets` AS d'
528528
query += ' INNER JOIN `dataset_replicas` AS dr ON dr.`dataset_id` = d.`id`'
529529
query += ' INNER JOIN `sites` AS s ON s.`id` = dr.`site_id`'
530-
query += ' WHERE d.`name` = %s and s.`name` = %s' % (datasetname, sitename)
530+
query += ' WHERE d.`name` = %s and s.`name` = %s'
531531

532-
return self._mysql.query(query)[0]
532+
return (self._mysql.query(query, datasetname, sitename)[0] != 0)
533533

534534
def _do_find_block_of(self, fullpath, datasets): #override
535535
query = 'SELECT d.`name`, b.`name` FROM `files` AS f'

lib/detox/configuration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
activity_indicator = '/home/cmsprod/public_html/IntelROCCS/Detox/inActionLock.txt',
55
deletion_per_iteration = 0.01, # fraction of quota to delete per iteration
66
deletion_volume_per_request = 50, # size to delete per deletion request in TB
7-
exclude_if_on = [], # if a dataset has a replica on these [sites], don't consider it for deletions. Introduced because of CNAF indicent.
7+
exclude_if_on = ['T1_IT_CNAF_MSS'], # if a dataset has a replica on these [sites], don't consider it for deletions. Introduced because of CNAF indicent.
88
time_shift = 0. # number of days in the future from which to evaluate the policies
99
)

lib/detox/main.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,11 @@ def _execute_policy(self, policy, is_test, comment):
103103
# possible use case: a tape site has had a water indicident, for example
104104
# Communication with database is needed because we do not have all (tape) replicas in memory
105105
if len(detox_config.main.exclude_if_on) > 0:
106-
excluded_replicas = []
107106
for replica in all_replicas:
108107
ds_name = replica.dataset.name
109108
for sitename in detox_config.main.exclude_if_on:
110109
if self.inventory_manager.store.check_if_on(ds_name,sitename):
111-
excluded_replicas.append(replica)
112-
for excluded_replica in excluded_replicas:
113-
all_replicas.remove(excluded_replica)
110+
replica.dataset.demand['on_protected_site'] = True
114111

115112
logger.info('Saving site and dataset states.')
116113

lib/detox/variables.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,16 @@ def _get(self, dataset):
104104
except KeyError:
105105
return 0.
106106

107+
class DatasetOnProtectedSite(DatasetAttr):
108+
def __init__(self):
109+
DatasetAttr.__init__(self, Attr.BOOL_TYPE)
110+
111+
def _get(self, dataset):
112+
try:
113+
return dataset.demand['on_protected_site']
114+
except KeyError:
115+
return False
116+
107117
class ReplicaSize(DatasetReplicaAttr):
108118
def __init__(self):
109119
DatasetReplicaAttr.__init__(self, Attr.NUMERIC_TYPE)
@@ -272,6 +282,7 @@ def _get(self, site):
272282
'dataset.usage_rank': DatasetUsageRank(),
273283
'dataset.demand_rank': DatasetDemandRank(),
274284
'dataset.release': DatasetRelease(),
285+
'dataset.on_protected_site': DatasetOnProtectedSite(),
275286
'replica.is_last_transfer_source': ReplicaIsLastSource(),
276287
'replica.size': ReplicaSize(),
277288
'replica.incomplete': ReplicaIncomplete(),

0 commit comments

Comments
 (0)