From: Moiz Raja Date: Tue, 17 Feb 2015 17:46:03 +0000 (-0800) Subject: Minor enhancements to dummy datastore X-Git-Tag: release/lithium~547^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=81af8a599309f318f6564a5b29d390bf12d6c39e Minor enhancements to dummy datastore - Log Duplicate AppendEntries - Enhance AppendEntries logging - Make logging configurable - Handle append entries with multiple entries - Do not delay append entry reply for heartbeats, do so only for messages with entries Change-Id: Ife856bb469e81c42d22ff4a6f13637ee2cf00cce Signed-off-by: Moiz Raja --- diff --git a/opendaylight/md-sal/sal-dummy-distributed-datastore/src/main/java/org/opendaylight/controller/dummy/datastore/DummyShard.java b/opendaylight/md-sal/sal-dummy-distributed-datastore/src/main/java/org/opendaylight/controller/dummy/datastore/DummyShard.java index 34b41ccfca..3dffdfce57 100644 --- a/opendaylight/md-sal/sal-dummy-distributed-datastore/src/main/java/org/opendaylight/controller/dummy/datastore/DummyShard.java +++ b/opendaylight/md-sal/sal-dummy-distributed-datastore/src/main/java/org/opendaylight/controller/dummy/datastore/DummyShard.java @@ -11,6 +11,7 @@ package org.opendaylight.controller.dummy.datastore; import akka.actor.Props; import akka.actor.UntypedActor; import akka.japi.Creator; +import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry; import org.opendaylight.controller.cluster.raft.messages.AppendEntries; import org.opendaylight.controller.cluster.raft.messages.AppendEntriesReply; import org.opendaylight.controller.cluster.raft.messages.InstallSnapshot; @@ -24,6 +25,8 @@ public class DummyShard extends UntypedActor{ private final Configuration configuration; private final String followerId; private final Logger LOG = LoggerFactory.getLogger(DummyShard.class); + private long lastMessageIndex = -1; + private long lastMessageSize = 0; public DummyShard(Configuration configuration, String followerId) { this.configuration = configuration; @@ -54,12 +57,25 @@ public class DummyShard extends UntypedActor{ } protected void handleAppendEntries(AppendEntries req) throws InterruptedException { - LOG.info("{} - Received AppendEntries message : leader term, index, size = {}, {}, {}", followerId, req.getTerm(),req.getLeaderCommit(), req.getEntries().size()); + + LOG.info("{} - Received AppendEntries message : leader term = {}, index = {}, prevLogIndex = {}, size = {}", + followerId, req.getTerm(),req.getLeaderCommit(), req.getPrevLogIndex(), req.getEntries().size()); + + if(lastMessageIndex == req.getLeaderCommit() && req.getEntries().size() > 0 && lastMessageSize > 0){ + LOG.error("{} - Duplicate message with leaderCommit = {} prevLogIndex = {} received", followerId, req.getLeaderCommit(), req.getPrevLogIndex()); + } + + lastMessageIndex = req.getLeaderCommit(); + lastMessageSize = req.getEntries().size(); + long lastIndex = req.getLeaderCommit(); - if (req.getEntries().size() > 0) - lastIndex = req.getEntries().get(0).getIndex(); + if (req.getEntries().size() > 0) { + for(ReplicatedLogEntry entry : req.getEntries()) { + lastIndex = entry.getIndex(); + } + } - if (configuration.shouldCauseTrouble()) { + if (configuration.shouldCauseTrouble() && req.getEntries().size() > 0) { boolean ignore = false; if (configuration.shouldDropReplies()) { diff --git a/opendaylight/md-sal/sal-dummy-distributed-datastore/src/main/resources/simplelogger.properties b/opendaylight/md-sal/sal-dummy-distributed-datastore/src/main/resources/simplelogger.properties new file mode 100644 index 0000000000..067c048231 --- /dev/null +++ b/opendaylight/md-sal/sal-dummy-distributed-datastore/src/main/resources/simplelogger.properties @@ -0,0 +1,6 @@ +org.slf4j.simpleLogger.showDateTime=true +org.slf4j.simpleLogger.dateTimeFormat=hh:mm:ss,S a +org.slf4j.simpleLogger.logFile=System.out +org.slf4j.simpleLogger.showShortLogName=true +org.slf4j.simpleLogger.levelInBrackets=true +org.slf4j.simpleLogger.defaultLogLevel=info \ No newline at end of file