import java.io.DataInput;
import java.io.IOException;
import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Payload persisted when a transaction is aborted. It contains the transaction identifier.
private static final class Proxy extends AbstractProxy<TransactionIdentifier> {
private static final long serialVersionUID = 1L;
+ // checkstyle flags the public modifier as redundant which really doesn't make sense since it clearly isn't
+ // redundant. It is explicitly needed for Java serialization to be able to create instances via reflection.
+ @SuppressWarnings("checkstyle:RedundantModifier")
public Proxy() {
// For Externalizable
}
}
}
+ private static final Logger LOG = LoggerFactory.getLogger(AbortTransactionPayload.class);
private static final long serialVersionUID = 1L;
AbortTransactionPayload(final TransactionIdentifier transactionId, final byte[] serialized) {
super(transactionId, serialized);
}
- public static AbortTransactionPayload create(final TransactionIdentifier transactionId) throws IOException {
- final ByteArrayDataOutput out = ByteStreams.newDataOutput();
- transactionId.writeTo(out);
+ public static AbortTransactionPayload create(final TransactionIdentifier transactionId,
+ final int initialSerializedBufferCapacity) {
+ final ByteArrayDataOutput out = ByteStreams.newDataOutput(initialSerializedBufferCapacity);
+ try {
+ transactionId.writeTo(out);
+ } catch (IOException e) {
+ // This should never happen
+ LOG.error("Failed to serialize {}", transactionId, e);
+ throw new RuntimeException("Failed to serialized " + transactionId, e);
+ }
return new AbortTransactionPayload(transactionId, out.toByteArray());
}