From 5775a340766e8e5b8f13034c8b3decfcee3d8861 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 19 Jul 2019 15:52:48 +0200 Subject: [PATCH] Speed up time computation When we are adding or refreshing a mapping, we can first access the existing timestamp and only fallback to System.currentTimeMillis() if it's not present. This also simplifies things, as we end up reading the timestamp (a synchronized operation) only once. Change-Id: I39bfe212e7c746e66dc144ad1e036a2b02544c6c Signed-off-by: Robert Varga --- .../TimeBucketMappingTimeoutService.java | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/timebucket/implementation/TimeBucketMappingTimeoutService.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/timebucket/implementation/TimeBucketMappingTimeoutService.java index fbd9e4638..27c420dd3 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/timebucket/implementation/TimeBucketMappingTimeoutService.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/timebucket/implementation/TimeBucketMappingTimeoutService.java @@ -8,20 +8,17 @@ package org.opendaylight.lispflowmapping.implementation.timebucket.implementation; +import java.util.Date; import org.opendaylight.lispflowmapping.implementation.MappingSystem; import org.opendaylight.lispflowmapping.implementation.timebucket.containers.TimeBucketWheel; import org.opendaylight.lispflowmapping.implementation.timebucket.interfaces.ISouthBoundMappingTimeoutService; import org.opendaylight.lispflowmapping.lisp.type.MappingData; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * Created by Shakib Ahmed on 12/1/16. */ public class TimeBucketMappingTimeoutService implements ISouthBoundMappingTimeoutService { - private static final Logger LOG = LoggerFactory.getLogger(TimeBucketWheel.class); - private final TimeBucketWheel timeBucketWheel; public TimeBucketMappingTimeoutService(int numberOfBucket, long mappingRecordValidityInMillis, @@ -31,20 +28,12 @@ public class TimeBucketMappingTimeoutService implements ISouthBoundMappingTimeou @Override public int addMapping(Eid key, MappingData mappingData) { - long timestamp = System.currentTimeMillis(); - if (mappingData.getTimestamp() != null) { - timestamp = mappingData.getTimestamp().getTime(); - } - return timeBucketWheel.add(key, mappingData, timestamp); + return timeBucketWheel.add(key, mappingData, getTimestamp(mappingData)); } @Override public int refreshMapping(Eid key, MappingData newMappingData, int presentBucketId) { - long timestamp = System.currentTimeMillis(); - if (newMappingData.getTimestamp() != null) { - timestamp = newMappingData.getTimestamp().getTime(); - } - return timeBucketWheel.refreshMappping(key, newMappingData, timestamp, presentBucketId); + return timeBucketWheel.refreshMappping(key, newMappingData, getTimestamp(newMappingData), presentBucketId); } @Override @@ -56,4 +45,9 @@ public class TimeBucketMappingTimeoutService implements ISouthBoundMappingTimeou public void removeExpiredMappings() { timeBucketWheel.clearExpiredMappingAndRotate(); } + + private static long getTimestamp(MappingData mappingData) { + final Date stamp = mappingData.getTimestamp(); + return stamp != null ? stamp.getTime() : System.currentTimeMillis(); + } } -- 2.36.6