diff --git a/src/python/WMComponent/RucioInjector/RucioInjectorPoller.py b/src/python/WMComponent/RucioInjector/RucioInjectorPoller.py index 0f917356af..f4c053f52a 100644 --- a/src/python/WMComponent/RucioInjector/RucioInjectorPoller.py +++ b/src/python/WMComponent/RucioInjector/RucioInjectorPoller.py @@ -317,6 +317,10 @@ def insertReplicas(self, uninjectedData): rseName = "%s_Test" % location if self.testRSEs else location for container in uninjectedData[location]: for block in uninjectedData[location][container]: + if block not in self.blocksCache: + logging.warning("Skipping %d file injection for block that failed to be added into Rucio: %s", + len(uninjectedData[location][container][block]['files']), block) + continue injectData = [] listLfns = [] for fileInfo in uninjectedData[location][container][block]['files']: diff --git a/src/python/WMCore/Services/Rucio/Rucio.py b/src/python/WMCore/Services/Rucio/Rucio.py index 7e412155a6..6eef180626 100644 --- a/src/python/WMCore/Services/Rucio/Rucio.py +++ b/src/python/WMCore/Services/Rucio/Rucio.py @@ -414,8 +414,17 @@ def createReplicas(self, rse, files, block, scope='cms', ignoreAvailability=True try: # add_replicas(rse, files, ignore_availability=True) response = self.cli.add_replicas(rse, files, ignoreAvailability) - except Exception as ex: - self.logger.error("Failed to add replicas for: %s and block: %s. Error: %s", files, block, str(ex)) + except DataIdentifierAlreadyExists as exc: + if len(files) == 1: + self.logger.debug("File replica already exists in Rucio: %s", files[0]['name']) + response = True + else: + # FIXME: I think we would have to iterate over every single file and add then one by one + errorMsg = "Failed to insert replicas for: {} and block: {}".format(files, block) + errorMsg += " Some/all DIDs already exist in Rucio. Error: {}".format(str(exc)) + self.logger.error(errorMsg) + except Exception as exc: + self.logger.error("Failed to add replicas for: %s and block: %s. Error: %s", files, block, str(exc)) if response: files = [item['name'] for item in files]