X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fidentifiers%2FTransactionIdentifier.java;h=1e8620359a674357d3a9c5eaceb683dc877927d3;hp=6742b5c7db259998da37767facea6482c06725dd;hb=93e6f3bfc003d4ce2d968761dff963615a0b799d;hpb=4b9316643d0001c8d36f6bc1ffab79f946f968e8 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/identifiers/TransactionIdentifier.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/identifiers/TransactionIdentifier.java index 6742b5c7db..1e8620359a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/identifiers/TransactionIdentifier.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/identifiers/TransactionIdentifier.java @@ -9,30 +9,40 @@ package org.opendaylight.controller.cluster.datastore.identifiers; import com.google.common.base.Preconditions; -import com.google.common.base.Strings; +import org.opendaylight.controller.cluster.access.concepts.MemberName; public class TransactionIdentifier { - private static final String TX_SEPARATOR = "-txn-"; + protected static final String TX_SEPARATOR = "-txn-"; - private final String memberName; + private final MemberName memberName; private final long counter; + private final long timestamp; private String stringRepresentation; - public TransactionIdentifier(String memberName, long counter) { + public TransactionIdentifier(MemberName memberName, long counter) { this.memberName = Preconditions.checkNotNull(memberName, "memberName should not be null"); this.counter = counter; + this.timestamp = System.currentTimeMillis(); } public String getChainId() { return ""; } - public static TransactionIdentifier create(String memberName, long counter, String chainId) { - if (Strings.isNullOrEmpty(chainId)) { - return new TransactionIdentifier(memberName, counter); - } else { - return new ChainedTransactionIdentifier(memberName, counter, chainId); - } + protected MemberName getMemberName() { + return memberName; + } + + protected long getCounter() { + return counter; + } + + protected long getTimestamp() { + return timestamp; + } + + public static TransactionIdentifier create(MemberName memberName, long counter) { + return new TransactionIdentifier(memberName, counter); } @Override @@ -49,6 +59,11 @@ public class TransactionIdentifier { if (counter != that.counter) { return false; } + + if (timestamp != that.timestamp) { + return false; + } + if (!memberName.equals(that.memberName)) { return false; } @@ -60,16 +75,19 @@ public class TransactionIdentifier { public int hashCode() { int result = memberName.hashCode(); result = 31 * result + (int) (counter ^ (counter >>> 32)); + result = 31 * result + (int)(timestamp ^ (timestamp >>> 32)); return result; } + @Override public String toString() { if(stringRepresentation == null) { - stringRepresentation = new StringBuilder(memberName.length() + TX_SEPARATOR.length() + 10). - append(memberName).append(TX_SEPARATOR).append(counter).toString(); + stringRepresentation = new StringBuilder(memberName.getName().length() + TX_SEPARATOR.length() + 21). + append(memberName.getName()).append(TX_SEPARATOR).append(counter).append('-').append(timestamp).toString(); } return stringRepresentation; } + }