private Set<Integer> missingParts = null;
private List<Integer> partsPendingSend = null;
private boolean isComplete = false;
+ private boolean hasLastPart = false;
private Set<KeyValue> keyValueGuardSet = null;
private Set<KeyValue> keyValueUpdateSet = null;
private boolean isDead = false;
private TransactionStatus transactionStatus = null;
+ private boolean hadServerFailure = false;
+
public Transaction() {
parts = new HashMap<Integer, TransactionPart>();
keyValueGuardSet = new HashSet<KeyValue>();
previoslySeenPart.setDead();
} else if (newPart.isLastPart()) {
missingParts = new HashSet<Integer>();
+ hasLastPart = true;
for (int i = 0; i < newPart.getPartNumber(); i++) {
if (parts.get(i) == null) {
}
}
- if (!isComplete) {
+ if (!isComplete && hasLastPart) {
// We have seen this part so remove it from the set of missing parts
missingParts.remove(newPart.getPartNumber());
return part;
}
+
+ public void setServerFailure() {
+ hadServerFailure = true;
+ }
+
+ public boolean getServerFailure() {
+ return hadServerFailure;
+ }
+
+
+ public void resetServerFailure() {
+ hadServerFailure = false;
+ }
+
+
public void setTransactionStatus(TransactionStatus _transactionStatus) {
transactionStatus = _transactionStatus;
}
if (kvGuard.getValue() != null) {
if ((kv == null) || (!kvGuard.getValue().equals(kv.getValue()))) {
+
+
+ if (kv != null) {
+ System.out.println(kvGuard.getValue() + " " + kv.getValue());
+ } else {
+ System.out.println(kvGuard.getValue() + " " + kv);
+ }
+
return false;
}
} else {