diff options
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/jobs/CheckAndUpdateJob.java')
-rw-r--r-- | catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/jobs/CheckAndUpdateJob.java | 174 |
1 files changed, 86 insertions, 88 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/jobs/CheckAndUpdateJob.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/jobs/CheckAndUpdateJob.java index ff1c21c7bd..daf14b0b79 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/jobs/CheckAndUpdateJob.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/jobs/CheckAndUpdateJob.java @@ -20,8 +20,7 @@ package org.openecomp.sdc.be.model.cache.jobs; -import java.util.function.Function; - +import fj.data.Either; import org.apache.commons.lang3.tuple.ImmutablePair; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; @@ -29,103 +28,102 @@ import org.openecomp.sdc.be.model.Component; import org.openecomp.sdc.be.model.cache.DaoInfo; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; import org.openecomp.sdc.be.resources.data.ComponentMetadataData; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.openecomp.sdc.common.log.wrappers.Logger; -import fj.data.Either; +import java.util.function.Function; /** * Created by mlando on 9/7/2016. */ public class CheckAndUpdateJob extends Job { - private static Logger log = LoggerFactory.getLogger(CheckAndUpdateJob.class.getName()); + private static final Logger log = Logger.getLogger(CheckAndUpdateJob.class.getName()); - public CheckAndUpdateJob(DaoInfo daoInfo, String componentId, NodeTypeEnum nodeTypeEnum, long timestamp) { - super(daoInfo, componentId, nodeTypeEnum, timestamp); - } + public CheckAndUpdateJob(DaoInfo daoInfo, String componentId, NodeTypeEnum nodeTypeEnum, long timestamp) { + super(daoInfo, componentId, nodeTypeEnum, timestamp); + } - @Override - public Object doWork() { - log.trace("starting work on job."); - log.trace("update cache for componentId:{} of nodeTypeEnum:{} with timestamp:{}.", componentId, nodeTypeEnum, - timestamp); + @Override + public Object doWork() { + log.trace("starting work on job."); + log.trace("update cache for componentId:{} of nodeTypeEnum:{} with timestamp:{}.", componentId, nodeTypeEnum, + timestamp); - try { + try { - // get from cache - Either<ImmutablePair<Component, Long>, ActionStatus> cacheResult = daoInfo.getComponentCache() - .getComponentAndTime(componentId, Function.identity()); - // if error while getting from cache abort and update - if (cacheResult.isRight()) { - // genral error - if (!ActionStatus.RESOURCE_NOT_FOUND.equals(cacheResult.right().value()) - && !ActionStatus.INVALID_CONTENT.equals(cacheResult.right().value())) { - log.debug("failed to get component:{} from cache error:{}", componentId, - cacheResult.right().value()); - return false; - } - // component not in cache put there - else { - return updateCache(componentId, nodeTypeEnum, timestamp); - } - } - ImmutablePair<Component, Long> recored = cacheResult.left().value(); - // the cache has allready been updated exit - if (this.timestamp < recored.getRight()) { - log.debug("job timestemp:{} is smaller then the cache timestamp:{} no update is needed.", - this.timestamp, recored.getRight()); - return false; - } - return updateCache(componentId, nodeTypeEnum, timestamp); + // get from cache + Either<ImmutablePair<Component, Long>, ActionStatus> cacheResult = daoInfo.getComponentCache() + .getComponentAndTime(componentId, Function.identity()); + // if error while getting from cache abort and update + if (cacheResult.isRight()) { + // genral error + if (!ActionStatus.RESOURCE_NOT_FOUND.equals(cacheResult.right().value()) + && !ActionStatus.INVALID_CONTENT.equals(cacheResult.right().value())) { + log.debug("failed to get component:{} from cache error:{}", componentId, + cacheResult.right().value()); + return false; + } + // component not in cache put there + else { + return updateCache(componentId, nodeTypeEnum, timestamp); + } + } + ImmutablePair<Component, Long> recored = cacheResult.left().value(); + // the cache has allready been updated exit + if (this.timestamp < recored.getRight()) { + log.debug("job timestemp:{} is smaller then the cache timestamp:{} no update is needed.", + this.timestamp, recored.getRight()); + return false; + } + return updateCache(componentId, nodeTypeEnum, timestamp); - } catch (Exception e) { - log.debug("an exception was encountered during CheckAndUpdateJob", e); - } finally { - daoInfo.getToscaOperationFacade().commit(); - } - return false; - } + } catch (Exception e) { + log.debug("an exception was encountered during CheckAndUpdateJob", e); + } finally { + daoInfo.getToscaOperationFacade().commit(); + } + return false; + } - /** - * @param componentId - * @param nodeTypeEnum - * @return - */ - private boolean updateCache(String componentId, NodeTypeEnum nodeTypeEnum, Long timestamp) { - // get component from cache - Either<ComponentMetadataData, StorageOperationStatus> metaDataRes = getComponentMetaData(componentId, - nodeTypeEnum); - if (metaDataRes.isRight()) { - return false; - } - ComponentMetadataData metaData = metaDataRes.left().value(); - // the job time is older then the one on graph nothing to do there is a - // job that will handle this. - Long graphTimestamp = metaData.getMetadataDataDefinition().getLastUpdateDate(); - if (timestamp < graphTimestamp) { - log.debug( - "the job timestamp:{} is smaller then the graph timestamp:{}. exiting because another job will update the cache.", - timestamp, graphTimestamp); - return false; - } else { - // update cache - // get component from grath - Either<Component, StorageOperationStatus> componentRes = daoInfo.getToscaOperationFacade().getToscaElement(componentId); - if (componentRes.isRight()) { - log.debug("failed to get full component:{} from graph status:{}", componentId, - componentRes.right().value()); - return false; - } - Component component = componentRes.left().value(); - // store in cache - if (!this.daoInfo.getComponentCache().setComponent(component, nodeTypeEnum)) { - log.debug("failed to store componentId:{} nodeTypeEnum:", componentId, nodeTypeEnum); - return false; - } - } - log.debug("cache successfully updated for componentId:{} nodeTypeEnum:{} timestemp:{}.", componentId, - nodeTypeEnum, timestamp); - return true; - } + /** + * @param componentId + * @param nodeTypeEnum + * @return + */ + private boolean updateCache(String componentId, NodeTypeEnum nodeTypeEnum, Long timestamp) { + // get component from cache + Either<ComponentMetadataData, StorageOperationStatus> metaDataRes = getComponentMetaData(componentId, + nodeTypeEnum); + if (metaDataRes.isRight()) { + return false; + } + ComponentMetadataData metaData = metaDataRes.left().value(); + // the job time is older then the one on graph nothing to do there is a + // job that will handle this. + Long graphTimestamp = metaData.getMetadataDataDefinition().getLastUpdateDate(); + if (timestamp < graphTimestamp) { + log.debug( + "the job timestamp:{} is smaller then the graph timestamp:{}. exiting because another job will update the cache.", + timestamp, graphTimestamp); + return false; + } else { + // update cache + // get component from grath + Either<Component, StorageOperationStatus> componentRes = daoInfo.getToscaOperationFacade().getToscaElement(componentId); + if (componentRes.isRight()) { + log.debug("failed to get full component:{} from graph status:{}", componentId, + componentRes.right().value()); + return false; + } + Component component = componentRes.left().value(); + // store in cache + if (!this.daoInfo.getComponentCache().setComponent(component, nodeTypeEnum)) { + log.debug("failed to store componentId:{} nodeTypeEnum:", componentId, nodeTypeEnum); + return false; + } + } + log.debug("cache successfully updated for componentId:{} nodeTypeEnum:{} timestemp:{}.", componentId, + nodeTypeEnum, timestamp); + return true; + } } |