import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier;
import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
import org.opendaylight.controller.cluster.datastore.persisted.FrontendHistoryMetadata;
+import org.opendaylight.controller.cluster.datastore.utils.ImmutableUnsignedLongSet;
import org.opendaylight.controller.cluster.datastore.utils.MutableUnsignedLongSet;
-import org.opendaylight.yangtools.concepts.Builder;
+import org.opendaylight.controller.cluster.datastore.utils.UnsignedLongBitmap;
import org.opendaylight.yangtools.concepts.Identifiable;
-final class FrontendHistoryMetadataBuilder implements Builder<FrontendHistoryMetadata>,
- Identifiable<LocalHistoryIdentifier> {
-
+final class FrontendHistoryMetadataBuilder implements Identifiable<LocalHistoryIdentifier> {
private final @NonNull Map<UnsignedLong, Boolean> closedTransactions;
private final @NonNull MutableUnsignedLongSet purgedTransactions;
private final @NonNull LocalHistoryIdentifier identifier;
FrontendHistoryMetadataBuilder(final ClientIdentifier clientId, final FrontendHistoryMetadata meta) {
identifier = new LocalHistoryIdentifier(clientId, meta.getHistoryId(), meta.getCookie());
- closedTransactions = new HashMap<>(meta.getClosedTransactions());
+ closedTransactions = meta.getClosedTransactions().mutableCopy();
purgedTransactions = meta.getPurgedTransactions().mutableCopy();
closed = meta.isClosed();
}
return identifier;
}
- @Override
public FrontendHistoryMetadata build() {
return new FrontendHistoryMetadata(identifier.getHistoryId(), identifier.getCookie(), closed,
- closedTransactions, purgedTransactions.immutableCopy());
+ UnsignedLongBitmap.copyOf(closedTransactions), purgedTransactions.immutableCopy());
}
void onHistoryClosed() {
purgedTransactions.add(txidBits);
}
+ void onTransactionsSkipped(final ImmutableUnsignedLongSet txIds) {
+ purgedTransactions.addAll(txIds);
+ }
+
/**
* Transform frontend metadata for a particular client history into its {@link LocalFrontendHistory} counterpart.
*