Skip to content

Conversation

@dcapwell
Copy link
Contributor

No description provided.

void contact(Set<Node.Id> nodes, Topologies topologies, Callback<GetMaxConflictOk> callback)
{
node.send(nodes, to -> new GetMaxConflict(to, topologies, route, keysOrRanges, executionEpoch));
node.send(nodes, to -> new GetMaxConflict(to, topologies, route, keysOrRanges, executionEpoch), callback);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the fact this happened implies that burn test doesn't hit this code path, so should be something we think about adding... C* hits this all the time as we don't have a max applied, so we would block forever

// TODO (expected): implement abort
}

public static class FetchRequest extends WaitUntilAppliedAndReadData
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there was a TODO to merge these 2 so I went ahead and did that

public static class FetchRequest extends ReadData
{
private static final ExecuteOn EXECUTE_ON = new ExecuteOn(Applied, Applied);
public final PartialTxn read;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

honestly I kept this PartialTxn because it didn't impact anything and I needed to get green before really thinking about it... We only actually care about accord.api.Read so would be a trivial refactor to switch to that


TopologyMismatch tm = TopologyMismatch.checkForMismatch(snapshot.get(maxEpoch).global(), select);
EpochState maxState = snapshot.get(maxEpoch);
Invariants.checkState(maxState != null, "Unable to find epoch %d; known epochs are %d -> %d", maxEpoch, snapshot.minEpoch(), snapshot.currentEpoch);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in C* we bootstrap with epoch=9 but there are pending txn in epoch=8... this means that we are failing to handle those txn and SimpleProgressLog starts spamming us... I tried to look at how to add historic epochs but it was getting a bit annoying and didn't actually impact the bootstrap tests... so figured I could delay that problem to another patch

{
default: throw new AssertionError();
case Key:
if (!keys.contains((Key)key))
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the main reason bootstrap regression failed to be detected in burn test was that it switched to using the sync point's emptyTxn, which has 0 keys... since ListRead supports ranges it was able to return the data requested from bootstrap even though its inputs were outside of the range of keys... This check helps protect that from happening again.

@belliottsmith belliottsmith force-pushed the trunk branch 2 times, most recently from 6a9482b to 4a8566a Compare October 3, 2024 11:27
@belliottsmith belliottsmith force-pushed the trunk branch 9 times, most recently from c3a1d8f to efc6a38 Compare October 14, 2024 14:27
@belliottsmith belliottsmith force-pushed the trunk branch 3 times, most recently from 289d5ea to 064735b Compare November 11, 2024 11:57
@belliottsmith belliottsmith force-pushed the trunk branch 2 times, most recently from 2edc7fb to a271897 Compare November 22, 2024 12:45
@belliottsmith belliottsmith force-pushed the trunk branch 2 times, most recently from 50d6ef9 to bd0761c Compare December 4, 2024 16:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant