diff --git a/common/python/nomadcore/caching_backend.py b/common/python/nomadcore/caching_backend.py index acf7f94c3bb5adbf47cdbe12b460c9f5ddede884..4f29cae9e9025ded41fb9fea647eee00596ac9fe 100644 --- a/common/python/nomadcore/caching_backend.py +++ b/common/python/nomadcore/caching_backend.py @@ -149,7 +149,7 @@ class CachingSection(object): class CachingSectionManager(object): - def __init__(self, metaInfo, parentSectionNames, lastSectionGIndex = -1, openSections = {}, onClose = [], onOpen = [], storeInSuper = False, forwardOpenClose = True): + def __init__(self, metaInfo, parentSectionNames, lastSectionGIndex = -1, openSections = {}, onClose = [], onOpen = [], storeInSuper = False, forwardOpenClose = True, preOpened = False): self.metaInfo = metaInfo self.parentSectionNames = parentSectionNames self.lastSectionGIndex = lastSectionGIndex @@ -158,6 +158,7 @@ class CachingSectionManager(object): self.onOpen = list(onOpen) self.storeInSuper = storeInSuper self.forwardOpenClose = forwardOpenClose + self.preOpened = preOpened def setSectionInfo(self, gIndex, references): self.openSections[gIndex].references = [reference[x] for x in self.parentSectionNames] @@ -281,6 +282,7 @@ class ActiveBackend(object): parentSectionNames = parentS, storeInSuper = (cachingLevel == CachingLevel.ForwardAndCache or cachingLevel == CachingLevel.Cache or cachingLevel == CachingLevel.PreOpenedCache), forwardOpenClose = (cachingLevel == CachingLevel.Forward or cachingLevel == CachingLevel.ForwardAndCache), + preOpened = (cachingLevel == CachingLevel.PreOpenedCache or cachingLevel == CachingLevel.PreOpenedIgnore), onClose = onClose.get(ik.name, []), onOpen = onOpen.get(ik.name, [])) dataManagers = {} @@ -294,7 +296,7 @@ class ActiveBackend(object): (ik.name, superSectionNames)) sectionManager = sectionManagers[superSectionNames[0]] dataManagers[ik.name] = CachingDataManager(ik, sectionManager, - CachingLevel.restrict(cachingLevelForMetaName.get(ik.name, defaultDataCachingLevel), CachingLevel.Forward if sectionManager.forwardOpenClose else CachingLevel.Ignore)) + CachingLevel.restrict(cachingLevelForMetaName.get(ik.name, defaultDataCachingLevel), CachingLevel.Forward if sectionManager.forwardOpenClose or sectionManager.preOpened else CachingLevel.Ignore)) return ActiveBackend(metaInfoEnv, sectionManagers, dataManagers, superBackend, propagateStartFinishParsing, default_units, metainfo_units) def appendOnClose(self, sectionName, onClose): @@ -402,7 +404,7 @@ class ActiveBackend(object): """ dataManager = self.dataManagers[metaName] cachingLevel = dataManager.cachingLevel - if cachingLevel == CachingLevel.Forward or cachingLevel == CachingLevel.ForwardAndCache or cachingLevel == CachingLevel.PreOpenedCache: + if cachingLevel == CachingLevel.Forward or cachingLevel == CachingLevel.ForwardAndCache: if self.superBackend: self.superBackend.addValue(metaName, value, gIndex) if cachingLevel == CachingLevel.ForwardAndCache or cachingLevel == CachingLevel.Cache or cachingLevel == CachingLevel.PreOpenedCache: @@ -418,11 +420,11 @@ class ActiveBackend(object): dataManager = self.dataManagers[metaName] cachingLevel = dataManager.cachingLevel - if cachingLevel == CachingLevel.Forward or cachingLevel == CachingLevel.ForwardAndCache or cachingLevel == CachingLevel.PreOpenedCache: + if cachingLevel == CachingLevel.Forward or cachingLevel == CachingLevel.ForwardAndCache: if self.superBackend: self.superBackend.addRealValue(metaName, value, gIndex) - if cachingLevel == CachingLevel.ForwardAndCache or cachingLevel == CachingLevel.Cache: - dataManager.superSectionManager.addValue(dataManager.metaInfo, value, gIndex) + if cachingLevel == CachingLevel.ForwardAndCache or cachingLevel == CachingLevel.Cache or cachingLevel == CachingLevel.PreOpenedCache: + dataManager.superSectionManager.addRealValue(dataManager.metaInfo, value, gIndex) def addArray(self, metaName, shape, gIndex = -1): """adds a new array value of the given size corresponding to metaName @@ -431,7 +433,7 @@ class ActiveBackend(object): the array is unitialized""" dataManager = self.dataManagers[metaName] cachingLevel = dataManager.cachingLevel - if cachingLevel == CachingLevel.Forward or cachingLevel == CachingLevel.ForwardAndCache or cachingLevel == CachingLevel.PreOpenedCache: + if cachingLevel == CachingLevel.Forward or cachingLevel == CachingLevel.ForwardAndCache: if self.superBackend: self.superBackend.addArray(metaName, shape, gIndex) if cachingLevel == CachingLevel.ForwardAndCache or cachingLevel == CachingLevel.Cache or cachingLevel == CachingLevel.PreOpenedCache: @@ -460,7 +462,7 @@ class ActiveBackend(object): dataManager = self.dataManagers[metaName] cachingLevel = dataManager.cachingLevel - if cachingLevel == CachingLevel.Forward or cachingLevel == CachingLevel.ForwardAndCache or cachingLevel == CachingLevel.PreOpenedCache: + if cachingLevel == CachingLevel.Forward or cachingLevel == CachingLevel.ForwardAndCache: if self.superBackend: self.superBackend.addArrayValues(metaName, values, gIndex) if cachingLevel == CachingLevel.ForwardAndCache or cachingLevel == CachingLevel.Cache or cachingLevel == CachingLevel.PreOpenedCache: