},
/**
* Simple commit protocol. The transaction should be committed to the global history. The receiving backend
- * it the only entity which needs to persist its effects, hence a simple request/reply protocol is sufficient.
+ * is the only entity which needs to persist its effects, hence a simple request/reply protocol is sufficient.
*/
SIMPLE {
@Override
byte byteValue() {
return 3;
}
-
+ },
+ /**
+ * Transaction is ready. This is not a really a persistence protocol, but an indication that frontend has
+ * completed modifications on the transaction and considers it ready, without deciding the actual commit protocol.
+ */
+ READY {
+ @Override
+ byte byteValue() {
+ return 4;
+ }
};
@Override
out.writeByte(byteValue());
}
- abstract byte byteValue();
-
public static PersistenceProtocol readFrom(final DataInput in) throws IOException {
return valueOf(in.readByte());
}
+ abstract byte byteValue();
+
static int byteValue(final PersistenceProtocol finish) {
return finish == null ? 0 : finish.byteValue();
}
- static PersistenceProtocol valueOf(final byte b) {
- switch (b) {
+ static PersistenceProtocol valueOf(final byte value) {
+ switch (value) {
case 0:
return null;
case 1:
return SIMPLE;
case 3:
return THREE_PHASE;
+ case 4:
+ return READY;
default:
- throw new IllegalArgumentException("Unhandled byte value " + b);
+ throw new IllegalArgumentException("Unhandled byte value " + value);
}
}
}