Skip to content

Commit ac56b6f

Browse files
committed
Small but important protocol changes
1 parent e43d145 commit ac56b6f

File tree

8 files changed

+402
-9
lines changed

8 files changed

+402
-9
lines changed
File renamed without changes.

saved-logs/saved-runs-v3/byzzfuzz-0-2.txt

+393
Large diffs are not rendered by default.

simulator/src/main/java/byzzbench/simulator/protocols/hbft/HbftJavaReplica.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public class HbftJavaReplica<O extends Serializable, R extends Serializable> ext
8989

9090
// The received requests stored as <timestamp, clientId>
9191
@Getter
92-
private final SortedMap<Long, String> receivedRequests = new TreeMap<>();
92+
private final SortedMap<ReplicaRequestKey, String> receivedRequests = new TreeMap<>();
9393

9494
public HbftJavaReplica(String replicaId,
9595
SortedSet<String> nodeIds,
@@ -174,12 +174,11 @@ private void recvRequest(RequestMessage request, boolean wasRequestBuffered) {
174174
}
175175
}
176176

177-
// TODO: Maybe timestamp needs to be double checked
178-
// FIXME: This is not good requests can be discarded
179-
if (this.receivedRequests.get(request.getTimestamp()) != null) {
177+
// TODO: Should double check if this is correct
178+
if (this.receivedRequests.get(key) != null) {
180179
return;
181180
}
182-
this.receivedRequests.put(request.getTimestamp(), request.getClientId());
181+
this.receivedRequests.put(key, request.getClientId());
183182

184183

185184
String primaryId = this.getPrimaryId();

simulator/src/main/java/byzzbench/simulator/protocols/hbft/MessageLog.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ public NewViewMessage produceNewView(long newViewNumber, String replicaId, int t
437437
allRequests.add(requests);
438438

439439
for (long seqNum : requests.keySet()) {
440-
ClientRequestKey key = new ClientRequestKey(seqNum, requests.get(seqNum).getClientId());
440+
ClientRequestKey key = new ClientRequestKey(seqNum, requests.get(seqNum).getOperation().toString());
441441
requestMap.put(key, requestMap.getOrDefault(key, 0) + 1);
442442
}
443443

@@ -501,7 +501,7 @@ public NewViewMessage produceNewView(long newViewNumber, String replicaId, int t
501501
*/
502502
for (SortedMap<Long, RequestMessage> requests : allRequests) {
503503
for (Map.Entry<Long, RequestMessage> request : requests.entrySet()) {
504-
ClientRequestKey key = new ClientRequestKey(request.getKey(), request.getValue().getClientId());
504+
ClientRequestKey key = new ClientRequestKey(request.getKey(), request.getValue().getOperation().toString());
505505
//System.out.println(selectedHistoryM + " " + request + " " + (requestMap.get(key) >= tolerance + 1));
506506
if ((selectedHistoryM == null || request.getKey() > selectedHistoryM.getGreatestSeqNumber()) && requestMap.get(key) >= tolerance + 1) {
507507
sortedRequests.addEntry(request.getKey(), request.getValue());
@@ -654,20 +654,21 @@ public boolean acceptNewView(NewViewMessage newView, long tolerance, ScheduleLog
654654
allRequests.add(requestsPerReplica);
655655

656656
for (long seqNum : requestsPerReplica.keySet()) {
657-
ClientRequestKey key = new ClientRequestKey(seqNum, requestsPerReplica.get(seqNum).getClientId());
657+
ClientRequestKey key = new ClientRequestKey(seqNum, requestsPerReplica.get(seqNum).getOperation().toString());
658658
requestMap.put(key, requestMap.getOrDefault(key, 0) + 1);
659659
}
660660
}
661661

662662
SpeculativeHistory sortedRequests = new SpeculativeHistory();
663+
// System.out.println(requestMap + " " + allRequests);
663664

664665
/*
665666
* Select every request in R if f+1 replicas include it
666667
* And sequence number is greater than the largest in selectedHistoryM
667668
*/
668669
for (SortedMap<Long, RequestMessage> requests : allRequests) {
669670
for (Map.Entry<Long, RequestMessage> request : requests.entrySet()) {
670-
ClientRequestKey key = new ClientRequestKey(request.getKey(), request.getValue().getClientId());
671+
ClientRequestKey key = new ClientRequestKey(request.getKey(), request.getValue().getOperation().toString());
671672
if ((checkpoint == null || request.getKey() > checkpoint.getSequenceNumber()) && requestMap.get(key) >= tolerance + 1) {
672673
sortedRequests.addEntry(request.getKey(), request.getValue());
673674
} else if (checkpoint == null || request.getKey() > checkpoint.getSequenceNumber()) {

0 commit comments

Comments
 (0)